{"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-949f460d1982584c", "name": "Possibly dead Python function: search_multi", "shortDescription": {"text": "Possibly dead Python function: search_multi"}, "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-39c2423b62b365f4", "name": "Possibly dead Python function: clear_cache", "shortDescription": {"text": "Possibly dead Python function: clear_cache"}, "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-80dcd49c8662587c", "name": "Possibly dead Python function: discover_people", "shortDescription": {"text": "Possibly dead Python function: discover_people"}, "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-7ed5f894211e2c0a", "name": "Possibly dead Python function: as_dict", "shortDescription": {"text": "Possibly dead Python function: as_dict"}, "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-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-d914345c48b5d2d4", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/webflow_bridge_landing.html:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/webflow_bridge_landing.html:29"}, "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-caec184912c9b6fb", "name": "Very large file: integrations/instantly.py (1331 lines)", "shortDescription": {"text": "Very large file: integrations/instantly.py (1331 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-d960eb8e83b0d862", "name": "Very large file: integrations/ai_sourcing.py (2252 lines)", "shortDescription": {"text": "Very large file: integrations/ai_sourcing.py (2252 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-0d805bd4479b3e03", "name": "Very large file: partners/views.py (1282 lines)", "shortDescription": {"text": "Very large file: partners/views.py (1282 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-03c564b3ca601a05", "name": "Very large file: core/views.py (8054 lines)", "shortDescription": {"text": "Very large file: core/views.py (8054 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-3016536c7430a5e6", "name": "Very large file: core/models.py (1264 lines)", "shortDescription": {"text": "Very large file: core/models.py (1264 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-92be65dc312f9690", "name": "Very large file: core/services/sourcing.py (3127 lines)", "shortDescription": {"text": "Very large file: core/services/sourcing.py (3127 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-fa1aba18596bd1b8", "name": "Very large file: core/services/client_portal.py (3154 lines)", "shortDescription": {"text": "Very large file: core/services/client_portal.py (3154 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": "2 test file(s) for 97 source file(s) (ratio 0.02). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 59 placeholder/mock markers across 9 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests, operator-readme. 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-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "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-76e4547cfef7e0d1", "name": "Legacy-named symbol `_search_legacy` in integrations/hrsa.py:137", "shortDescription": {"text": "Legacy-named symbol `_search_legacy` in integrations/hrsa.py:137"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-192ce250e4934ef1", "name": "Commented-code block (5 lines) in integrations/instantly.py:1327", "shortDescription": {"text": "Commented-code block (5 lines) in integrations/instantly.py:1327"}, "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-41642da07832aa9d", "name": "Commented-code block (9 lines) in integrations/ai_sourcing.py:454", "shortDescription": {"text": "Commented-code block (9 lines) in integrations/ai_sourcing.py:454"}, "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-13ca4c2c558c4b38", "name": "Commented-code block (6 lines) in ai_manager/services.py:459", "shortDescription": {"text": "Commented-code block (6 lines) in ai_manager/services.py:459"}, "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-19bcdcb99180c557", "name": "Legacy-named symbol `webhook_dripify_legacy` in partners/urls.py:74", "shortDescription": {"text": "Legacy-named symbol `webhook_dripify_legacy` in partners/urls.py:74"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5b9ce1fdef31991", "name": "Commented-code block (5 lines) in partners/urls.py:37", "shortDescription": {"text": "Commented-code block (5 lines) in partners/urls.py:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4cc95f117cfe7c9f", "name": "Legacy-named symbol `webhook_dripify_legacy` in partners/views.py:1274", "shortDescription": {"text": "Legacy-named symbol `webhook_dripify_legacy` in partners/views.py:1274"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa3e9d1333ad7e59", "name": "Commented-code block (8 lines) in partners/views.py:227", "shortDescription": {"text": "Commented-code block (8 lines) in partners/views.py:227"}, "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-74cdc4d7f72b80fd", "name": "Commented-code block (6 lines) in partners/models.py:146", "shortDescription": {"text": "Commented-code block (6 lines) in partners/models.py:146"}, "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-9a002cfbbd1c5b89", "name": "Commented-code block (5 lines) in accounts/views.py:140", "shortDescription": {"text": "Commented-code block (5 lines) in accounts/views.py:140"}, "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-cda3c5d5ab820694", "name": "Commented-code block (5 lines) in core/views.py:383", "shortDescription": {"text": "Commented-code block (5 lines) in core/views.py:383"}, "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-ac2732879c64a1c4", "name": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1543", "shortDescription": {"text": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1543"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `lead.email_history.all` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-41ce55b96dba08b7", "name": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1561", "shortDescription": {"text": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1561"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `lead.project_lead.latest_reply_event` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f1d385d872f4fd4", "name": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:2122", "shortDescription": {"text": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:2122"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `ev.project_lead.lead_id` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8a1309dae8e0f93", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:2222", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:2222"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.organization_obj` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-676089626afabbc4", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:4702", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:4702"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.geography` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e5cceae29483e4cb", "name": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:4894", "shortDescription": {"text": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:4894"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `ev.project_lead.lead_id` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6981de2c916616e0", "name": "Likely N+1 query: `for b in \u2026` triggers a query per row \u2014 core/views.py:4919", "shortDescription": {"text": "Likely N+1 query: `for b in \u2026` triggers a query per row \u2014 core/views.py:4919"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `b.project_lead.campaign` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f0726d3301848faf", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5939", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5939"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.email` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1834b30380d75964", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5943", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5943"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.email_history` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f49b23836adec81a", "name": "Commented-code block (5 lines) in core/models.py:86", "shortDescription": {"text": "Commented-code block (5 lines) in core/models.py:86"}, "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-6e70279877a6a3dd", "name": "Commented-code block (6 lines) in core/forms.py:316", "shortDescription": {"text": "Commented-code block (6 lines) in core/forms.py:316"}, "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-16f827beed4b5f70", "name": "Commented-code block (5 lines) in core/utils/org.py:18", "shortDescription": {"text": "Commented-code block (5 lines) in core/utils/org.py:18"}, "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-18887d37710bc2c0", "name": "Commented-code block (6 lines) in core/management/commands/sync_instantly.py:106", "shortDescription": {"text": "Commented-code block (6 lines) in core/management/commands/sync_instantly.py:106"}, "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-5529e5c7143ebe92", "name": "Likely N+1 query: `for campaign in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:80", "shortDescription": {"text": "Likely N+1 query: `for campaign in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:80"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `campaign.project.study_code` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7bff1c2b6d936a09", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:207", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:207"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.email` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5fc449d80c9cd2d9", "name": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:211", "shortDescription": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:211"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `pl.lead.email_history` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8863df1caa0beaee", "name": "Commented-code block (6 lines) in core/services/sourcing.py:640", "shortDescription": {"text": "Commented-code block (6 lines) in core/services/sourcing.py:640"}, "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-584043403f231157", "name": "Commented-code block (9 lines) in core/services/lead_relevance.py:85", "shortDescription": {"text": "Commented-code block (9 lines) in core/services/lead_relevance.py:85"}, "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-b780b95095842fbf", "name": "Commented-code block (5 lines) in core/services/client_portal.py:113", "shortDescription": {"text": "Commented-code block (5 lines) in core/services/client_portal.py:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19c08cc214396516", "name": "Likely N+1 query: `for event in \u2026` triggers a query per row \u2014 core/services/client_portal.py:145", "shortDescription": {"text": "Likely N+1 query: `for event in \u2026` triggers a query per row \u2014 core/services/client_portal.py:145"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `event.timestamp.date` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bb92bf5a8a287200", "name": "Likely N+1 query: `for partner in \u2026` triggers a query per row \u2014 core/services/client_portal.py:1255", "shortDescription": {"text": "Likely N+1 query: `for partner in \u2026` triggers a query per row \u2014 core/services/client_portal.py:1255"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `partner.lead.organization` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4985a7922a44d563", "name": "Commented-code block (5 lines) in core/migrations/0024_partner_organization.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in core/migrations/0024_partner_organization.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c695b4e98f7e6ea1", "name": "Likely N+1 query: `for org in \u2026` triggers a query per row \u2014 core/migrations/0028_rekey_partner_organizations.py:231", "shortDescription": {"text": "Likely N+1 query: `for org in \u2026` triggers a query per row \u2014 core/migrations/0028_rekey_partner_organizations.py:231"}, "fullDescription": {"text": "The loop iterates a Django queryset and accesses `org.leads.values_list` per row, which fires an additional database query each iteration. Add `.select_related('<fk_field>')` for FK / O2O relations or `.prefetch_related('<m2m_or_reverse>')` for many-related lookups, to load everything in 1-2 queries instead of N."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-48510d12dbf676dc", "name": "Commented-code block (6 lines) in core/migrations/0029_retract_org_only_duplicate_flags.py:3", "shortDescription": {"text": "Commented-code block (6 lines) in core/migrations/0029_retract_org_only_duplicate_flags.py:3"}, "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-7283aaa90ad72a9a", "name": "Commented-code block (5 lines) in bridge/settings.py:14", "shortDescription": {"text": "Commented-code block (5 lines) in bridge/settings.py:14"}, "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-65df07ab4020db79", "name": "18 env vars used in code but missing from .env.example", "shortDescription": {"text": "18 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_DEFAULT_PROVIDER`, `BRIDGE_OUTREACH_GMAIL_FROM`, `BRIDGE_PERMANENT_SUPERUSER_EMAILS`, `CSRF_TRUSTED_ORIGINS`, `DEEPSEEK_API_KEY`, `DEEPSEEK_DEFAULT_MODEL`, `DEEPSEEK_MAX_OUTPUT_TOKENS`, `DEFAULT_FROM_EMAIL` + 10 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nai_manager/services.py:call_structured_with_web_search, ai_manager/services.py:call_structured\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-9b71276e71faaaf0", "name": "Django view `partner_landing` may be unauthenticated \u2014 partners/views.py:155", "shortDescription": {"text": "Django view `partner_landing` may be unauthenticated \u2014 partners/views.py:155"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2fea3a704f63c68e", "name": "Django view `partner_verify` may be unauthenticated \u2014 partners/views.py:426", "shortDescription": {"text": "Django view `partner_verify` may be unauthenticated \u2014 partners/views.py:426"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e77a4186d2ed5731", "name": "Django view `operator_partners` may be unauthenticated \u2014 partners/views.py:710", "shortDescription": {"text": "Django view `operator_partners` may be unauthenticated \u2014 partners/views.py:710"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-be369d58c155cfc0", "name": "Django view `operator_partner_resolve` may be unauthenticated \u2014 partners/views.py:770", "shortDescription": {"text": "Django view `operator_partner_resolve` may be unauthenticated \u2014 partners/views.py:770"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aab1327c69815da2", "name": "Django view `operator_dripify` may be unauthenticated \u2014 partners/views.py:823", "shortDescription": {"text": "Django view `operator_dripify` may be unauthenticated \u2014 partners/views.py:823"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb48396fbc8ddc74", "name": "Django view `operator_dripify_set_project` may be unauthenticated \u2014 partners/views.py:940", "shortDescription": {"text": "Django view `operator_dripify_set_project` may be unauthenticated \u2014 partners/views.py:940"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8dcbc4c0e9b37233", "name": "Django view `operator_dripify_create_mapping` may be unauthenticated \u2014 partners/views.py:955", "shortDescription": {"text": "Django view `operator_dripify_create_mapping` may be unauthenticated \u2014 partners/views.py:955"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c54490cf27640c96", "name": "Django view `operator_dripify_recompute_counters` may be unauthenticated \u2014 partners/views.py:1087", "shortDescription": {"text": "Django view `operator_dripify_recompute_counters` may be unauthenticated \u2014 partners/views.py:1087"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a1660e53dd18c0a", "name": "Django view `operator_dripify_hard_reset` may be unauthenticated \u2014 partners/views.py:1110", "shortDescription": {"text": "Django view `operator_dripify_hard_reset` may be unauthenticated \u2014 partners/views.py:1110"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1d021c60ba8bb73", "name": "Django view `operator_dripify_delete_mapping` may be unauthenticated \u2014 partners/views.py:1149", "shortDescription": {"text": "Django view `operator_dripify_delete_mapping` may be unauthenticated \u2014 partners/views.py:1149"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-34cf8ccbe30cd647", "name": "Django view `healthz` may be unauthenticated \u2014 accounts/views.py:45", "shortDescription": {"text": "Django view `healthz` may be unauthenticated \u2014 accounts/views.py:45"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa14e09cf13eb626", "name": "Django view `monday_callback` may be unauthenticated \u2014 accounts/views.py:89", "shortDescription": {"text": "Django view `monday_callback` may be unauthenticated \u2014 accounts/views.py:89"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ce259ea01ea9593e", "name": "Django view `invite_accept` may be unauthenticated \u2014 accounts/views.py:183", "shortDescription": {"text": "Django view `invite_accept` may be unauthenticated \u2014 accounts/views.py:183"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61360013817f376b", "name": "Django view `staff_invite_accept` may be unauthenticated \u2014 accounts/views.py:256", "shortDescription": {"text": "Django view `staff_invite_accept` may be unauthenticated \u2014 accounts/views.py:256"}, "fullDescription": {"text": "Function-view with `request` parameter has no `@login_required` or equivalent auth decorator within 5 lines above. If auth is enforced by middleware (`AUTHENTICATION_BACKENDS`), this is a false positive \u2014 dismiss with reason `by_design`."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af39cd8fbed677bc", "name": "Unused endpoint: ANY /partners/", "shortDescription": {"text": "Unused endpoint: ANY /partners/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/` 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-ead44ea01213519c", "name": "Unused endpoint: ANY /partners/register/", "shortDescription": {"text": "Unused endpoint: ANY /partners/register/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/register/` 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-3ada34e7bc973711", "name": "Unused endpoint: ANY /partners/login/", "shortDescription": {"text": "Unused endpoint: ANY /partners/login/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/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-368e260eddf82387", "name": "Unused endpoint: ANY /partners/logout/", "shortDescription": {"text": "Unused endpoint: ANY /partners/logout/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/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-558c6f741ea9f00f", "name": "Unused endpoint: ANY /partners/verify/<str:token>/", "shortDescription": {"text": "Unused endpoint: ANY /partners/verify/<str:token>/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/verify/<str: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-f78234453a1944e4", "name": "Unused endpoint: ANY /partners/dashboard/", "shortDescription": {"text": "Unused endpoint: ANY /partners/dashboard/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/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-89fc21512fe3398a", "name": "Unused endpoint: ANY /partners/studies/<str:study_code>/", "shortDescription": {"text": "Unused endpoint: ANY /partners/studies/<str:study_code>/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/studies/<str:study_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-627330dc5d31b4e1", "name": "Unused endpoint: ANY /partners/studies/<str:study_code>/refer/", "shortDescription": {"text": "Unused endpoint: ANY /partners/studies/<str:study_code>/refer/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/studies/<str:study_code>/refer/` 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-f35390b09858f7da", "name": "Unused endpoint: ANY /partners/admin/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/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-a879d4d29b931078", "name": "Unused endpoint: ANY /partners/admin/<int:partner_id>/resolve/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/<int:partner_id>/resolve/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/<int:partner_id>/resolve/` 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-e3ffd4e5c07625b4", "name": "Unused endpoint: ANY /partners/admin/dripify/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/` 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-3f8f3d754ca7a413", "name": "Unused endpoint: ANY /partners/admin/dripify/create/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/create/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/create/` 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-d1204de668e92ee3", "name": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/set-project/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/set-project/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/<int:mapping_id>/set-project/` 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-606e980b0f169769", "name": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/delete/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/delete/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/<int:mapping_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-1802198031bd62c6", "name": "Unused endpoint: ANY /partners/admin/dripify/wipe-test-data/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/wipe-test-data/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/wipe-test-data/` 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-11dbae8b8e5430c8", "name": "Unused endpoint: ANY /partners/admin/dripify/recompute-counters/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/recompute-counters/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/recompute-counters/` 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-2ccc8fc74328ecc8", "name": "Unused endpoint: ANY /partners/admin/dripify/hard-reset/", "shortDescription": {"text": "Unused endpoint: ANY /partners/admin/dripify/hard-reset/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /partners/admin/dripify/hard-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-da484afdcdf05f85", "name": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/m/<str:slug>/", "shortDescription": {"text": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/m/<str:slug>/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /api/webhooks/dripify/<str:secret>/m/<str:slug>/` 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-de1e69dc1f4ade6b", "name": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/", "shortDescription": {"text": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /api/webhooks/dripify/<str:secret>/` 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-a6959a8d416fc1b1", "name": "Unused endpoint: ANY /api/webhooks/dripify/", "shortDescription": {"text": "Unused endpoint: ANY /api/webhooks/dripify/"}, "fullDescription": {"text": "`partners/urls.py` declares `ANY /api/webhooks/dripify/` 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": "`accounts/urls.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-9a206358c19dbec1", "name": "Unused endpoint: ANY /oauth/login/", "shortDescription": {"text": "Unused endpoint: ANY /oauth/login/"}, "fullDescription": {"text": "`accounts/urls.py` declares `ANY /oauth/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-8447d9bee5046e66", "name": "Unused endpoint: ANY /oauth/callback/", "shortDescription": {"text": "Unused endpoint: ANY /oauth/callback/"}, "fullDescription": {"text": "`accounts/urls.py` declares `ANY /oauth/callback/` 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-be369c41a2c4f445", "name": "Unused endpoint: ANY /logout/", "shortDescription": {"text": "Unused endpoint: ANY /logout/"}, "fullDescription": {"text": "`accounts/urls.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-b62004179c07b878", "name": "Unused endpoint: ANY /invite/<str:token>/", "shortDescription": {"text": "Unused endpoint: ANY /invite/<str:token>/"}, "fullDescription": {"text": "`accounts/urls.py` declares `ANY /invite/<str: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-c71db8eafbf262e4", "name": "Unused endpoint: ANY /staff-invite/<str:token>/", "shortDescription": {"text": "Unused endpoint: ANY /staff-invite/<str:token>/"}, "fullDescription": {"text": "`accounts/urls.py` declares `ANY /staff-invite/<str: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-742bb54617573d9c", "name": "Unused endpoint: ANY /dashboard/", "shortDescription": {"text": "Unused endpoint: ANY /dashboard/"}, "fullDescription": {"text": "`core/urls.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-e6fc7a93f77e21de", "name": "Unused endpoint: ANY /orgs/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/` 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-2031b6089213b2e1", "name": "Unused endpoint: ANY /orgs/<int:org_id>/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_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-a17c8fff3d2c94e8", "name": "Unused endpoint: ANY /orgs/<int:org_id>/recompute/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/recompute/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_id>/recompute/` 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-066016c60524a544", "name": "Unused endpoint: ANY /orgs/<int:org_id>/state/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/state/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_id>/state/` 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-7be1aab6bbfa3c51", "name": "Unused endpoint: ANY /orgs/<int:org_id>/notes/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/notes/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_id>/notes/` 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-e896467dd91b8ee3", "name": "Unused endpoint: ANY /orgs/<int:org_id>/domain/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/domain/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_id>/domain/` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-574a5d8cf7521232", "name": "Unused endpoint: ANY /orgs/<int:org_id>/domain/recompute/", "shortDescription": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/domain/recompute/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /orgs/<int:org_id>/domain/recompute/` 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-46cf19fa087a7aca", "name": "Unused endpoint: ANY /project-leads/<int:project_lead_id>/log-interaction/", "shortDescription": {"text": "Unused endpoint: ANY /project-leads/<int:project_lead_id>/log-interaction/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /project-leads/<int:project_lead_id>/log-interaction/` 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-aa374d664d762b46", "name": "Unused endpoint: ANY /api/projects/<int:project_id>/leads/<int:lead_id>/remove/", "shortDescription": {"text": "Unused endpoint: ANY /api/projects/<int:project_id>/leads/<int:lead_id>/remove/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /api/projects/<int:project_id>/leads/<int:lead_id>/remove/` 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-edc1320cd08c3c19", "name": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_id>/cleanup/` 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-c07b8aceae8bbe64", "name": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/action/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/action/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_id>/cleanup/action/` 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-90ffde5c0f652ad5", "name": "Unused endpoint: ANY /projects/<int:project_id>/orgs/<int:org_id>/sourcing/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/orgs/<int:org_id>/sourcing/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_id>/orgs/<int:org_id>/sourcing/` 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-67339857c3562c27", "name": "Unused endpoint: ANY /dashboard/ai/", "shortDescription": {"text": "Unused endpoint: ANY /dashboard/ai/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /dashboard/ai/` 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-0eb021dc4f1a1854", "name": "Unused endpoint: ANY /portal/", "shortDescription": {"text": "Unused endpoint: ANY /portal/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /portal/` 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-9c2d2dec85ff1485", "name": "Unused endpoint: ANY /portal/ai/", "shortDescription": {"text": "Unused endpoint: ANY /portal/ai/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /portal/ai/` 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-91cebff118e0c955", "name": "Unused endpoint: ANY /projects/new/", "shortDescription": {"text": "Unused endpoint: ANY /projects/new/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/new/` 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-0589b47af64d65b7", "name": "Unused endpoint: ANY /projects/<int:project_id>/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_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-cd8ac7e621ca2525", "name": "Unused endpoint: ANY /projects/<int:project_id>/ai/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/ai/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_id>/ai/` 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-450742fc7f3d3678", "name": "Unused endpoint: ANY /portal/projects/<int:project_id>/", "shortDescription": {"text": "Unused endpoint: ANY /portal/projects/<int:project_id>/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /portal/projects/<int:project_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-5d3b9761b03f44f9", "name": "Unused endpoint: ANY /portal/projects/<int:project_id>/ai/", "shortDescription": {"text": "Unused endpoint: ANY /portal/projects/<int:project_id>/ai/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /portal/projects/<int:project_id>/ai/` 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-fcf317d10b7f281c", "name": "Unused endpoint: ANY /bridge/staff/invite/", "shortDescription": {"text": "Unused endpoint: ANY /bridge/staff/invite/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /bridge/staff/invite/` 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-743d7cefcb10a3b3", "name": "Unused endpoint: ANY /bridge/staff/invites/<int:invite_id>/revoke/", "shortDescription": {"text": "Unused endpoint: ANY /bridge/staff/invites/<int:invite_id>/revoke/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /bridge/staff/invites/<int:invite_id>/revoke/` 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-4c951c3995d8839f", "name": "Unused endpoint: ANY /projects/<int:project_id>/assets/", "shortDescription": {"text": "Unused endpoint: ANY /projects/<int:project_id>/assets/"}, "fullDescription": {"text": "`core/urls.py` declares `ANY /projects/<int:project_id>/assets/` 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/20451"}, "properties": {"repository": "Sue-Ann-CliniContact/cc_bridge", "repoUrl": "https://github.com/Sue-Ann-CliniContact/cc_bridge", "branch": "main"}, "results": [{"ruleId": "scanner-949f460d1982584c", "level": "note", "message": {"text": "Possibly dead Python function: search_multi"}, "properties": {"repobilityId": "28afc270c0763c48", "scanner": "scanner-primary", "fingerprint": "949f460d1982584c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "integrations/npi.py:102"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39c2423b62b365f4", "level": "note", "message": {"text": "Possibly dead Python function: clear_cache"}, "properties": {"repobilityId": "089acf3efecdf10a", "scanner": "scanner-primary", "fingerprint": "39c2423b62b365f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "integrations/census.py:102"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-80dcd49c8662587c", "level": "note", "message": {"text": "Possibly dead Python function: discover_people"}, "properties": {"repobilityId": "4095e54a23afb3e5", "scanner": "scanner-primary", "fingerprint": "80dcd49c8662587c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "integrations/apollo.py:250"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7ed5f894211e2c0a", "level": "note", "message": {"text": "Possibly dead Python function: as_dict"}, "properties": {"repobilityId": "69f3c90a88921b5d", "scanner": "scanner-primary", "fingerprint": "7ed5f894211e2c0a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/services/sourcing.py:150"}, "region": {"startLine": 1}}}]}, {"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-d914345c48b5d2d4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/webflow_bridge_landing.html:29"}, "properties": {"repobilityId": "06caff5b5d438a71", "scanner": "scanner-primary", "fingerprint": "d914345c48b5d2d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/webflow_bridge_landing.html"}, "region": {"startLine": 29}}}]}, {"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-caec184912c9b6fb", "level": "note", "message": {"text": "Very large file: integrations/instantly.py (1331 lines)"}, "properties": {"repobilityId": "37a1ec6bd05a52d6", "scanner": "scanner-primary", "fingerprint": "caec184912c9b6fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d960eb8e83b0d862", "level": "note", "message": {"text": "Very large file: integrations/ai_sourcing.py (2252 lines)"}, "properties": {"repobilityId": "ef2a767e3dee621b", "scanner": "scanner-primary", "fingerprint": "d960eb8e83b0d862", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0d805bd4479b3e03", "level": "note", "message": {"text": "Very large file: partners/views.py (1282 lines)"}, "properties": {"repobilityId": "9096fecce9432c6e", "scanner": "scanner-primary", "fingerprint": "0d805bd4479b3e03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-03c564b3ca601a05", "level": "note", "message": {"text": "Very large file: core/views.py (8054 lines)"}, "properties": {"repobilityId": "0b1f8b0114a269b0", "scanner": "scanner-primary", "fingerprint": "03c564b3ca601a05", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3016536c7430a5e6", "level": "note", "message": {"text": "Very large file: core/models.py (1264 lines)"}, "properties": {"repobilityId": "a8be2b08d6fe7ef4", "scanner": "scanner-primary", "fingerprint": "3016536c7430a5e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-92be65dc312f9690", "level": "note", "message": {"text": "Very large file: core/services/sourcing.py (3127 lines)"}, "properties": {"repobilityId": "4115e0d333049a15", "scanner": "scanner-primary", "fingerprint": "92be65dc312f9690", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa1aba18596bd1b8", "level": "note", "message": {"text": "Very large file: core/services/client_portal.py (3154 lines)"}, "properties": {"repobilityId": "aa9351b30177c839", "scanner": "scanner-primary", "fingerprint": "fa1aba18596bd1b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "bab8bdc8c2875c93", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "0a9c7938e801770d", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "baa4a9df8a6a58aa", "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": "2bb25e4c646d0f7c", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "753280f29b4c19c2", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "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": "9e753bb19c6276ce", "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": "3a02507484cf6d81", "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": "68ff5a6f74ed8993", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76e4547cfef7e0d1", "level": "note", "message": {"text": "Legacy-named symbol `_search_legacy` in integrations/hrsa.py:137"}, "properties": {"repobilityId": "47c6a05ce3a5a62f", "scanner": "scanner-primary", "fingerprint": "76e4547cfef7e0d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-192ce250e4934ef1", "level": "none", "message": {"text": "Commented-code block (5 lines) in integrations/instantly.py:1327"}, "properties": {"repobilityId": "c58fcd810120fa5e", "scanner": "scanner-primary", "fingerprint": "192ce250e4934ef1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41642da07832aa9d", "level": "none", "message": {"text": "Commented-code block (9 lines) in integrations/ai_sourcing.py:454"}, "properties": {"repobilityId": "e4b9a239a842015c", "scanner": "scanner-primary", "fingerprint": "41642da07832aa9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13ca4c2c558c4b38", "level": "none", "message": {"text": "Commented-code block (6 lines) in ai_manager/services.py:459"}, "properties": {"repobilityId": "31922cab9a0326f7", "scanner": "scanner-primary", "fingerprint": "13ca4c2c558c4b38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19bcdcb99180c557", "level": "note", "message": {"text": "Legacy-named symbol `webhook_dripify_legacy` in partners/urls.py:74"}, "properties": {"repobilityId": "f23bd89b6769ff4c", "scanner": "scanner-primary", "fingerprint": "19bcdcb99180c557", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d5b9ce1fdef31991", "level": "none", "message": {"text": "Commented-code block (5 lines) in partners/urls.py:37"}, "properties": {"repobilityId": "936b03d850232fc7", "scanner": "scanner-primary", "fingerprint": "d5b9ce1fdef31991", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cc95f117cfe7c9f", "level": "note", "message": {"text": "Legacy-named symbol `webhook_dripify_legacy` in partners/views.py:1274"}, "properties": {"repobilityId": "7521f5cac6695c3f", "scanner": "scanner-primary", "fingerprint": "4cc95f117cfe7c9f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fa3e9d1333ad7e59", "level": "none", "message": {"text": "Commented-code block (8 lines) in partners/views.py:227"}, "properties": {"repobilityId": "e39a658576b43039", "scanner": "scanner-primary", "fingerprint": "fa3e9d1333ad7e59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74cdc4d7f72b80fd", "level": "none", "message": {"text": "Commented-code block (6 lines) in partners/models.py:146"}, "properties": {"repobilityId": "e1f25da5c08f847d", "scanner": "scanner-primary", "fingerprint": "74cdc4d7f72b80fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a002cfbbd1c5b89", "level": "none", "message": {"text": "Commented-code block (5 lines) in accounts/views.py:140"}, "properties": {"repobilityId": "d5d9bd4c31fb03b3", "scanner": "scanner-primary", "fingerprint": "9a002cfbbd1c5b89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cda3c5d5ab820694", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/views.py:383"}, "properties": {"repobilityId": "c7098f217696cbf1", "scanner": "scanner-primary", "fingerprint": "cda3c5d5ab820694", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac2732879c64a1c4", "level": "warning", "message": {"text": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1543"}, "properties": {"repobilityId": "1b127de474bc7ee0", "scanner": "scanner-primary", "fingerprint": "ac2732879c64a1c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 1543}}}]}, {"ruleId": "scanner-41ce55b96dba08b7", "level": "warning", "message": {"text": "Likely N+1 query: `for lead in \u2026` triggers a query per row \u2014 core/views.py:1561"}, "properties": {"repobilityId": "af58faffa1510639", "scanner": "scanner-primary", "fingerprint": "41ce55b96dba08b7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 1561}}}]}, {"ruleId": "scanner-7f1d385d872f4fd4", "level": "warning", "message": {"text": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:2122"}, "properties": {"repobilityId": "2f86f3daa4c2e08d", "scanner": "scanner-primary", "fingerprint": "7f1d385d872f4fd4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 2122}}}]}, {"ruleId": "scanner-a8a1309dae8e0f93", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:2222"}, "properties": {"repobilityId": "4c12979cccbbce79", "scanner": "scanner-primary", "fingerprint": "a8a1309dae8e0f93", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 2222}}}]}, {"ruleId": "scanner-676089626afabbc4", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:4702"}, "properties": {"repobilityId": "05810751ba4790d9", "scanner": "scanner-primary", "fingerprint": "676089626afabbc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 4702}}}]}, {"ruleId": "scanner-e5cceae29483e4cb", "level": "warning", "message": {"text": "Likely N+1 query: `for ev in \u2026` triggers a query per row \u2014 core/views.py:4894"}, "properties": {"repobilityId": "4f1c3c8f9e4eaa40", "scanner": "scanner-primary", "fingerprint": "e5cceae29483e4cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 4894}}}]}, {"ruleId": "scanner-6981de2c916616e0", "level": "warning", "message": {"text": "Likely N+1 query: `for b in \u2026` triggers a query per row \u2014 core/views.py:4919"}, "properties": {"repobilityId": "a8ed9b663f11dcaa", "scanner": "scanner-primary", "fingerprint": "6981de2c916616e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 4919}}}]}, {"ruleId": "scanner-f0726d3301848faf", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5939"}, "properties": {"repobilityId": "e21fb43f9caa9364", "scanner": "scanner-primary", "fingerprint": "f0726d3301848faf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 5939}}}]}, {"ruleId": "scanner-1834b30380d75964", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/views.py:5943"}, "properties": {"repobilityId": "2391e31a8db8cc5b", "scanner": "scanner-primary", "fingerprint": "1834b30380d75964", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/views.py"}, "region": {"startLine": 5943}}}]}, {"ruleId": "scanner-f49b23836adec81a", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/models.py:86"}, "properties": {"repobilityId": "d21d520232cea090", "scanner": "scanner-primary", "fingerprint": "f49b23836adec81a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e70279877a6a3dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/forms.py:316"}, "properties": {"repobilityId": "587e753b1b98d56f", "scanner": "scanner-primary", "fingerprint": "6e70279877a6a3dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16f827beed4b5f70", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/utils/org.py:18"}, "properties": {"repobilityId": "272ec6a968b17e0c", "scanner": "scanner-primary", "fingerprint": "16f827beed4b5f70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18887d37710bc2c0", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/management/commands/sync_instantly.py:106"}, "properties": {"repobilityId": "d81ee937ccae6ade", "scanner": "scanner-primary", "fingerprint": "18887d37710bc2c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5529e5c7143ebe92", "level": "warning", "message": {"text": "Likely N+1 query: `for campaign in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:80"}, "properties": {"repobilityId": "4daa7811108eb04d", "scanner": "scanner-primary", "fingerprint": "5529e5c7143ebe92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/management/commands/sync_instantly.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-7bff1c2b6d936a09", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:207"}, "properties": {"repobilityId": "949ceace337dfc17", "scanner": "scanner-primary", "fingerprint": "7bff1c2b6d936a09", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/management/commands/sync_instantly.py"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-5fc449d80c9cd2d9", "level": "warning", "message": {"text": "Likely N+1 query: `for pl in \u2026` triggers a query per row \u2014 core/management/commands/sync_instantly.py:211"}, "properties": {"repobilityId": "5c00d30c4209ef9f", "scanner": "scanner-primary", "fingerprint": "5fc449d80c9cd2d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/management/commands/sync_instantly.py"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-8863df1caa0beaee", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/services/sourcing.py:640"}, "properties": {"repobilityId": "a61e1250af7fab5d", "scanner": "scanner-primary", "fingerprint": "8863df1caa0beaee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-584043403f231157", "level": "none", "message": {"text": "Commented-code block (9 lines) in core/services/lead_relevance.py:85"}, "properties": {"repobilityId": "26b8b648aded5438", "scanner": "scanner-primary", "fingerprint": "584043403f231157", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b780b95095842fbf", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/services/client_portal.py:113"}, "properties": {"repobilityId": "67bf2dd724af7207", "scanner": "scanner-primary", "fingerprint": "b780b95095842fbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19c08cc214396516", "level": "warning", "message": {"text": "Likely N+1 query: `for event in \u2026` triggers a query per row \u2014 core/services/client_portal.py:145"}, "properties": {"repobilityId": "5f7bebde187f56da", "scanner": "scanner-primary", "fingerprint": "19c08cc214396516", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/services/client_portal.py"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-bb92bf5a8a287200", "level": "warning", "message": {"text": "Likely N+1 query: `for partner in \u2026` triggers a query per row \u2014 core/services/client_portal.py:1255"}, "properties": {"repobilityId": "b28c79e1370da456", "scanner": "scanner-primary", "fingerprint": "bb92bf5a8a287200", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/services/client_portal.py"}, "region": {"startLine": 1255}}}]}, {"ruleId": "scanner-4985a7922a44d563", "level": "none", "message": {"text": "Commented-code block (5 lines) in core/migrations/0024_partner_organization.py:23"}, "properties": {"repobilityId": "f1beb8ceb9c77a05", "scanner": "scanner-primary", "fingerprint": "4985a7922a44d563", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c695b4e98f7e6ea1", "level": "warning", "message": {"text": "Likely N+1 query: `for org in \u2026` triggers a query per row \u2014 core/migrations/0028_rekey_partner_organizations.py:231"}, "properties": {"repobilityId": "8d6c386e9c67cc13", "scanner": "scanner-primary", "fingerprint": "c695b4e98f7e6ea1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "n-plus-one", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "core/migrations/0028_rekey_partner_organizations.py"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-48510d12dbf676dc", "level": "none", "message": {"text": "Commented-code block (6 lines) in core/migrations/0029_retract_org_only_duplicate_flags.py:3"}, "properties": {"repobilityId": "1aa9e0befd003f98", "scanner": "scanner-primary", "fingerprint": "48510d12dbf676dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7283aaa90ad72a9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in bridge/settings.py:14"}, "properties": {"repobilityId": "3531b2869c3fc23b", "scanner": "scanner-primary", "fingerprint": "7283aaa90ad72a9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65df07ab4020db79", "level": "note", "message": {"text": "18 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5e334d56f52c02e1", "scanner": "scanner-primary", "fingerprint": "65df07ab4020db79", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "690495cb88877236", "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": "b7edd6b1273f47c5", "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": "931e2405fbceb90d", "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": "c6855adda41a33e7", "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": "293831c4a3e6d287", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-9b71276e71faaaf0", "level": "warning", "message": {"text": "Django view `partner_landing` may be unauthenticated \u2014 partners/views.py:155"}, "properties": {"repobilityId": "27cee7c88dc921b2", "scanner": "scanner-primary", "fingerprint": "9b71276e71faaaf0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-2fea3a704f63c68e", "level": "warning", "message": {"text": "Django view `partner_verify` may be unauthenticated \u2014 partners/views.py:426"}, "properties": {"repobilityId": "139fa4348755e386", "scanner": "scanner-primary", "fingerprint": "2fea3a704f63c68e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 426}}}]}, {"ruleId": "scanner-e77a4186d2ed5731", "level": "warning", "message": {"text": "Django view `operator_partners` may be unauthenticated \u2014 partners/views.py:710"}, "properties": {"repobilityId": "30085ee0fa906788", "scanner": "scanner-primary", "fingerprint": "e77a4186d2ed5731", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 710}}}]}, {"ruleId": "scanner-be369d58c155cfc0", "level": "warning", "message": {"text": "Django view `operator_partner_resolve` may be unauthenticated \u2014 partners/views.py:770"}, "properties": {"repobilityId": "4eb833eb660e0b37", "scanner": "scanner-primary", "fingerprint": "be369d58c155cfc0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 770}}}]}, {"ruleId": "scanner-aab1327c69815da2", "level": "warning", "message": {"text": "Django view `operator_dripify` may be unauthenticated \u2014 partners/views.py:823"}, "properties": {"repobilityId": "4d974dea9e44cd95", "scanner": "scanner-primary", "fingerprint": "aab1327c69815da2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 823}}}]}, {"ruleId": "scanner-cb48396fbc8ddc74", "level": "warning", "message": {"text": "Django view `operator_dripify_set_project` may be unauthenticated \u2014 partners/views.py:940"}, "properties": {"repobilityId": "d1e24ee13963cf0f", "scanner": "scanner-primary", "fingerprint": "cb48396fbc8ddc74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 940}}}]}, {"ruleId": "scanner-8dcbc4c0e9b37233", "level": "warning", "message": {"text": "Django view `operator_dripify_create_mapping` may be unauthenticated \u2014 partners/views.py:955"}, "properties": {"repobilityId": "5830ceeec82180c2", "scanner": "scanner-primary", "fingerprint": "8dcbc4c0e9b37233", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 955}}}]}, {"ruleId": "scanner-c54490cf27640c96", "level": "warning", "message": {"text": "Django view `operator_dripify_recompute_counters` may be unauthenticated \u2014 partners/views.py:1087"}, "properties": {"repobilityId": "b85d78f8b5581215", "scanner": "scanner-primary", "fingerprint": "c54490cf27640c96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 1087}}}]}, {"ruleId": "scanner-1a1660e53dd18c0a", "level": "warning", "message": {"text": "Django view `operator_dripify_hard_reset` may be unauthenticated \u2014 partners/views.py:1110"}, "properties": {"repobilityId": "d15c7eab3d1a6bb7", "scanner": "scanner-primary", "fingerprint": "1a1660e53dd18c0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 1110}}}]}, {"ruleId": "scanner-d1d021c60ba8bb73", "level": "warning", "message": {"text": "Django view `operator_dripify_delete_mapping` may be unauthenticated \u2014 partners/views.py:1149"}, "properties": {"repobilityId": "1a1fff6a81b7f3d2", "scanner": "scanner-primary", "fingerprint": "d1d021c60ba8bb73", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "partners/views.py"}, "region": {"startLine": 1149}}}]}, {"ruleId": "scanner-34cf8ccbe30cd647", "level": "warning", "message": {"text": "Django view `healthz` may be unauthenticated \u2014 accounts/views.py:45"}, "properties": {"repobilityId": "2bfaa1616237feb8", "scanner": "scanner-primary", "fingerprint": "34cf8ccbe30cd647", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "accounts/views.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-aa14e09cf13eb626", "level": "warning", "message": {"text": "Django view `monday_callback` may be unauthenticated \u2014 accounts/views.py:89"}, "properties": {"repobilityId": "5c06daa954703bfa", "scanner": "scanner-primary", "fingerprint": "aa14e09cf13eb626", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "accounts/views.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-ce259ea01ea9593e", "level": "warning", "message": {"text": "Django view `invite_accept` may be unauthenticated \u2014 accounts/views.py:183"}, "properties": {"repobilityId": "0cee632f947347c3", "scanner": "scanner-primary", "fingerprint": "ce259ea01ea9593e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "accounts/views.py"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-61360013817f376b", "level": "warning", "message": {"text": "Django view `staff_invite_accept` may be unauthenticated \u2014 accounts/views.py:256"}, "properties": {"repobilityId": "2e0504cb3e45f81c", "scanner": "scanner-primary", "fingerprint": "61360013817f376b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "accounts/views.py"}, "region": {"startLine": 256}}}]}, {"ruleId": "scanner-af39cd8fbed677bc", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/"}, "properties": {"repobilityId": "2f4727c1960d6133", "scanner": "scanner-primary", "fingerprint": "af39cd8fbed677bc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ead44ea01213519c", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/register/"}, "properties": {"repobilityId": "0d312b5aa413a674", "scanner": "scanner-primary", "fingerprint": "ead44ea01213519c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3ada34e7bc973711", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/login/"}, "properties": {"repobilityId": "6cf1b38522da1dd8", "scanner": "scanner-primary", "fingerprint": "3ada34e7bc973711", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-368e260eddf82387", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/logout/"}, "properties": {"repobilityId": "cdadf0b7666940ee", "scanner": "scanner-primary", "fingerprint": "368e260eddf82387", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-558c6f741ea9f00f", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/verify/<str:token>/"}, "properties": {"repobilityId": "8b15c8687efcc0e3", "scanner": "scanner-primary", "fingerprint": "558c6f741ea9f00f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f78234453a1944e4", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/dashboard/"}, "properties": {"repobilityId": "5ab74acfc85ac38a", "scanner": "scanner-primary", "fingerprint": "f78234453a1944e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-89fc21512fe3398a", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/studies/<str:study_code>/"}, "properties": {"repobilityId": "52df44316b540b70", "scanner": "scanner-primary", "fingerprint": "89fc21512fe3398a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-627330dc5d31b4e1", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/studies/<str:study_code>/refer/"}, "properties": {"repobilityId": "dddd775a7ff28261", "scanner": "scanner-primary", "fingerprint": "627330dc5d31b4e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f35390b09858f7da", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/"}, "properties": {"repobilityId": "6b0b663c0945e495", "scanner": "scanner-primary", "fingerprint": "f35390b09858f7da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a879d4d29b931078", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/<int:partner_id>/resolve/"}, "properties": {"repobilityId": "88fe95825267ddc4", "scanner": "scanner-primary", "fingerprint": "a879d4d29b931078", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3ffd4e5c07625b4", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/"}, "properties": {"repobilityId": "f305173f6732bd31", "scanner": "scanner-primary", "fingerprint": "e3ffd4e5c07625b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3f8f3d754ca7a413", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/create/"}, "properties": {"repobilityId": "8215a27c23f6e057", "scanner": "scanner-primary", "fingerprint": "3f8f3d754ca7a413", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d1204de668e92ee3", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/set-project/"}, "properties": {"repobilityId": "a16f841393cd3abf", "scanner": "scanner-primary", "fingerprint": "d1204de668e92ee3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-606e980b0f169769", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/<int:mapping_id>/delete/"}, "properties": {"repobilityId": "fa88f2ddc87e3a29", "scanner": "scanner-primary", "fingerprint": "606e980b0f169769", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1802198031bd62c6", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/wipe-test-data/"}, "properties": {"repobilityId": "b016809ff6a4c63a", "scanner": "scanner-primary", "fingerprint": "1802198031bd62c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-11dbae8b8e5430c8", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/recompute-counters/"}, "properties": {"repobilityId": "205668e0995a9907", "scanner": "scanner-primary", "fingerprint": "11dbae8b8e5430c8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ccc8fc74328ecc8", "level": "note", "message": {"text": "Unused endpoint: ANY /partners/admin/dripify/hard-reset/"}, "properties": {"repobilityId": "abed2c34859ddfb5", "scanner": "scanner-primary", "fingerprint": "2ccc8fc74328ecc8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-da484afdcdf05f85", "level": "note", "message": {"text": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/m/<str:slug>/"}, "properties": {"repobilityId": "b79d6a5e7827d8c5", "scanner": "scanner-primary", "fingerprint": "da484afdcdf05f85", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de1e69dc1f4ade6b", "level": "note", "message": {"text": "Unused endpoint: ANY /api/webhooks/dripify/<str:secret>/"}, "properties": {"repobilityId": "5073c4320467bcf6", "scanner": "scanner-primary", "fingerprint": "de1e69dc1f4ade6b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6959a8d416fc1b1", "level": "note", "message": {"text": "Unused endpoint: ANY /api/webhooks/dripify/"}, "properties": {"repobilityId": "521eff2dac574266", "scanner": "scanner-primary", "fingerprint": "a6959a8d416fc1b1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a6d91f2236825bf", "level": "note", "message": {"text": "Unused endpoint: ANY /"}, "properties": {"repobilityId": "027a2f51f17218c0", "scanner": "scanner-primary", "fingerprint": "1a6d91f2236825bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a206358c19dbec1", "level": "note", "message": {"text": "Unused endpoint: ANY /oauth/login/"}, "properties": {"repobilityId": "2f3f96bb9e83baa2", "scanner": "scanner-primary", "fingerprint": "9a206358c19dbec1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8447d9bee5046e66", "level": "note", "message": {"text": "Unused endpoint: ANY /oauth/callback/"}, "properties": {"repobilityId": "13e3aeddd2405044", "scanner": "scanner-primary", "fingerprint": "8447d9bee5046e66", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be369c41a2c4f445", "level": "note", "message": {"text": "Unused endpoint: ANY /logout/"}, "properties": {"repobilityId": "e6c0ad8ee21beca8", "scanner": "scanner-primary", "fingerprint": "be369c41a2c4f445", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b62004179c07b878", "level": "note", "message": {"text": "Unused endpoint: ANY /invite/<str:token>/"}, "properties": {"repobilityId": "ee5765d4031aac3d", "scanner": "scanner-primary", "fingerprint": "b62004179c07b878", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c71db8eafbf262e4", "level": "note", "message": {"text": "Unused endpoint: ANY /staff-invite/<str:token>/"}, "properties": {"repobilityId": "bbefde5a60975649", "scanner": "scanner-primary", "fingerprint": "c71db8eafbf262e4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-742bb54617573d9c", "level": "note", "message": {"text": "Unused endpoint: ANY /dashboard/"}, "properties": {"repobilityId": "45115db75222ae1b", "scanner": "scanner-primary", "fingerprint": "742bb54617573d9c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e6fc7a93f77e21de", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/"}, "properties": {"repobilityId": "a5d0c247d2347802", "scanner": "scanner-primary", "fingerprint": "e6fc7a93f77e21de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2031b6089213b2e1", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/"}, "properties": {"repobilityId": "0b34c1bc4ee16d90", "scanner": "scanner-primary", "fingerprint": "2031b6089213b2e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a17c8fff3d2c94e8", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/recompute/"}, "properties": {"repobilityId": "2a77cb9a119a7b58", "scanner": "scanner-primary", "fingerprint": "a17c8fff3d2c94e8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-066016c60524a544", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/state/"}, "properties": {"repobilityId": "02351e970159c729", "scanner": "scanner-primary", "fingerprint": "066016c60524a544", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7be1aab6bbfa3c51", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/notes/"}, "properties": {"repobilityId": "90146fb533162604", "scanner": "scanner-primary", "fingerprint": "7be1aab6bbfa3c51", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e896467dd91b8ee3", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/domain/"}, "properties": {"repobilityId": "e3e22e265d646022", "scanner": "scanner-primary", "fingerprint": "e896467dd91b8ee3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-574a5d8cf7521232", "level": "note", "message": {"text": "Unused endpoint: ANY /orgs/<int:org_id>/domain/recompute/"}, "properties": {"repobilityId": "359c2a7209619bb6", "scanner": "scanner-primary", "fingerprint": "574a5d8cf7521232", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-46cf19fa087a7aca", "level": "note", "message": {"text": "Unused endpoint: ANY /project-leads/<int:project_lead_id>/log-interaction/"}, "properties": {"repobilityId": "bbbc9c8535f02dc8", "scanner": "scanner-primary", "fingerprint": "46cf19fa087a7aca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa374d664d762b46", "level": "note", "message": {"text": "Unused endpoint: ANY /api/projects/<int:project_id>/leads/<int:lead_id>/remove/"}, "properties": {"repobilityId": "e714d714fe0f5cce", "scanner": "scanner-primary", "fingerprint": "aa374d664d762b46", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-edc1320cd08c3c19", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/"}, "properties": {"repobilityId": "f2b5105efdd00200", "scanner": "scanner-primary", "fingerprint": "edc1320cd08c3c19", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c07b8aceae8bbe64", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/cleanup/action/"}, "properties": {"repobilityId": "84e8573b53c4d5dd", "scanner": "scanner-primary", "fingerprint": "c07b8aceae8bbe64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90ffde5c0f652ad5", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/orgs/<int:org_id>/sourcing/"}, "properties": {"repobilityId": "3c55a3a772fdd37e", "scanner": "scanner-primary", "fingerprint": "90ffde5c0f652ad5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67339857c3562c27", "level": "note", "message": {"text": "Unused endpoint: ANY /dashboard/ai/"}, "properties": {"repobilityId": "f014082135836410", "scanner": "scanner-primary", "fingerprint": "67339857c3562c27", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0eb021dc4f1a1854", "level": "note", "message": {"text": "Unused endpoint: ANY /portal/"}, "properties": {"repobilityId": "42bb2f7d2e25b97d", "scanner": "scanner-primary", "fingerprint": "0eb021dc4f1a1854", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c2d2dec85ff1485", "level": "note", "message": {"text": "Unused endpoint: ANY /portal/ai/"}, "properties": {"repobilityId": "def31bd8b8271fe8", "scanner": "scanner-primary", "fingerprint": "9c2d2dec85ff1485", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91cebff118e0c955", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/new/"}, "properties": {"repobilityId": "2d8f5a928cf3436e", "scanner": "scanner-primary", "fingerprint": "91cebff118e0c955", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0589b47af64d65b7", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/"}, "properties": {"repobilityId": "7fb089b9046adae7", "scanner": "scanner-primary", "fingerprint": "0589b47af64d65b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd8ac7e621ca2525", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/ai/"}, "properties": {"repobilityId": "e658a7897c1fb9f6", "scanner": "scanner-primary", "fingerprint": "cd8ac7e621ca2525", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-450742fc7f3d3678", "level": "note", "message": {"text": "Unused endpoint: ANY /portal/projects/<int:project_id>/"}, "properties": {"repobilityId": "9dce69153d28f82c", "scanner": "scanner-primary", "fingerprint": "450742fc7f3d3678", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5d3b9761b03f44f9", "level": "note", "message": {"text": "Unused endpoint: ANY /portal/projects/<int:project_id>/ai/"}, "properties": {"repobilityId": "0c30cc3de15fbba1", "scanner": "scanner-primary", "fingerprint": "5d3b9761b03f44f9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fcf317d10b7f281c", "level": "note", "message": {"text": "Unused endpoint: ANY /bridge/staff/invite/"}, "properties": {"repobilityId": "0de0396b8d6898f8", "scanner": "scanner-primary", "fingerprint": "fcf317d10b7f281c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-743d7cefcb10a3b3", "level": "note", "message": {"text": "Unused endpoint: ANY /bridge/staff/invites/<int:invite_id>/revoke/"}, "properties": {"repobilityId": "cc8ee94002926207", "scanner": "scanner-primary", "fingerprint": "743d7cefcb10a3b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c951c3995d8839f", "level": "note", "message": {"text": "Unused endpoint: ANY /projects/<int:project_id>/assets/"}, "properties": {"repobilityId": "506af6d5f78a756a", "scanner": "scanner-primary", "fingerprint": "4c951c3995d8839f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}