{"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-cea1f019ed8ce3f4", "name": "Possibly dead Python function: illo_padlock", "shortDescription": {"text": "Possibly dead Python function: illo_padlock"}, "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-f873bdd81ea439ac", "name": "Possibly dead Python function: illo_shield", "shortDescription": {"text": "Possibly dead Python function: illo_shield"}, "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-8977d23ddb7054fa", "name": "Possibly dead Python function: illo_pricetag", "shortDescription": {"text": "Possibly dead Python function: illo_pricetag"}, "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-c1c65586774cf86e", "name": "Possibly dead Python function: illo_eye", "shortDescription": {"text": "Possibly dead Python function: illo_eye"}, "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-0590fa876fe04a04", "name": "Possibly dead Python function: illo_wifi", "shortDescription": {"text": "Possibly dead Python function: illo_wifi"}, "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-e018d3d2a720ba30", "name": "Possibly dead Python function: illo_mail", "shortDescription": {"text": "Possibly dead Python function: illo_mail"}, "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-8d4b7c20a9413f5f", "name": "Possibly dead Python function: illo_barcode", "shortDescription": {"text": "Possibly dead Python function: illo_barcode"}, "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-387f944f1ab5bae2", "name": "Possibly dead Python function: illo_card", "shortDescription": {"text": "Possibly dead Python function: illo_card"}, "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-d1f9c3b1503b9801", "name": "Possibly dead Python function: illo_doc", "shortDescription": {"text": "Possibly dead Python function: illo_doc"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd084bad3621f9b7", "name": "Possibly dead Python function: illo_router", "shortDescription": {"text": "Possibly dead Python function: illo_router"}, "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-6551eb0ce7a0fe91", "name": "Possibly dead Python function: layout_bleed", "shortDescription": {"text": "Possibly dead Python function: layout_bleed"}, "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-f1acd54589c39861", "name": "Possibly dead Python function: layout_sidekick", "shortDescription": {"text": "Possibly dead Python function: layout_sidekick"}, "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-c57ba9f6c700219b", "name": "Possibly dead Python function: layout_spotlight", "shortDescription": {"text": "Possibly dead Python function: layout_spotlight"}, "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-a35bacc25b77bf67", "name": "Possibly dead Python function: clear_failed_logins", "shortDescription": {"text": "Possibly dead Python function: clear_failed_logins"}, "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-ca8aaa9f3c63f61e", "name": "Possibly dead Python function: resolve", "shortDescription": {"text": "Possibly dead Python function: resolve"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6e8aa7ec05bcca7", "name": "Possibly dead Python function: disable_family_safe", "shortDescription": {"text": "Possibly dead Python function: disable_family_safe"}, "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-edcc208d54eb3745", "name": "Possibly dead Python function: add_harbor_kids_profile", "shortDescription": {"text": "Possibly dead Python function: add_harbor_kids_profile"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24529a0e5e3ae179", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fe4df99a1fb5901", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-431cfe91c5390d15", "name": "Possibly dead Python function: ntfy", "shortDescription": {"text": "Possibly dead Python function: ntfy"}, "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-7731e6a04bd88383", "name": "Possibly dead Python function: is_client_allowed", "shortDescription": {"text": "Possibly dead Python function: is_client_allowed"}, "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-08d666f4c1dd955a", "name": "Possibly dead Python function: find_customer_by_any_email", "shortDescription": {"text": "Possibly dead Python function: find_customer_by_any_email"}, "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-a9e81805d78aacbb", "name": "Possibly dead Python function: list_aliases", "shortDescription": {"text": "Possibly dead Python function: list_aliases"}, "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-964fbf88b101335f", "name": "Possibly dead Python function: add_pending_alias", "shortDescription": {"text": "Possibly dead Python function: add_pending_alias"}, "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-cd79c7f3df319b98", "name": "Possibly dead Python function: mut", "shortDescription": {"text": "Possibly dead Python function: mut"}, "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-65a6a73ebaf1c140", "name": "Possibly dead Python function: verify_alias", "shortDescription": {"text": "Possibly dead Python function: verify_alias"}, "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-3d40cd2210e550ff", "name": "Possibly dead Python function: remove_alias", "shortDescription": {"text": "Possibly dead Python function: remove_alias"}, "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-ecd000eafd1c29f0", "name": "Possibly dead Python function: email_in_use_elsewhere", "shortDescription": {"text": "Possibly dead Python function: email_in_use_elsewhere"}, "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-166dff3c3df6a10e", "name": "ORM models found but no DB engine detected", "shortDescription": {"text": "ORM models found but no DB engine detected"}, "fullDescription": {"text": "The repo defines tables/models but no DB connection string was found. Likely lives in env vars or a config file the scanner didn't read."}, "properties": {"scanner": "scanner-primary", "layer": "data", "severity": "medium", "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-5bcb475e954d80c6", "name": "Insecure pattern 'exec_used' in run_pending_wipes.py:4", "shortDescription": {"text": "Insecure pattern 'exec_used' in run_pending_wipes.py:4"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-75a4f1475d52da5e", "name": "Insecure pattern 'direct_innerhtml_assignment' in start-widgets.html:173", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in start-widgets.html:173"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fb77a7aabc7aa3f0", "name": "Insecure pattern 'direct_innerhtml_assignment' in fax.html:449", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in fax.html:449"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d21a1bdaee494de7", "name": "Insecure pattern 'direct_innerhtml_assignment' in free-trial.html:159", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in free-trial.html:159"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b74b04245cc43993", "name": "Insecure pattern 'exec_used' in dashboard.py:7088", "shortDescription": {"text": "Insecure pattern 'exec_used' in dashboard.py:7088"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ba8044677ffe93cc", "name": "Insecure pattern 'direct_innerhtml_assignment' in parental-control.html:172", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in parental-control.html:172"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a9b12b268668fb54", "name": "Insecure pattern 'direct_innerhtml_assignment' in start-dashboard.html:417", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in start-dashboard.html:417"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-beb8a82dec73a9d8", "name": "Insecure pattern 'direct_innerhtml_assignment' in adblock-test.html:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in adblock-test.html:185"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-45552e9760fa16ed", "name": "Insecure pattern 'direct_innerhtml_assignment' in static/start/index.html:391", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/start/index.html:391"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-820fc797834c8b4c", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:197", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:197"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-38dc8bfe5881a825", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/docs/index.html:197", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/docs/index.html:197"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d7d694dc748506d", "name": "Very large file: dashboard.py (7165 lines)", "shortDescription": {"text": "Very large file: dashboard.py (7165 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-0d38b54befec4b18", "name": "Very large file: webhook.py (1110 lines)", "shortDescription": {"text": "Very large file: webhook.py (1110 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-b131cf94a7a333b5", "name": "Very large file: _archive/social_legacy.py (1044 lines)", "shortDescription": {"text": "Very large file: _archive/social_legacy.py (1044 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 29 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 48 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 42 placeholder/mock markers across 5 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing ci, tests. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bea357a6497a2d5d", "name": "Agent authority lacks a verifier contract: CLAUDE.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee61c492f2ffcbf6", "name": "Network/subprocess call without timeout or try/except \u2014 weekly_email.py:80", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 weekly_email.py:80"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-479bc9550785471f", "name": "Commented-code block (6 lines) in dashboard.py:280", "shortDescription": {"text": "Commented-code block (6 lines) in dashboard.py:280"}, "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-deb4094aa843320f", "name": "Network/subprocess call without timeout or try/except \u2014 dashboard.py:3409", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 dashboard.py:3409"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-352384160c2796c5", "name": "Commented-code block (5 lines) in reel-refresh.py:452", "shortDescription": {"text": "Commented-code block (5 lines) in reel-refresh.py:452"}, "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-e45f5ece021105cb", "name": "Network/subprocess call without timeout or try/except \u2014 webhook.py:891", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 webhook.py:891"}, "fullDescription": {"text": "`subprocess.Popen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9174c287f46b0ff9", "name": "Commented-code block (6 lines) in _archive/social_legacy.py:808", "shortDescription": {"text": "Commented-code block (6 lines) in _archive/social_legacy.py:808"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndashboard.py:add_no_cache, dashboard.py:add\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndashboard.py:api_pause, dashboard.py:api_support_code, dashboard.py:api_rule\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-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndashboard.py:get_kids_profiles, webhook.py:enable_family_safe, webhook.py:disable_family_safe, webhook.py:enable_harbor_kids\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndashboard.py:update_customer_harbor_kids_flag, webhook.py:update_customer_family_safe, webhook.py:update_customer_harbor_kids, webhook.py:update_customer_harbor_kids_off\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-c9c3fb30cf308b5a", "name": "Flask mutation route `admin_job_delete` without `@login_required` \u2014 career_admin.py:122", "shortDescription": {"text": "Flask mutation route `admin_job_delete` without `@login_required` \u2014 career_admin.py:122"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-341045cfc8793eb1", "name": "Flask mutation route `admin_resend_code` without `@login_required` \u2014 career_admin.py:139", "shortDescription": {"text": "Flask mutation route `admin_resend_code` without `@login_required` \u2014 career_admin.py:139"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b31fe63903a4ce55", "name": "Flask mutation route `admin_sweep` without `@login_required` \u2014 career_admin.py:163", "shortDescription": {"text": "Flask mutation route `admin_sweep` without `@login_required` \u2014 career_admin.py:163"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42f0ee938c2faf66", "name": "Flask mutation route `admin_flags` without `@login_required` \u2014 career_admin.py:202", "shortDescription": {"text": "Flask mutation route `admin_flags` without `@login_required` \u2014 career_admin.py:202"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-03383016acb815f0", "name": "Flask mutation route `_admin_login` without `@login_required` \u2014 admin_common.py:154", "shortDescription": {"text": "Flask mutation route `_admin_login` without `@login_required` \u2014 admin_common.py:154"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e67ac094e23a359b", "name": "Flask mutation route `_admin_logout` without `@login_required` \u2014 admin_common.py:189", "shortDescription": {"text": "Flask mutation route `_admin_logout` without `@login_required` \u2014 admin_common.py:189"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a565a7309db99e9", "name": "Flask mutation route `create_cover_letter` without `@login_required` \u2014 coverletter.py:45", "shortDescription": {"text": "Flask mutation route `create_cover_letter` without `@login_required` \u2014 coverletter.py:45"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-34e9a93d3ffde86f", "name": "Flask mutation route `create_resume_review` without `@login_required` \u2014 coverletter.py:86", "shortDescription": {"text": "Flask mutation route `create_resume_review` without `@login_required` \u2014 coverletter.py:86"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-72316db93c481c6f", "name": "Flask mutation route `generate_cover_letter` without `@login_required` \u2014 coverletter.py:130", "shortDescription": {"text": "Flask mutation route `generate_cover_letter` without `@login_required` \u2014 coverletter.py:130"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-45abc3f192f8a7ec", "name": "Flask mutation route `generate_resume_review` without `@login_required` \u2014 coverletter.py:366", "shortDescription": {"text": "Flask mutation route `generate_resume_review` without `@login_required` \u2014 coverletter.py:366"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ccf24882b63e7ad5", "name": "Flask mutation route `extend_job_access` without `@login_required` \u2014 coverletter.py:503", "shortDescription": {"text": "Flask mutation route `extend_job_access` without `@login_required` \u2014 coverletter.py:503"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2dcb0ad818b5289a", "name": "Flask mutation route `update_header` without `@login_required` \u2014 coverletter.py:531", "shortDescription": {"text": "Flask mutation route `update_header` without `@login_required` \u2014 coverletter.py:531"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a59cd87c936b5fff", "name": "Flask mutation route `adjust_cover_letter` without `@login_required` \u2014 coverletter.py:587", "shortDescription": {"text": "Flask mutation route `adjust_cover_letter` without `@login_required` \u2014 coverletter.py:587"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-42ec16198fffafa9", "name": "Flask mutation route `resend_cover_letter` without `@login_required` \u2014 coverletter.py:650", "shortDescription": {"text": "Flask mutation route `resend_cover_letter` without `@login_required` \u2014 coverletter.py:650"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e43fa881a08c284b", "name": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:711", "shortDescription": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:711"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-925c74b7b14f87cb", "name": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:712", "shortDescription": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:712"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b8ed7eb511664915", "name": "Flask mutation route `checkout_coverletter` without `@login_required` \u2014 coverletter.py:873", "shortDescription": {"text": "Flask mutation route `checkout_coverletter` without `@login_required` \u2014 coverletter.py:873"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81442fa5f7a3a647", "name": "Flask mutation route `checkout_resume` without `@login_required` \u2014 coverletter.py:894", "shortDescription": {"text": "Flask mutation route `checkout_resume` without `@login_required` \u2014 coverletter.py:894"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3433002757319bc0", "name": "Flask mutation route `checkout_adjust` without `@login_required` \u2014 coverletter.py:915", "shortDescription": {"text": "Flask mutation route `checkout_adjust` without `@login_required` \u2014 coverletter.py:915"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b5ba28f4b0bdfac0", "name": "Flask mutation route `pay_coverletter` without `@login_required` \u2014 coverletter.py:962", "shortDescription": {"text": "Flask mutation route `pay_coverletter` without `@login_required` \u2014 coverletter.py:962"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-310a36d76554e86a", "name": "Flask mutation route `pay_resume` without `@login_required` \u2014 coverletter.py:992", "shortDescription": {"text": "Flask mutation route `pay_resume` without `@login_required` \u2014 coverletter.py:992"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a8c5c763137142a7", "name": "Flask mutation route `stripe_pi_webhook` without `@login_required` \u2014 coverletter.py:1022", "shortDescription": {"text": "Flask mutation route `stripe_pi_webhook` without `@login_required` \u2014 coverletter.py:1022"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4127a8e3ae07912d", "name": "Flask mutation route `admin_order_delete` without `@login_required` \u2014 fax_admin.py:144", "shortDescription": {"text": "Flask mutation route `admin_order_delete` without `@login_required` \u2014 fax_admin.py:144"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a83a5581c02cc9f", "name": "Flask mutation route `admin_sweep` without `@login_required` \u2014 fax_admin.py:175", "shortDescription": {"text": "Flask mutation route `admin_sweep` without `@login_required` \u2014 fax_admin.py:175"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-09593ec5555eddd1", "name": "Flask mutation route `admin_flags` without `@login_required` \u2014 fax_admin.py:227", "shortDescription": {"text": "Flask mutation route `admin_flags` without `@login_required` \u2014 fax_admin.py:227"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f46071850a345a3e", "name": "Flask mutation route `fax_upload` without `@login_required` \u2014 fax.py:579", "shortDescription": {"text": "Flask mutation route `fax_upload` without `@login_required` \u2014 fax.py:579"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-85aa6509e6717a8b", "name": "Flask mutation route `validate_promo` without `@login_required` \u2014 fax.py:644", "shortDescription": {"text": "Flask mutation route `validate_promo` without `@login_required` \u2014 fax.py:644"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77758722ea80aa82", "name": "Flask mutation route `create_payment_intent` without `@login_required` \u2014 fax.py:690", "shortDescription": {"text": "Flask mutation route `create_payment_intent` without `@login_required` \u2014 fax.py:690"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e257d68098cd73cc", "name": "Flask mutation route `send_free` without `@login_required` \u2014 fax.py:757", "shortDescription": {"text": "Flask mutation route `send_free` without `@login_required` \u2014 fax.py:757"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bced3eacf5c806fc", "name": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 fax.py:828", "shortDescription": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 fax.py:828"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-05a1f5bdc39acfa4", "name": "Flask mutation route `telnyx_webhook` without `@login_required` \u2014 fax.py:857", "shortDescription": {"text": "Flask mutation route `telnyx_webhook` without `@login_required` \u2014 fax.py:857"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b04734258c2e22b", "name": "Flask mutation route `api_start_magic` without `@login_required` \u2014 _archive/social_legacy.py:815", "shortDescription": {"text": "Flask mutation route `api_start_magic` without `@login_required` \u2014 _archive/social_legacy.py:815"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3e4900db22f127ac", "name": "Flask mutation route `api_start_verify` without `@login_required` \u2014 _archive/social_legacy.py:839", "shortDescription": {"text": "Flask mutation route `api_start_verify` without `@login_required` \u2014 _archive/social_legacy.py:839"}, "fullDescription": {"text": "Flask route declares POST/PUT/DELETE/PATCH methods without an auth decorator. Add `@login_required` (Flask-Login) or equivalent."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b685dde063ac2261", "name": "FastAPI POST `api_customer_lookup` without auth dependency \u2014 snippets/account_emails_routes.py:73", "shortDescription": {"text": "FastAPI POST `api_customer_lookup` without auth dependency \u2014 snippets/account_emails_routes.py:73"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6913303aecf0c83", "name": "FastAPI POST `account_emails_add` without auth dependency \u2014 snippets/account_emails_routes.py:156", "shortDescription": {"text": "FastAPI POST `account_emails_add` without auth dependency \u2014 snippets/account_emails_routes.py:156"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08d4b6f3793f2ead", "name": "FastAPI POST `account_emails_remove` without auth dependency \u2014 snippets/account_emails_routes.py:204", "shortDescription": {"text": "FastAPI POST `account_emails_remove` without auth dependency \u2014 snippets/account_emails_routes.py:204"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98356fa7ff420a14", "name": "Unused endpoint: ANY /admin", "shortDescription": {"text": "Unused endpoint: ANY /admin"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin` 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-4e22df534e3862c0", "name": "Unused endpoint: ANY /admin/job/<job_id>", "shortDescription": {"text": "Unused endpoint: ANY /admin/job/<job_id>"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin/job/<job_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-d64fa3640952646a", "name": "Unused endpoint: ANY /admin/job/<job_id>/delete", "shortDescription": {"text": "Unused endpoint: ANY /admin/job/<job_id>/delete"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin/job/<job_id>/delete` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2455430bbb9e9b18", "name": "Unused endpoint: ANY /admin/job/<job_id>/resend_code", "shortDescription": {"text": "Unused endpoint: ANY /admin/job/<job_id>/resend_code"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin/job/<job_id>/resend_code` 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-09c414167a2ad33a", "name": "Unused endpoint: ANY /admin/sweep", "shortDescription": {"text": "Unused endpoint: ANY /admin/sweep"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin/sweep` 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-2a227d3a24b966b9", "name": "Unused endpoint: ANY /admin/flags", "shortDescription": {"text": "Unused endpoint: ANY /admin/flags"}, "fullDescription": {"text": "`career_admin.py` declares `ANY /admin/flags` 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-68bc2ac4bf5f0856", "name": "Unused endpoint: ANY /admin/logout", "shortDescription": {"text": "Unused endpoint: ANY /admin/logout"}, "fullDescription": {"text": "`admin_common.py` declares `ANY /admin/logout` 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-1a6d91f2236825bf", "name": "Unused endpoint: ANY /", "shortDescription": {"text": "Unused endpoint: ANY /"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /` 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-93ebf3f68476992c", "name": "Unused endpoint: ANY /clear", "shortDescription": {"text": "Unused endpoint: ANY /clear"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /clear` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c7ad61ba1b23915", "name": "Unused endpoint: ANY /login", "shortDescription": {"text": "Unused endpoint: ANY /login"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /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-4966519e76d5b583", "name": "Unused endpoint: ANY /dns-whoami/<token>", "shortDescription": {"text": "Unused endpoint: ANY /dns-whoami/<token>"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /dns-whoami/<token>` 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-5313acaa894df75f", "name": "Unused endpoint: ANY /dns-check", "shortDescription": {"text": "Unused endpoint: ANY /dns-check"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /dns-check` 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-44c7d3a14d8d8103", "name": "Unused endpoint: ANY /setup", "shortDescription": {"text": "Unused endpoint: ANY /setup"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /setup` 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-6a22f3c25a0b75ef", "name": "Unused endpoint: ANY /setup/2fa-prompt", "shortDescription": {"text": "Unused endpoint: ANY /setup/2fa-prompt"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /setup/2fa-prompt` 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-c9e449c3b9e73b73", "name": "Unused endpoint: ANY /logout", "shortDescription": {"text": "Unused endpoint: ANY /logout"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /logout` 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-8877994083ed2902", "name": "Unused endpoint: ANY /dashboard", "shortDescription": {"text": "Unused endpoint: ANY /dashboard"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /dashboard` 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-1b378d41cf08153c", "name": "Unused endpoint: ANY /api/adblock-checkout", "shortDescription": {"text": "Unused endpoint: ANY /api/adblock-checkout"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/adblock-checkout` 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-cc65cb25492d1ef5", "name": "Unused endpoint: ANY /api/decal-request", "shortDescription": {"text": "Unused endpoint: ANY /api/decal-request"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/decal-request` 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-5f9eee7c59357c5f", "name": "Unused endpoint: ANY /api/sticker-checkout", "shortDescription": {"text": "Unused endpoint: ANY /api/sticker-checkout"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/sticker-checkout` 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-352264d7e29d5a56", "name": "Unused endpoint: ANY /api/signup-stats", "shortDescription": {"text": "Unused endpoint: ANY /api/signup-stats"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/signup-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-2e624f3dde04ab97", "name": "Unused endpoint: ANY /api/agh-status", "shortDescription": {"text": "Unused endpoint: ANY /api/agh-status"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/agh-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-10f03ff1ab2da802", "name": "Unused endpoint: ANY /api/home-beacon", "shortDescription": {"text": "Unused endpoint: ANY /api/home-beacon"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/home-beacon` 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-0aa0c723a8f34b09", "name": "Unused endpoint: ANY /api/home-status", "shortDescription": {"text": "Unused endpoint: ANY /api/home-status"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/home-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-a30dcc5eea8358db", "name": "Unused endpoint: ANY /api/dns-analytics", "shortDescription": {"text": "Unused endpoint: ANY /api/dns-analytics"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/dns-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-53bc2f88976b8f8b", "name": "Unused endpoint: ANY /admin/analytics", "shortDescription": {"text": "Unused endpoint: ANY /admin/analytics"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /admin/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-e9394a6c400cab17", "name": "Unused endpoint: ANY /admin/links", "shortDescription": {"text": "Unused endpoint: ANY /admin/links"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /admin/links` 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-a2a35c5f89103530", "name": "Unused endpoint: ANY /api/admin/links", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/links"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/links` 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-8634d2615f32658e", "name": "Unused endpoint: ANY /admin/customer/<client_id>", "shortDescription": {"text": "Unused endpoint: ANY /admin/customer/<client_id>"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /admin/customer/<client_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-730243f5702f0b8a", "name": "Unused endpoint: ANY /settings", "shortDescription": {"text": "Unused endpoint: ANY /settings"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings` 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-3df375a611b68342", "name": "Unused endpoint: ANY /settings/password", "shortDescription": {"text": "Unused endpoint: ANY /settings/password"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings/password` 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-06f6c4897fcb9e0a", "name": "Unused endpoint: ANY /settings/2fa/setup", "shortDescription": {"text": "Unused endpoint: ANY /settings/2fa/setup"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings/2fa/setup` 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-174c230c92106b48", "name": "Unused endpoint: ANY /settings/2fa/enable", "shortDescription": {"text": "Unused endpoint: ANY /settings/2fa/enable"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings/2fa/enable` 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-6dddf9ce6f9207dd", "name": "Unused endpoint: ANY /settings/2fa/disable", "shortDescription": {"text": "Unused endpoint: ANY /settings/2fa/disable"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings/2fa/disable` 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-9bd4b1e5023d3d19", "name": "Unused endpoint: ANY /settings/data-request", "shortDescription": {"text": "Unused endpoint: ANY /settings/data-request"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /settings/data-request` 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-4980f50b2e0d8ef1", "name": "Unused endpoint: ANY /forgot", "shortDescription": {"text": "Unused endpoint: ANY /forgot"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /forgot` 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-b25df019c0de2c1d", "name": "Unused endpoint: ANY /reset", "shortDescription": {"text": "Unused endpoint: ANY /reset"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /reset` 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-ad1991f5f0cb422e", "name": "Unused endpoint: ANY /api/windows/send-code", "shortDescription": {"text": "Unused endpoint: ANY /api/windows/send-code"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/windows/send-code` 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-a556c1dd39063765", "name": "Unused endpoint: ANY /api/windows/verify", "shortDescription": {"text": "Unused endpoint: ANY /api/windows/verify"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/windows/verify` 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-1f89ea00e60603c1", "name": "Unused endpoint: ANY /api/weekly-email", "shortDescription": {"text": "Unused endpoint: ANY /api/weekly-email"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/weekly-email` 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-2ff0b2e224b7aca0", "name": "Unused endpoint: ANY /api/profile", "shortDescription": {"text": "Unused endpoint: ANY /api/profile"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/profile` 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-b40b160852261dd2", "name": "Unused endpoint: ANY /api/pause", "shortDescription": {"text": "Unused endpoint: ANY /api/pause"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /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-d2043d045eac57d4", "name": "Unused endpoint: ANY /api/support-code", "shortDescription": {"text": "Unused endpoint: ANY /api/support-code"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/support-code` 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-e6c78c526e5d4ba6", "name": "Unused endpoint: ANY /api/admin/revoke-code", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/revoke-code"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/revoke-code` 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-c8ddcd61fe1a8aa7", "name": "Unused endpoint: ANY /api/addon", "shortDescription": {"text": "Unused endpoint: ANY /api/addon"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/addon` 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-aa92715c0b8f1783", "name": "Unused endpoint: ANY /api/admin/delete-customer", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/delete-customer"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/delete-customer` 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-ad87e6a5df651110", "name": "Unused endpoint: ANY /api/admin/resend-welcome", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/resend-welcome"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/resend-welcome` 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-e2f96de0f6298d07", "name": "Unused endpoint: ANY /api/admin/reprovision", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/reprovision"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/reprovision` 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-1c7b8cd4e54b58f6", "name": "Unused endpoint: ANY /api/admin/addon", "shortDescription": {"text": "Unused endpoint: ANY /api/admin/addon"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/admin/addon` 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-dd011158d3aa853a", "name": "Unused endpoint: ANY /api/service", "shortDescription": {"text": "Unused endpoint: ANY /api/service"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/service` 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-aed6213c6f8b6daf", "name": "Unused endpoint: ANY /api/rule", "shortDescription": {"text": "Unused endpoint: ANY /api/rule"}, "fullDescription": {"text": "`dashboard.py` declares `ANY /api/rule` 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/20869"}, "properties": {"repository": "tbrzr/Harbor-privacy-backend", "repoUrl": "https://github.com/tbrzr/Harbor-privacy-backend", "branch": "main"}, "results": [{"ruleId": "scanner-cea1f019ed8ce3f4", "level": "note", "message": {"text": "Possibly dead Python function: illo_padlock"}, "properties": {"repobilityId": "20ebe2a442d77277", "scanner": "scanner-primary", "fingerprint": "cea1f019ed8ce3f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f873bdd81ea439ac", "level": "note", "message": {"text": "Possibly dead Python function: illo_shield"}, "properties": {"repobilityId": "9ff187d21ba38310", "scanner": "scanner-primary", "fingerprint": "f873bdd81ea439ac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:52"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8977d23ddb7054fa", "level": "note", "message": {"text": "Possibly dead Python function: illo_pricetag"}, "properties": {"repobilityId": "0cb0ad317359b886", "scanner": "scanner-primary", "fingerprint": "8977d23ddb7054fa", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1c65586774cf86e", "level": "note", "message": {"text": "Possibly dead Python function: illo_eye"}, "properties": {"repobilityId": "6e18aef21c0a2b26", "scanner": "scanner-primary", "fingerprint": "c1c65586774cf86e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0590fa876fe04a04", "level": "note", "message": {"text": "Possibly dead Python function: illo_wifi"}, "properties": {"repobilityId": "6ecbf8a33446c74b", "scanner": "scanner-primary", "fingerprint": "0590fa876fe04a04", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:78"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e018d3d2a720ba30", "level": "note", "message": {"text": "Possibly dead Python function: illo_mail"}, "properties": {"repobilityId": "2944f803ec2854fe", "scanner": "scanner-primary", "fingerprint": "e018d3d2a720ba30", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d4b7c20a9413f5f", "level": "note", "message": {"text": "Possibly dead Python function: illo_barcode"}, "properties": {"repobilityId": "556c77141d721ddb", "scanner": "scanner-primary", "fingerprint": "8d4b7c20a9413f5f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-387f944f1ab5bae2", "level": "note", "message": {"text": "Possibly dead Python function: illo_card"}, "properties": {"repobilityId": "5966cdbd3d90ab4b", "scanner": "scanner-primary", "fingerprint": "387f944f1ab5bae2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:104"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1f9c3b1503b9801", "level": "note", "message": {"text": "Possibly dead Python function: illo_doc"}, "properties": {"repobilityId": "a341a0dbfeab8612", "scanner": "scanner-primary", "fingerprint": "d1f9c3b1503b9801", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dd084bad3621f9b7", "level": "note", "message": {"text": "Possibly dead Python function: illo_router"}, "properties": {"repobilityId": "d0ff8bd5f4b7c1d0", "scanner": "scanner-primary", "fingerprint": "dd084bad3621f9b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:128"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6551eb0ce7a0fe91", "level": "note", "message": {"text": "Possibly dead Python function: layout_bleed"}, "properties": {"repobilityId": "b6c383f3df39fc52", "scanner": "scanner-primary", "fingerprint": "6551eb0ce7a0fe91", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:301"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f1acd54589c39861", "level": "note", "message": {"text": "Possibly dead Python function: layout_sidekick"}, "properties": {"repobilityId": "02cc492efd6df3ac", "scanner": "scanner-primary", "fingerprint": "f1acd54589c39861", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:317"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c57ba9f6c700219b", "level": "note", "message": {"text": "Possibly dead Python function: layout_spotlight"}, "properties": {"repobilityId": "f58931b1d4959167", "scanner": "scanner-primary", "fingerprint": "c57ba9f6c700219b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "card_engine.py:340"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a35bacc25b77bf67", "level": "note", "message": {"text": "Possibly dead Python function: clear_failed_logins"}, "properties": {"repobilityId": "f8d782b0c56e07f2", "scanner": "scanner-primary", "fingerprint": "a35bacc25b77bf67", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard.py:232"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca8aaa9f3c63f61e", "level": "note", "message": {"text": "Possibly dead Python function: resolve"}, "properties": {"repobilityId": "7c71ac162466eafc", "scanner": "scanner-primary", "fingerprint": "ca8aaa9f3c63f61e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "whoami_dns.py:34"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f6e8aa7ec05bcca7", "level": "note", "message": {"text": "Possibly dead Python function: disable_family_safe"}, "properties": {"repobilityId": "f763df21c144469a", "scanner": "scanner-primary", "fingerprint": "f6e8aa7ec05bcca7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook.py:559"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-edcc208d54eb3745", "level": "note", "message": {"text": "Possibly dead Python function: add_harbor_kids_profile"}, "properties": {"repobilityId": "3eacbfa15b7f6dba", "scanner": "scanner-primary", "fingerprint": "edcc208d54eb3745", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook.py:615"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24529a0e5e3ae179", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "24529a0e5e3ae179", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook.py:876"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8fe4df99a1fb5901", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "8fe4df99a1fb5901", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "webhook.py:1105"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-431cfe91c5390d15", "level": "note", "message": {"text": "Possibly dead Python function: ntfy"}, "properties": {"repobilityId": "e5e98f15cf872a4e", "scanner": "scanner-primary", "fingerprint": "431cfe91c5390d15", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py:143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7731e6a04bd88383", "level": "note", "message": {"text": "Possibly dead Python function: is_client_allowed"}, "properties": {"repobilityId": "8c1dc5bbf6000951", "scanner": "scanner-primary", "fingerprint": "7731e6a04bd88383", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/agh.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08d666f4c1dd955a", "level": "note", "message": {"text": "Possibly dead Python function: find_customer_by_any_email"}, "properties": {"repobilityId": "b362e50faf348de9", "scanner": "scanner-primary", "fingerprint": "08d666f4c1dd955a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:158"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a9e81805d78aacbb", "level": "note", "message": {"text": "Possibly dead Python function: list_aliases"}, "properties": {"repobilityId": "a6e26ec107f7314b", "scanner": "scanner-primary", "fingerprint": "a9e81805d78aacbb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:178"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-964fbf88b101335f", "level": "note", "message": {"text": "Possibly dead Python function: add_pending_alias"}, "properties": {"repobilityId": "aa4d2647133f705b", "scanner": "scanner-primary", "fingerprint": "964fbf88b101335f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:183"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cd79c7f3df319b98", "level": "note", "message": {"text": "Possibly dead Python function: mut"}, "properties": {"repobilityId": "9c5661dbdcdf83a3", "scanner": "scanner-primary", "fingerprint": "cd79c7f3df319b98", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:225"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65a6a73ebaf1c140", "level": "note", "message": {"text": "Possibly dead Python function: verify_alias"}, "properties": {"repobilityId": "0cbfa15005cacf97", "scanner": "scanner-primary", "fingerprint": "65a6a73ebaf1c140", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:206"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3d40cd2210e550ff", "level": "note", "message": {"text": "Possibly dead Python function: remove_alias"}, "properties": {"repobilityId": "7ff943a9d2887c3a", "scanner": "scanner-primary", "fingerprint": "3d40cd2210e550ff", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:222"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ecd000eafd1c29f0", "level": "note", "message": {"text": "Possibly dead Python function: email_in_use_elsewhere"}, "properties": {"repobilityId": "46d07ceceb4479c6", "scanner": "scanner-primary", "fingerprint": "ecd000eafd1c29f0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "harbor_lib/data.py:237"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-166dff3c3df6a10e", "level": "warning", "message": {"text": "ORM models found but no DB engine detected"}, "properties": {"repobilityId": "cda36de65e114635", "scanner": "scanner-primary", "fingerprint": "166dff3c3df6a10e", "layer": "data", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"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-5bcb475e954d80c6", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in run_pending_wipes.py:4"}, "properties": {"repobilityId": "35371211ec9fc232", "scanner": "scanner-primary", "fingerprint": "5bcb475e954d80c6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "run_pending_wipes.py"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-75a4f1475d52da5e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in start-widgets.html:173"}, "properties": {"repobilityId": "7c1695c8dccc9df0", "scanner": "scanner-primary", "fingerprint": "75a4f1475d52da5e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start-widgets.html"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-fb77a7aabc7aa3f0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in fax.html:449"}, "properties": {"repobilityId": "51516152d00fcd00", "scanner": "scanner-primary", "fingerprint": "fb77a7aabc7aa3f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.html"}, "region": {"startLine": 449}}}]}, {"ruleId": "scanner-d21a1bdaee494de7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in free-trial.html:159"}, "properties": {"repobilityId": "6baec5a42fbcbda2", "scanner": "scanner-primary", "fingerprint": "d21a1bdaee494de7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "free-trial.html"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-b74b04245cc43993", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in dashboard.py:7088"}, "properties": {"repobilityId": "7ec4cbff4831605f", "scanner": "scanner-primary", "fingerprint": "b74b04245cc43993", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "dashboard.py"}, "region": {"startLine": 7088}}}]}, {"ruleId": "scanner-ba8044677ffe93cc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in parental-control.html:172"}, "properties": {"repobilityId": "1d04cf6730c3a991", "scanner": "scanner-primary", "fingerprint": "ba8044677ffe93cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "parental-control.html"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-a9b12b268668fb54", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in start-dashboard.html:417"}, "properties": {"repobilityId": "ee7ca881292dc37d", "scanner": "scanner-primary", "fingerprint": "a9b12b268668fb54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "start-dashboard.html"}, "region": {"startLine": 417}}}]}, {"ruleId": "scanner-beb8a82dec73a9d8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in adblock-test.html:185"}, "properties": {"repobilityId": "a9af955f5fa2392c", "scanner": "scanner-primary", "fingerprint": "beb8a82dec73a9d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "adblock-test.html"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-45552e9760fa16ed", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in static/start/index.html:391"}, "properties": {"repobilityId": "5bbe148459e318a4", "scanner": "scanner-primary", "fingerprint": "45552e9760fa16ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "static/start/index.html"}, "region": {"startLine": 391}}}]}, {"ruleId": "scanner-820fc797834c8b4c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/index.html:197"}, "properties": {"repobilityId": "cba7363c134f7b1d", "scanner": "scanner-primary", "fingerprint": "820fc797834c8b4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/index.html"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-38dc8bfe5881a825", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/docs/index.html:197"}, "properties": {"repobilityId": "1eb9d3a9d41036b7", "scanner": "scanner-primary", "fingerprint": "38dc8bfe5881a825", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/docs/index.html"}, "region": {"startLine": 197}}}]}, {"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-3d7d694dc748506d", "level": "note", "message": {"text": "Very large file: dashboard.py (7165 lines)"}, "properties": {"repobilityId": "706afce5fefb1019", "scanner": "scanner-primary", "fingerprint": "3d7d694dc748506d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d38b54befec4b18", "level": "note", "message": {"text": "Very large file: webhook.py (1110 lines)"}, "properties": {"repobilityId": "9d955f657682be10", "scanner": "scanner-primary", "fingerprint": "0d38b54befec4b18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b131cf94a7a333b5", "level": "note", "message": {"text": "Very large file: _archive/social_legacy.py (1044 lines)"}, "properties": {"repobilityId": "f537e815c747fef7", "scanner": "scanner-primary", "fingerprint": "b131cf94a7a333b5", "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": "7dc5ab800647cfe4", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "503a117293cb045b", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "c7ed9a09c5c30f87", "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": "4f06af21315dd49a", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "df94e4e138feebdf", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "4e96216f9e7b044e", "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": "14c3bce706547757", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-bea357a6497a2d5d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: CLAUDE.md"}, "properties": {"repobilityId": "aae72df3934829ac", "scanner": "scanner-primary", "fingerprint": "bea357a6497a2d5d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ee61c492f2ffcbf6", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 weekly_email.py:80"}, "properties": {"repobilityId": "32411ba848d12d22", "scanner": "scanner-primary", "fingerprint": "ee61c492f2ffcbf6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-479bc9550785471f", "level": "none", "message": {"text": "Commented-code block (6 lines) in dashboard.py:280"}, "properties": {"repobilityId": "7d5a1fcec85a7d97", "scanner": "scanner-primary", "fingerprint": "479bc9550785471f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-deb4094aa843320f", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 dashboard.py:3409"}, "properties": {"repobilityId": "9fda1cbf1d8c4720", "scanner": "scanner-primary", "fingerprint": "deb4094aa843320f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-352384160c2796c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in reel-refresh.py:452"}, "properties": {"repobilityId": "24a24f766dc1e61f", "scanner": "scanner-primary", "fingerprint": "352384160c2796c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e45f5ece021105cb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 webhook.py:891"}, "properties": {"repobilityId": "0875d651135328f4", "scanner": "scanner-primary", "fingerprint": "e45f5ece021105cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9174c287f46b0ff9", "level": "none", "message": {"text": "Commented-code block (6 lines) in _archive/social_legacy.py:808"}, "properties": {"repobilityId": "b74d12a815e22a02", "scanner": "scanner-primary", "fingerprint": "9174c287f46b0ff9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "e98303d26903f1ab", "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": "01a9927ad2b5cc95", "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": "33180b0b9ff3830a", "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": "76614216a6a5569b", "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": "ba8177d87533e58d", "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": "b77a108ff63ddd64", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "785c5be0905a5d6a", "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": "368dad14585b25a7", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "e30791fc91ddb4df", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "75ec6cd07b86a7fe", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "1288ae575202fceb", "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": "ed07713c2b275370", "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": "c26a8f7fb932ec55", "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": "ef06502bba0ac140", "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": "488f61a068dce28f", "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": "2f4122fe2200da55", "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": "a04009cc9c7ef13c", "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": "e2d1ffe1ad2987d2", "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": "8ed8baee054e2837", "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": "1bce55b04e386da0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-c9c3fb30cf308b5a", "level": "error", "message": {"text": "Flask mutation route `admin_job_delete` without `@login_required` \u2014 career_admin.py:122"}, "properties": {"repobilityId": "73c5dab62a1d59b0", "scanner": "scanner-primary", "fingerprint": "c9c3fb30cf308b5a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_admin.py"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-341045cfc8793eb1", "level": "error", "message": {"text": "Flask mutation route `admin_resend_code` without `@login_required` \u2014 career_admin.py:139"}, "properties": {"repobilityId": "209564e603a5af06", "scanner": "scanner-primary", "fingerprint": "341045cfc8793eb1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_admin.py"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-b31fe63903a4ce55", "level": "error", "message": {"text": "Flask mutation route `admin_sweep` without `@login_required` \u2014 career_admin.py:163"}, "properties": {"repobilityId": "4f2157dcb673fd99", "scanner": "scanner-primary", "fingerprint": "b31fe63903a4ce55", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_admin.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-42f0ee938c2faf66", "level": "error", "message": {"text": "Flask mutation route `admin_flags` without `@login_required` \u2014 career_admin.py:202"}, "properties": {"repobilityId": "3ebd0efdea185cb2", "scanner": "scanner-primary", "fingerprint": "42f0ee938c2faf66", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "career_admin.py"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-03383016acb815f0", "level": "error", "message": {"text": "Flask mutation route `_admin_login` without `@login_required` \u2014 admin_common.py:154"}, "properties": {"repobilityId": "ff9d22c0ded9c28f", "scanner": "scanner-primary", "fingerprint": "03383016acb815f0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin_common.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-e67ac094e23a359b", "level": "error", "message": {"text": "Flask mutation route `_admin_logout` without `@login_required` \u2014 admin_common.py:189"}, "properties": {"repobilityId": "3194b08fa6b2cb76", "scanner": "scanner-primary", "fingerprint": "e67ac094e23a359b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "admin_common.py"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-3a565a7309db99e9", "level": "error", "message": {"text": "Flask mutation route `create_cover_letter` without `@login_required` \u2014 coverletter.py:45"}, "properties": {"repobilityId": "e98d6ad74d8d5af9", "scanner": "scanner-primary", "fingerprint": "3a565a7309db99e9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-34e9a93d3ffde86f", "level": "error", "message": {"text": "Flask mutation route `create_resume_review` without `@login_required` \u2014 coverletter.py:86"}, "properties": {"repobilityId": "54a22cf9721959de", "scanner": "scanner-primary", "fingerprint": "34e9a93d3ffde86f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-72316db93c481c6f", "level": "error", "message": {"text": "Flask mutation route `generate_cover_letter` without `@login_required` \u2014 coverletter.py:130"}, "properties": {"repobilityId": "5dee1aa9bfef67a7", "scanner": "scanner-primary", "fingerprint": "72316db93c481c6f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-45abc3f192f8a7ec", "level": "error", "message": {"text": "Flask mutation route `generate_resume_review` without `@login_required` \u2014 coverletter.py:366"}, "properties": {"repobilityId": "167b1532cc7c112f", "scanner": "scanner-primary", "fingerprint": "45abc3f192f8a7ec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-ccf24882b63e7ad5", "level": "error", "message": {"text": "Flask mutation route `extend_job_access` without `@login_required` \u2014 coverletter.py:503"}, "properties": {"repobilityId": "f130629de3109b8d", "scanner": "scanner-primary", "fingerprint": "ccf24882b63e7ad5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 503}}}]}, {"ruleId": "scanner-2dcb0ad818b5289a", "level": "error", "message": {"text": "Flask mutation route `update_header` without `@login_required` \u2014 coverletter.py:531"}, "properties": {"repobilityId": "6f8b7fce52c3a816", "scanner": "scanner-primary", "fingerprint": "2dcb0ad818b5289a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 531}}}]}, {"ruleId": "scanner-a59cd87c936b5fff", "level": "error", "message": {"text": "Flask mutation route `adjust_cover_letter` without `@login_required` \u2014 coverletter.py:587"}, "properties": {"repobilityId": "f4b755390906647e", "scanner": "scanner-primary", "fingerprint": "a59cd87c936b5fff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 587}}}]}, {"ruleId": "scanner-42ec16198fffafa9", "level": "error", "message": {"text": "Flask mutation route `resend_cover_letter` without `@login_required` \u2014 coverletter.py:650"}, "properties": {"repobilityId": "5d5869746b450328", "scanner": "scanner-primary", "fingerprint": "42ec16198fffafa9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-e43fa881a08c284b", "level": "error", "message": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:711"}, "properties": {"repobilityId": "8ef4eed41f9c5beb", "scanner": "scanner-primary", "fingerprint": "e43fa881a08c284b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 711}}}]}, {"ruleId": "scanner-925c74b7b14f87cb", "level": "error", "message": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 coverletter.py:712"}, "properties": {"repobilityId": "9c980db4ea5ed517", "scanner": "scanner-primary", "fingerprint": "925c74b7b14f87cb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 712}}}]}, {"ruleId": "scanner-b8ed7eb511664915", "level": "error", "message": {"text": "Flask mutation route `checkout_coverletter` without `@login_required` \u2014 coverletter.py:873"}, "properties": {"repobilityId": "f6c1fc120ca3ad71", "scanner": "scanner-primary", "fingerprint": "b8ed7eb511664915", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 873}}}]}, {"ruleId": "scanner-81442fa5f7a3a647", "level": "error", "message": {"text": "Flask mutation route `checkout_resume` without `@login_required` \u2014 coverletter.py:894"}, "properties": {"repobilityId": "8da88449a7e1b6a1", "scanner": "scanner-primary", "fingerprint": "81442fa5f7a3a647", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 894}}}]}, {"ruleId": "scanner-3433002757319bc0", "level": "error", "message": {"text": "Flask mutation route `checkout_adjust` without `@login_required` \u2014 coverletter.py:915"}, "properties": {"repobilityId": "69a5e4057a622d9a", "scanner": "scanner-primary", "fingerprint": "3433002757319bc0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 915}}}]}, {"ruleId": "scanner-b5ba28f4b0bdfac0", "level": "error", "message": {"text": "Flask mutation route `pay_coverletter` without `@login_required` \u2014 coverletter.py:962"}, "properties": {"repobilityId": "de88b2dc15b0a65d", "scanner": "scanner-primary", "fingerprint": "b5ba28f4b0bdfac0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 962}}}]}, {"ruleId": "scanner-310a36d76554e86a", "level": "error", "message": {"text": "Flask mutation route `pay_resume` without `@login_required` \u2014 coverletter.py:992"}, "properties": {"repobilityId": "d946df7959de45f9", "scanner": "scanner-primary", "fingerprint": "310a36d76554e86a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 992}}}]}, {"ruleId": "scanner-a8c5c763137142a7", "level": "error", "message": {"text": "Flask mutation route `stripe_pi_webhook` without `@login_required` \u2014 coverletter.py:1022"}, "properties": {"repobilityId": "d77e2fd14d1a8c15", "scanner": "scanner-primary", "fingerprint": "a8c5c763137142a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "coverletter.py"}, "region": {"startLine": 1022}}}]}, {"ruleId": "scanner-4127a8e3ae07912d", "level": "error", "message": {"text": "Flask mutation route `admin_order_delete` without `@login_required` \u2014 fax_admin.py:144"}, "properties": {"repobilityId": "6ce5198e62d8d1be", "scanner": "scanner-primary", "fingerprint": "4127a8e3ae07912d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax_admin.py"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-2a83a5581c02cc9f", "level": "error", "message": {"text": "Flask mutation route `admin_sweep` without `@login_required` \u2014 fax_admin.py:175"}, "properties": {"repobilityId": "5c016c6e75a3dfca", "scanner": "scanner-primary", "fingerprint": "2a83a5581c02cc9f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax_admin.py"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-09593ec5555eddd1", "level": "error", "message": {"text": "Flask mutation route `admin_flags` without `@login_required` \u2014 fax_admin.py:227"}, "properties": {"repobilityId": "f7023c8f5f0687d6", "scanner": "scanner-primary", "fingerprint": "09593ec5555eddd1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax_admin.py"}, "region": {"startLine": 227}}}]}, {"ruleId": "scanner-f46071850a345a3e", "level": "error", "message": {"text": "Flask mutation route `fax_upload` without `@login_required` \u2014 fax.py:579"}, "properties": {"repobilityId": "770347f3b136ec53", "scanner": "scanner-primary", "fingerprint": "f46071850a345a3e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 579}}}]}, {"ruleId": "scanner-85aa6509e6717a8b", "level": "error", "message": {"text": "Flask mutation route `validate_promo` without `@login_required` \u2014 fax.py:644"}, "properties": {"repobilityId": "4eee248c63fb291f", "scanner": "scanner-primary", "fingerprint": "85aa6509e6717a8b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 644}}}]}, {"ruleId": "scanner-77758722ea80aa82", "level": "error", "message": {"text": "Flask mutation route `create_payment_intent` without `@login_required` \u2014 fax.py:690"}, "properties": {"repobilityId": "5469ca583a5d5677", "scanner": "scanner-primary", "fingerprint": "77758722ea80aa82", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 690}}}]}, {"ruleId": "scanner-e257d68098cd73cc", "level": "error", "message": {"text": "Flask mutation route `send_free` without `@login_required` \u2014 fax.py:757"}, "properties": {"repobilityId": "ab077de04a5b1271", "scanner": "scanner-primary", "fingerprint": "e257d68098cd73cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 757}}}]}, {"ruleId": "scanner-bced3eacf5c806fc", "level": "error", "message": {"text": "Flask mutation route `stripe_webhook` without `@login_required` \u2014 fax.py:828"}, "properties": {"repobilityId": "ca4ea618467489e3", "scanner": "scanner-primary", "fingerprint": "bced3eacf5c806fc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 828}}}]}, {"ruleId": "scanner-05a1f5bdc39acfa4", "level": "error", "message": {"text": "Flask mutation route `telnyx_webhook` without `@login_required` \u2014 fax.py:857"}, "properties": {"repobilityId": "bbe21f42e73b545a", "scanner": "scanner-primary", "fingerprint": "05a1f5bdc39acfa4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "fax.py"}, "region": {"startLine": 857}}}]}, {"ruleId": "scanner-5b04734258c2e22b", "level": "error", "message": {"text": "Flask mutation route `api_start_magic` without `@login_required` \u2014 _archive/social_legacy.py:815"}, "properties": {"repobilityId": "e2eca8e5a7300f50", "scanner": "scanner-primary", "fingerprint": "5b04734258c2e22b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/social_legacy.py"}, "region": {"startLine": 815}}}]}, {"ruleId": "scanner-3e4900db22f127ac", "level": "error", "message": {"text": "Flask mutation route `api_start_verify` without `@login_required` \u2014 _archive/social_legacy.py:839"}, "properties": {"repobilityId": "39a0dbd6596592ee", "scanner": "scanner-primary", "fingerprint": "3e4900db22f127ac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.flask.unauth_route"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_archive/social_legacy.py"}, "region": {"startLine": 839}}}]}, {"ruleId": "scanner-b685dde063ac2261", "level": "error", "message": {"text": "FastAPI POST `api_customer_lookup` without auth dependency \u2014 snippets/account_emails_routes.py:73"}, "properties": {"repobilityId": "e3843f82d162262e", "scanner": "scanner-primary", "fingerprint": "b685dde063ac2261", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "snippets/account_emails_routes.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-d6913303aecf0c83", "level": "error", "message": {"text": "FastAPI POST `account_emails_add` without auth dependency \u2014 snippets/account_emails_routes.py:156"}, "properties": {"repobilityId": "fa84f2c73caaa74a", "scanner": "scanner-primary", "fingerprint": "d6913303aecf0c83", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "snippets/account_emails_routes.py"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-08d4b6f3793f2ead", "level": "error", "message": {"text": "FastAPI POST `account_emails_remove` without auth dependency \u2014 snippets/account_emails_routes.py:204"}, "properties": {"repobilityId": "1622ac03aca71130", "scanner": "scanner-primary", "fingerprint": "08d4b6f3793f2ead", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "snippets/account_emails_routes.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-98356fa7ff420a14", "level": "note", "message": {"text": "Unused endpoint: ANY /admin"}, "properties": {"repobilityId": "39c51595ee3c28af", "scanner": "scanner-primary", "fingerprint": "98356fa7ff420a14", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4e22df534e3862c0", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/job/<job_id>"}, "properties": {"repobilityId": "b43f312f04d53213", "scanner": "scanner-primary", "fingerprint": "4e22df534e3862c0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d64fa3640952646a", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/job/<job_id>/delete"}, "properties": {"repobilityId": "7870fa1850375ad1", "scanner": "scanner-primary", "fingerprint": "d64fa3640952646a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2455430bbb9e9b18", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/job/<job_id>/resend_code"}, "properties": {"repobilityId": "c247efc0395acbdf", "scanner": "scanner-primary", "fingerprint": "2455430bbb9e9b18", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-09c414167a2ad33a", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/sweep"}, "properties": {"repobilityId": "1023f0fcb30b4b5c", "scanner": "scanner-primary", "fingerprint": "09c414167a2ad33a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a227d3a24b966b9", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/flags"}, "properties": {"repobilityId": "7736ae08146ae56b", "scanner": "scanner-primary", "fingerprint": "2a227d3a24b966b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68bc2ac4bf5f0856", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/logout"}, "properties": {"repobilityId": "91002da05cb0b7c1", "scanner": "scanner-primary", "fingerprint": "68bc2ac4bf5f0856", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a6d91f2236825bf", "level": "note", "message": {"text": "Unused endpoint: ANY /"}, "properties": {"repobilityId": "334408d09f12fc9e", "scanner": "scanner-primary", "fingerprint": "1a6d91f2236825bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-93ebf3f68476992c", "level": "note", "message": {"text": "Unused endpoint: ANY /clear"}, "properties": {"repobilityId": "e41457a7e7d13cf5", "scanner": "scanner-primary", "fingerprint": "93ebf3f68476992c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c7ad61ba1b23915", "level": "note", "message": {"text": "Unused endpoint: ANY /login"}, "properties": {"repobilityId": "43bc3b2f13db6e12", "scanner": "scanner-primary", "fingerprint": "4c7ad61ba1b23915", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4966519e76d5b583", "level": "note", "message": {"text": "Unused endpoint: ANY /dns-whoami/<token>"}, "properties": {"repobilityId": "d2f5296dae119ffc", "scanner": "scanner-primary", "fingerprint": "4966519e76d5b583", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5313acaa894df75f", "level": "note", "message": {"text": "Unused endpoint: ANY /dns-check"}, "properties": {"repobilityId": "0707f8c39cce2411", "scanner": "scanner-primary", "fingerprint": "5313acaa894df75f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44c7d3a14d8d8103", "level": "note", "message": {"text": "Unused endpoint: ANY /setup"}, "properties": {"repobilityId": "4dbc8da028c7583b", "scanner": "scanner-primary", "fingerprint": "44c7d3a14d8d8103", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6a22f3c25a0b75ef", "level": "note", "message": {"text": "Unused endpoint: ANY /setup/2fa-prompt"}, "properties": {"repobilityId": "cc7b6a543d8f73ca", "scanner": "scanner-primary", "fingerprint": "6a22f3c25a0b75ef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c9e449c3b9e73b73", "level": "note", "message": {"text": "Unused endpoint: ANY /logout"}, "properties": {"repobilityId": "93ca7332b0bf555c", "scanner": "scanner-primary", "fingerprint": "c9e449c3b9e73b73", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8877994083ed2902", "level": "note", "message": {"text": "Unused endpoint: ANY /dashboard"}, "properties": {"repobilityId": "19dfdb146f619b0f", "scanner": "scanner-primary", "fingerprint": "8877994083ed2902", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1b378d41cf08153c", "level": "note", "message": {"text": "Unused endpoint: ANY /api/adblock-checkout"}, "properties": {"repobilityId": "46bd35b77211bf73", "scanner": "scanner-primary", "fingerprint": "1b378d41cf08153c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cc65cb25492d1ef5", "level": "note", "message": {"text": "Unused endpoint: ANY /api/decal-request"}, "properties": {"repobilityId": "888d2372bad2fa7c", "scanner": "scanner-primary", "fingerprint": "cc65cb25492d1ef5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5f9eee7c59357c5f", "level": "note", "message": {"text": "Unused endpoint: ANY /api/sticker-checkout"}, "properties": {"repobilityId": "b19a86b57a8afbec", "scanner": "scanner-primary", "fingerprint": "5f9eee7c59357c5f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-352264d7e29d5a56", "level": "note", "message": {"text": "Unused endpoint: ANY /api/signup-stats"}, "properties": {"repobilityId": "97f1b495b8878c30", "scanner": "scanner-primary", "fingerprint": "352264d7e29d5a56", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e624f3dde04ab97", "level": "note", "message": {"text": "Unused endpoint: ANY /api/agh-status"}, "properties": {"repobilityId": "af2440ee0b79fddc", "scanner": "scanner-primary", "fingerprint": "2e624f3dde04ab97", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10f03ff1ab2da802", "level": "note", "message": {"text": "Unused endpoint: ANY /api/home-beacon"}, "properties": {"repobilityId": "70ab3210ae91e6a2", "scanner": "scanner-primary", "fingerprint": "10f03ff1ab2da802", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0aa0c723a8f34b09", "level": "note", "message": {"text": "Unused endpoint: ANY /api/home-status"}, "properties": {"repobilityId": "f26850a994c171ab", "scanner": "scanner-primary", "fingerprint": "0aa0c723a8f34b09", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a30dcc5eea8358db", "level": "note", "message": {"text": "Unused endpoint: ANY /api/dns-analytics"}, "properties": {"repobilityId": "99b31238f27ef6d6", "scanner": "scanner-primary", "fingerprint": "a30dcc5eea8358db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53bc2f88976b8f8b", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/analytics"}, "properties": {"repobilityId": "ecbbec6a48165ec0", "scanner": "scanner-primary", "fingerprint": "53bc2f88976b8f8b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9394a6c400cab17", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/links"}, "properties": {"repobilityId": "844ef8e920a8e0a8", "scanner": "scanner-primary", "fingerprint": "e9394a6c400cab17", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2a35c5f89103530", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/links"}, "properties": {"repobilityId": "09574029266a4e87", "scanner": "scanner-primary", "fingerprint": "a2a35c5f89103530", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8634d2615f32658e", "level": "note", "message": {"text": "Unused endpoint: ANY /admin/customer/<client_id>"}, "properties": {"repobilityId": "17ad7697214c396c", "scanner": "scanner-primary", "fingerprint": "8634d2615f32658e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-730243f5702f0b8a", "level": "note", "message": {"text": "Unused endpoint: ANY /settings"}, "properties": {"repobilityId": "6bb7d7b6af3e3de5", "scanner": "scanner-primary", "fingerprint": "730243f5702f0b8a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3df375a611b68342", "level": "note", "message": {"text": "Unused endpoint: ANY /settings/password"}, "properties": {"repobilityId": "00fc1f9fd916204d", "scanner": "scanner-primary", "fingerprint": "3df375a611b68342", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-06f6c4897fcb9e0a", "level": "note", "message": {"text": "Unused endpoint: ANY /settings/2fa/setup"}, "properties": {"repobilityId": "687524967844008e", "scanner": "scanner-primary", "fingerprint": "06f6c4897fcb9e0a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-174c230c92106b48", "level": "note", "message": {"text": "Unused endpoint: ANY /settings/2fa/enable"}, "properties": {"repobilityId": "da6756277e1ad910", "scanner": "scanner-primary", "fingerprint": "174c230c92106b48", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6dddf9ce6f9207dd", "level": "note", "message": {"text": "Unused endpoint: ANY /settings/2fa/disable"}, "properties": {"repobilityId": "ff39073e64c49a6d", "scanner": "scanner-primary", "fingerprint": "6dddf9ce6f9207dd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9bd4b1e5023d3d19", "level": "note", "message": {"text": "Unused endpoint: ANY /settings/data-request"}, "properties": {"repobilityId": "28dcda273468e7ad", "scanner": "scanner-primary", "fingerprint": "9bd4b1e5023d3d19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4980f50b2e0d8ef1", "level": "note", "message": {"text": "Unused endpoint: ANY /forgot"}, "properties": {"repobilityId": "8306217bf08e0de1", "scanner": "scanner-primary", "fingerprint": "4980f50b2e0d8ef1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b25df019c0de2c1d", "level": "note", "message": {"text": "Unused endpoint: ANY /reset"}, "properties": {"repobilityId": "bec9628ff3402534", "scanner": "scanner-primary", "fingerprint": "b25df019c0de2c1d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad1991f5f0cb422e", "level": "note", "message": {"text": "Unused endpoint: ANY /api/windows/send-code"}, "properties": {"repobilityId": "1e3a37fd38d188f7", "scanner": "scanner-primary", "fingerprint": "ad1991f5f0cb422e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a556c1dd39063765", "level": "note", "message": {"text": "Unused endpoint: ANY /api/windows/verify"}, "properties": {"repobilityId": "fc7e663f2603c015", "scanner": "scanner-primary", "fingerprint": "a556c1dd39063765", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1f89ea00e60603c1", "level": "note", "message": {"text": "Unused endpoint: ANY /api/weekly-email"}, "properties": {"repobilityId": "ef9e6e80acbe9169", "scanner": "scanner-primary", "fingerprint": "1f89ea00e60603c1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ff0b2e224b7aca0", "level": "note", "message": {"text": "Unused endpoint: ANY /api/profile"}, "properties": {"repobilityId": "fe95e0d706456f08", "scanner": "scanner-primary", "fingerprint": "2ff0b2e224b7aca0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b40b160852261dd2", "level": "note", "message": {"text": "Unused endpoint: ANY /api/pause"}, "properties": {"repobilityId": "e1ec68841402cd13", "scanner": "scanner-primary", "fingerprint": "b40b160852261dd2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d2043d045eac57d4", "level": "note", "message": {"text": "Unused endpoint: ANY /api/support-code"}, "properties": {"repobilityId": "f3534962862e1bcf", "scanner": "scanner-primary", "fingerprint": "d2043d045eac57d4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e6c78c526e5d4ba6", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/revoke-code"}, "properties": {"repobilityId": "358bc926aba22482", "scanner": "scanner-primary", "fingerprint": "e6c78c526e5d4ba6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8ddcd61fe1a8aa7", "level": "note", "message": {"text": "Unused endpoint: ANY /api/addon"}, "properties": {"repobilityId": "baac1b78bb5b6b0d", "scanner": "scanner-primary", "fingerprint": "c8ddcd61fe1a8aa7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa92715c0b8f1783", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/delete-customer"}, "properties": {"repobilityId": "ca9cc11aaa36d3ee", "scanner": "scanner-primary", "fingerprint": "aa92715c0b8f1783", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad87e6a5df651110", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/resend-welcome"}, "properties": {"repobilityId": "479a9512090a8d0f", "scanner": "scanner-primary", "fingerprint": "ad87e6a5df651110", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2f96de0f6298d07", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/reprovision"}, "properties": {"repobilityId": "47d32b11965af5c0", "scanner": "scanner-primary", "fingerprint": "e2f96de0f6298d07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c7b8cd4e54b58f6", "level": "note", "message": {"text": "Unused endpoint: ANY /api/admin/addon"}, "properties": {"repobilityId": "3866e16d7c83fd1f", "scanner": "scanner-primary", "fingerprint": "1c7b8cd4e54b58f6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dd011158d3aa853a", "level": "note", "message": {"text": "Unused endpoint: ANY /api/service"}, "properties": {"repobilityId": "ab46443a0a4ac8e7", "scanner": "scanner-primary", "fingerprint": "dd011158d3aa853a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aed6213c6f8b6daf", "level": "note", "message": {"text": "Unused endpoint: ANY /api/rule"}, "properties": {"repobilityId": "f9eeccb62df0826d", "scanner": "scanner-primary", "fingerprint": "aed6213c6f8b6daf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}