{"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-78ca10c78f82e6a5", "name": "Possibly dead Python function: cta", "shortDescription": {"text": "Possibly dead Python function: cta"}, "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-67456aaf7ac1b51c", "name": "Possibly dead Python function: extract_then_cta", "shortDescription": {"text": "Possibly dead Python function: extract_then_cta"}, "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-73cc49376a7ab2db", "name": "Possibly dead Python function: fetch_dm_shares", "shortDescription": {"text": "Possibly dead Python function: fetch_dm_shares"}, "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-16776a5186d15a49", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-a17749b1e6ff902a", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "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-ce1917f399708d7f", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-7133acb7e0712ad9", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "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-a5981643be53cb32", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-8b17db3317c3a719", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "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-3175a81a142f1e09", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-d5891fe8780235e1", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "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-0bb0dc42369a72bc", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-711b45efb2326fc1", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "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-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-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-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 49 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: license, ci. 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-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-13995a6064de7948", "name": "Legacy-named symbol `direct_v2` in scripts/spike_generic_xma.py:15", "shortDescription": {"text": "Legacy-named symbol `direct_v2` in scripts/spike_generic_xma.py: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-3b522d8857895535", "name": "Legacy-named symbol `direct_v2` in scripts/spike_dm_raw.py:14", "shortDescription": {"text": "Legacy-named symbol `direct_v2` in scripts/spike_dm_raw.py:14"}, "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-1c595d9f2f88fdcb", "name": "Legacy-named symbol `direct_v2` in backend/recall/services/engagement.py:56", "shortDescription": {"text": "Legacy-named symbol `direct_v2` in backend/recall/services/engagement.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-f568f9589c36a986", "name": "Legacy-named symbol `direct_v2` in backend/recall/instagram/dms.py:51", "shortDescription": {"text": "Legacy-named symbol `direct_v2` in backend/recall/instagram/dms.py:51"}, "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-2017287b8e4ab599", "name": "Legacy-named symbol `test_relink_moves_identity_and_keeps_single_copy` in backend/tests/test_dedupe.py:69", "shortDescription": {"text": "Legacy-named symbol `test_relink_moves_identity_and_keeps_single_copy` in backend/tests/test_dedupe.py:69"}, "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-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:\nbackend/recall/storage.py:put_file, backend/recall/storage.py:put_file, backend/recall/storage.py:put_file\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-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:\nbackend/recall/ai/gemini.py:classify, backend/recall/ai/gemini.py:classify\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-a1d2f34019385110", "name": "Unused endpoint: POST /event/{item_id}/add-to-calendar", "shortDescription": {"text": "Unused endpoint: POST /event/{item_id}/add-to-calendar"}, "fullDescription": {"text": "`backend/recall/api/routes_actions.py` declares `POST /event/{item_id}/add-to-calendar` 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-cd8dc4599ec52a08", "name": "Unused endpoint: GET /stats", "shortDescription": {"text": "Unused endpoint: GET /stats"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /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-c5c8d0cdab63c985", "name": "Unused endpoint: GET /poller/next", "shortDescription": {"text": "Unused endpoint: GET /poller/next"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /poller/next` 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-9d4d90b595d2c2de", "name": "Unused endpoint: GET /poller/status", "shortDescription": {"text": "Unused endpoint: GET /poller/status"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /poller/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-43d2645fca362955", "name": "Unused endpoint: POST /poller/resume", "shortDescription": {"text": "Unused endpoint: POST /poller/resume"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `POST /poller/resume` 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-86f61d7eaf7769f0", "name": "Unused endpoint: GET /engagement/config", "shortDescription": {"text": "Unused endpoint: GET /engagement/config"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /engagement/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-dd016d600d0e7444", "name": "Unused endpoint: PUT /engagement/config", "shortDescription": {"text": "Unused endpoint: PUT /engagement/config"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `PUT /engagement/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-1b2d4a6070660e0f", "name": "Unused endpoint: GET /engagement", "shortDescription": {"text": "Unused endpoint: GET /engagement"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /engagement` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f88bff6fd58393b9", "name": "Unused endpoint: GET /resources", "shortDescription": {"text": "Unused endpoint: GET /resources"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /resources` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0aba7f1883cb96f2", "name": "Unused endpoint: GET /admin/users", "shortDescription": {"text": "Unused endpoint: GET /admin/users"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /admin/users` 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-a8217845550973f8", "name": "Unused endpoint: GET /admin/bots", "shortDescription": {"text": "Unused endpoint: GET /admin/bots"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /admin/bots` 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-d6401fd949923b52", "name": "Unused endpoint: POST /admin/bots", "shortDescription": {"text": "Unused endpoint: POST /admin/bots"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `POST /admin/bots` 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-9e01b78d84842943", "name": "Unused endpoint: PATCH /admin/bots/{bot_id}", "shortDescription": {"text": "Unused endpoint: PATCH /admin/bots/{bot_id}"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `PATCH /admin/bots/{bot_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-543eba9aaa2d9675", "name": "Unused endpoint: DELETE /admin/bots/{bot_id}", "shortDescription": {"text": "Unused endpoint: DELETE /admin/bots/{bot_id}"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `DELETE /admin/bots/{bot_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd159bd05997c05c", "name": "Unused endpoint: GET /admin/stats", "shortDescription": {"text": "Unused endpoint: GET /admin/stats"}, "fullDescription": {"text": "`backend/recall/api/routes_admin.py` declares `GET /admin/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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b45b0cd7685f5149", "name": "Unused endpoint: GET /{item_id}", "shortDescription": {"text": "Unused endpoint: GET /{item_id}"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `GET /{item_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e9709385c3e4794", "name": "Unused endpoint: GET /{item_id}/media", "shortDescription": {"text": "Unused endpoint: GET /{item_id}/media"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `GET /{item_id}/media` 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-e3d8e54e2bc994e3", "name": "Unused endpoint: POST /{item_id}/recategorize", "shortDescription": {"text": "Unused endpoint: POST /{item_id}/recategorize"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `POST /{item_id}/recategorize` 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-fff69ef2616a9cfa", "name": "Unused endpoint: POST /{item_id}/retry", "shortDescription": {"text": "Unused endpoint: POST /{item_id}/retry"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `POST /{item_id}/retry` 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-53ef6ff67887838c", "name": "Unused endpoint: PATCH /{item_id}", "shortDescription": {"text": "Unused endpoint: PATCH /{item_id}"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `PATCH /{item_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d668fa96cc1c0e83", "name": "Unused endpoint: DELETE /{item_id}", "shortDescription": {"text": "Unused endpoint: DELETE /{item_id}"}, "fullDescription": {"text": "`backend/recall/api/routes_items.py` declares `DELETE /{item_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d16b1bb2723f51e", "name": "Unused endpoint: POST /signup", "shortDescription": {"text": "Unused endpoint: POST /signup"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `POST /signup` 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-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `POST /login` 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-7ce17d6b092a81ca", "name": "Unused endpoint: POST /refresh", "shortDescription": {"text": "Unused endpoint: POST /refresh"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `POST /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-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `GET /me` 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-7ea4f62a3c94c3ed", "name": "Unused endpoint: GET /instagram/link", "shortDescription": {"text": "Unused endpoint: GET /instagram/link"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `GET /instagram/link` 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-2dd188b30b039cf5", "name": "Unused endpoint: POST /instagram/link", "shortDescription": {"text": "Unused endpoint: POST /instagram/link"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `POST /instagram/link` 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-83a965bdbb4c3a8e", "name": "Unused endpoint: POST /instagram/verify-now", "shortDescription": {"text": "Unused endpoint: POST /instagram/verify-now"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `POST /instagram/verify-now` 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-41d569ff4828de66", "name": "Unused endpoint: DELETE /instagram/link", "shortDescription": {"text": "Unused endpoint: DELETE /instagram/link"}, "fullDescription": {"text": "`backend/recall/api/routes_auth.py` declares `DELETE /instagram/link` 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/18982"}, "properties": {"repository": "sathwik-y/zanzo", "repoUrl": "https://github.com/sathwik-y/zanzo", "branch": "main"}, "results": [{"ruleId": "scanner-78ca10c78f82e6a5", "level": "note", "message": {"text": "Possibly dead Python function: cta"}, "properties": {"repobilityId": "eb2a10a10e044eae", "scanner": "scanner-primary", "fingerprint": "78ca10c78f82e6a5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/recall/pipeline/cta.py:131"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67456aaf7ac1b51c", "level": "note", "message": {"text": "Possibly dead Python function: extract_then_cta"}, "properties": {"repobilityId": "a288632213fbc0a7", "scanner": "scanner-primary", "fingerprint": "67456aaf7ac1b51c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/recall/services/worker.py:54"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73cc49376a7ab2db", "level": "note", "message": {"text": "Possibly dead Python function: fetch_dm_shares"}, "properties": {"repobilityId": "dbb0c1b26191d3e6", "scanner": "scanner-primary", "fingerprint": "73cc49376a7ab2db", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/recall/instagram/dms.py:166"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-16776a5186d15a49", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "16776a5186d15a49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/56bbf504f257_v2_transcript_provider_resources_.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a17749b1e6ff902a", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "a17749b1e6ff902a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/56bbf504f257_v2_transcript_provider_resources_.py:50"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ce1917f399708d7f", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "ce1917f399708d7f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/29b258f63239_initial_schema.py:22"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7133acb7e0712ad9", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "7133acb7e0712ad9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/29b258f63239_initial_schema.py:101"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5981643be53cb32", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "a5981643be53cb32", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/8b2d0e5f3a12_bot_accounts.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8b17db3317c3a719", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "8b17db3317c3a719", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/8b2d0e5f3a12_bot_accounts.py:43"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3175a81a142f1e09", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "3175a81a142f1e09", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/7a1c9d4e2f01_users_and_multitenancy.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d5891fe8780235e1", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "d5891fe8780235e1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/7a1c9d4e2f01_users_and_multitenancy.py:56"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0bb0dc42369a72bc", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "0bb0dc42369a72bc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/9c3e1f6a4b23_item_dm_sender.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-711b45efb2326fc1", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "711b45efb2326fc1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/alembic/versions/9c3e1f6a4b23_item_dm_sender.py:27"}, "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-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-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "e7153709170f3681", "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": "53cdf41d4a5f8a69", "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": "b54a3091a434f440", "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": "210f26f4b16cd7c0", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "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": "11d929380c21669a", "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": "fa2fc3cbd4882bf3", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-13995a6064de7948", "level": "note", "message": {"text": "Legacy-named symbol `direct_v2` in scripts/spike_generic_xma.py:15"}, "properties": {"repobilityId": "893abe37a86fb8cd", "scanner": "scanner-primary", "fingerprint": "13995a6064de7948", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3b522d8857895535", "level": "note", "message": {"text": "Legacy-named symbol `direct_v2` in scripts/spike_dm_raw.py:14"}, "properties": {"repobilityId": "a56d720e7f661528", "scanner": "scanner-primary", "fingerprint": "3b522d8857895535", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c595d9f2f88fdcb", "level": "note", "message": {"text": "Legacy-named symbol `direct_v2` in backend/recall/services/engagement.py:56"}, "properties": {"repobilityId": "fa72d266d4c6463c", "scanner": "scanner-primary", "fingerprint": "1c595d9f2f88fdcb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f568f9589c36a986", "level": "note", "message": {"text": "Legacy-named symbol `direct_v2` in backend/recall/instagram/dms.py:51"}, "properties": {"repobilityId": "6329fa6f5f9674e5", "scanner": "scanner-primary", "fingerprint": "f568f9589c36a986", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2017287b8e4ab599", "level": "note", "message": {"text": "Legacy-named symbol `test_relink_moves_identity_and_keeps_single_copy` in backend/tests/test_dedupe.py:69"}, "properties": {"repobilityId": "80e84fd7a1c25af2", "scanner": "scanner-primary", "fingerprint": "2017287b8e4ab599", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "9d7a5ccbe65a8209", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "639218d6dec34344", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "06622c4711bce58b", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "ce28572600360efd", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "995334835ca0e0e2", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "ab874269be322d13", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "6a537637c44e30c4", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "690aad8325533daf", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "ed02227f80cc6437", "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": "b557398530285120", "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": "27365e4d1a75720d", "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": "e847849a5aca5ca0", "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": "bcbe6eb34f06eef2", "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": "f6f8020596cf3eed", "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": "7b698b2082284260", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-a1d2f34019385110", "level": "note", "message": {"text": "Unused endpoint: POST /event/{item_id}/add-to-calendar"}, "properties": {"repobilityId": "79ad4f90f067ed13", "scanner": "scanner-primary", "fingerprint": "a1d2f34019385110", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd8dc4599ec52a08", "level": "note", "message": {"text": "Unused endpoint: GET /stats"}, "properties": {"repobilityId": "8062289e50c995de", "scanner": "scanner-primary", "fingerprint": "cd8dc4599ec52a08", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c5c8d0cdab63c985", "level": "note", "message": {"text": "Unused endpoint: GET /poller/next"}, "properties": {"repobilityId": "8e38a03eced2cd0c", "scanner": "scanner-primary", "fingerprint": "c5c8d0cdab63c985", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9d4d90b595d2c2de", "level": "note", "message": {"text": "Unused endpoint: GET /poller/status"}, "properties": {"repobilityId": "00230bde8a73d19e", "scanner": "scanner-primary", "fingerprint": "9d4d90b595d2c2de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-43d2645fca362955", "level": "note", "message": {"text": "Unused endpoint: POST /poller/resume"}, "properties": {"repobilityId": "345d6363d157519f", "scanner": "scanner-primary", "fingerprint": "43d2645fca362955", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86f61d7eaf7769f0", "level": "note", "message": {"text": "Unused endpoint: GET /engagement/config"}, "properties": {"repobilityId": "623b9af5cb949ff7", "scanner": "scanner-primary", "fingerprint": "86f61d7eaf7769f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd016d600d0e7444", "level": "note", "message": {"text": "Unused endpoint: PUT /engagement/config"}, "properties": {"repobilityId": "38bf63aa75fb4fab", "scanner": "scanner-primary", "fingerprint": "dd016d600d0e7444", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b2d4a6070660e0f", "level": "note", "message": {"text": "Unused endpoint: GET /engagement"}, "properties": {"repobilityId": "b51acc6fe9a045fc", "scanner": "scanner-primary", "fingerprint": "1b2d4a6070660e0f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f88bff6fd58393b9", "level": "note", "message": {"text": "Unused endpoint: GET /resources"}, "properties": {"repobilityId": "32b5a88ef46ea9e5", "scanner": "scanner-primary", "fingerprint": "f88bff6fd58393b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0aba7f1883cb96f2", "level": "note", "message": {"text": "Unused endpoint: GET /admin/users"}, "properties": {"repobilityId": "993db8b3f6cf7d83", "scanner": "scanner-primary", "fingerprint": "0aba7f1883cb96f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a8217845550973f8", "level": "note", "message": {"text": "Unused endpoint: GET /admin/bots"}, "properties": {"repobilityId": "e7bf8b7c5b1a3197", "scanner": "scanner-primary", "fingerprint": "a8217845550973f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6401fd949923b52", "level": "note", "message": {"text": "Unused endpoint: POST /admin/bots"}, "properties": {"repobilityId": "69d68c03bf1dc50d", "scanner": "scanner-primary", "fingerprint": "d6401fd949923b52", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9e01b78d84842943", "level": "note", "message": {"text": "Unused endpoint: PATCH /admin/bots/{bot_id}"}, "properties": {"repobilityId": "572d8a6518aeb64a", "scanner": "scanner-primary", "fingerprint": "9e01b78d84842943", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-543eba9aaa2d9675", "level": "note", "message": {"text": "Unused endpoint: DELETE /admin/bots/{bot_id}"}, "properties": {"repobilityId": "c4365f62b843cd55", "scanner": "scanner-primary", "fingerprint": "543eba9aaa2d9675", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd159bd05997c05c", "level": "note", "message": {"text": "Unused endpoint: GET /admin/stats"}, "properties": {"repobilityId": "414f49fdc56f02fa", "scanner": "scanner-primary", "fingerprint": "dd159bd05997c05c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "3667c07c1e472790", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b45b0cd7685f5149", "level": "note", "message": {"text": "Unused endpoint: GET /{item_id}"}, "properties": {"repobilityId": "7f7015f34e77446f", "scanner": "scanner-primary", "fingerprint": "b45b0cd7685f5149", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3e9709385c3e4794", "level": "note", "message": {"text": "Unused endpoint: GET /{item_id}/media"}, "properties": {"repobilityId": "43bdc6a80cce8154", "scanner": "scanner-primary", "fingerprint": "3e9709385c3e4794", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3d8e54e2bc994e3", "level": "note", "message": {"text": "Unused endpoint: POST /{item_id}/recategorize"}, "properties": {"repobilityId": "c2e79327900a609e", "scanner": "scanner-primary", "fingerprint": "e3d8e54e2bc994e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fff69ef2616a9cfa", "level": "note", "message": {"text": "Unused endpoint: POST /{item_id}/retry"}, "properties": {"repobilityId": "793ec2633de78f11", "scanner": "scanner-primary", "fingerprint": "fff69ef2616a9cfa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53ef6ff67887838c", "level": "note", "message": {"text": "Unused endpoint: PATCH /{item_id}"}, "properties": {"repobilityId": "502fd365e0d6a1a6", "scanner": "scanner-primary", "fingerprint": "53ef6ff67887838c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d668fa96cc1c0e83", "level": "note", "message": {"text": "Unused endpoint: DELETE /{item_id}"}, "properties": {"repobilityId": "d82bc82ea22c2c2e", "scanner": "scanner-primary", "fingerprint": "d668fa96cc1c0e83", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d16b1bb2723f51e", "level": "note", "message": {"text": "Unused endpoint: POST /signup"}, "properties": {"repobilityId": "063896bc5b3c4718", "scanner": "scanner-primary", "fingerprint": "8d16b1bb2723f51e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "08370faa748a453b", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ce17d6b092a81ca", "level": "note", "message": {"text": "Unused endpoint: POST /refresh"}, "properties": {"repobilityId": "cb5e9b929490f631", "scanner": "scanner-primary", "fingerprint": "7ce17d6b092a81ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "14ae5cb1ed006f26", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ea4f62a3c94c3ed", "level": "note", "message": {"text": "Unused endpoint: GET /instagram/link"}, "properties": {"repobilityId": "d1aa6a4b5ac1fb4a", "scanner": "scanner-primary", "fingerprint": "7ea4f62a3c94c3ed", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2dd188b30b039cf5", "level": "note", "message": {"text": "Unused endpoint: POST /instagram/link"}, "properties": {"repobilityId": "91054ae5517e3af4", "scanner": "scanner-primary", "fingerprint": "2dd188b30b039cf5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-83a965bdbb4c3a8e", "level": "note", "message": {"text": "Unused endpoint: POST /instagram/verify-now"}, "properties": {"repobilityId": "3dae4303fa24ee49", "scanner": "scanner-primary", "fingerprint": "83a965bdbb4c3a8e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-41d569ff4828de66", "level": "note", "message": {"text": "Unused endpoint: DELETE /instagram/link"}, "properties": {"repobilityId": "bccfcf47ad1e89fb", "scanner": "scanner-primary", "fingerprint": "41d569ff4828de66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}