{"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-034e469028ca432f", "name": "Possibly dead Python function: append_turn", "shortDescription": {"text": "Possibly dead Python function: append_turn"}, "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-393c3d0ca4498b68", "name": "Possibly dead Python function: current_admin", "shortDescription": {"text": "Possibly dead Python function: current_admin"}, "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-e066a2538e078e94", "name": "Possibly dead Python function: entitled_tenant", "shortDescription": {"text": "Possibly dead Python function: entitled_tenant"}, "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-c42c8e812f458543", "name": "Possibly dead Python function: deps_from_dsn", "shortDescription": {"text": "Possibly dead Python function: deps_from_dsn"}, "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-df92472acebd4c70", "name": "Possibly dead Python function: resume_global", "shortDescription": {"text": "Possibly dead Python function: resume_global"}, "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-9d0f75750462e970", "name": "Possibly dead Python function: interrupt_event", "shortDescription": {"text": "Possibly dead Python function: interrupt_event"}, "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-5d020602c6f421d5", "name": "Possibly dead Python function: apply_update_deal", "shortDescription": {"text": "Possibly dead Python function: apply_update_deal"}, "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-ccd895ca0bf50529", "name": "Possibly dead Python function: apply_update_contact", "shortDescription": {"text": "Possibly dead Python function: apply_update_contact"}, "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-1bfd22fdb40afa70", "name": "Possibly dead Python function: apply_create_activity", "shortDescription": {"text": "Possibly dead Python function: apply_create_activity"}, "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-8010e1eb2e11bf59", "name": "Possibly dead Python function: apply_create_deal", "shortDescription": {"text": "Possibly dead Python function: apply_create_deal"}, "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-6b732f8f66246894", "name": "Possibly dead Python function: record_only", "shortDescription": {"text": "Possibly dead Python function: record_only"}, "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-1421ad0306c883e1", "name": "Possibly dead Python function: refund_stub", "shortDescription": {"text": "Possibly dead Python function: refund_stub"}, "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-4df51c07fb699b56", "name": "Possibly dead Python function: robust_ewma", "shortDescription": {"text": "Possibly dead Python function: robust_ewma"}, "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-048bf12651afcd11", "name": "Possibly dead Python function: now_utc", "shortDescription": {"text": "Possibly dead Python function: now_utc"}, "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-4575cedbf0a032ec", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/SpecRenderer.tsx:13", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/SpecRenderer.tsx:13"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0595598e6ff09f49", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/markdown.tsx:5", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/markdown.tsx:5"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a2b051624388cf44", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/lib/SafeHtml.tsx:3", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/lib/SafeHtml.tsx:3"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c5535522c3a813b1", "name": "Privileged port 17 in use", "shortDescription": {"text": "Privileged port 17 in use"}, "fullDescription": {"text": "Port 17 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b67e5cb221b6d91b", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9417a5f37341f597", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea2f5841568ad840", "name": "Dockerfile runs as root: semantic/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: semantic/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14e0079b2b1fdeec", "name": "Docker base image uses a mutable or implicit tag: cubejs/cube:latest", "shortDescription": {"text": "Docker base image uses a mutable or implicit tag: cubejs/cube:latest"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4fea1e40e49691bb", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/index.html:271", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/index.html:271"}, "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-18c8486c5c816001", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/index.html:664", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/index.html:664"}, "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-7eba39206b5c1c73", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/app.html:440", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/app.html:440"}, "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-e8f17f3810d1b9df", "name": "Insecure pattern 'direct_outerhtml_assignment' in docs/design/prototype/apple-meta/app.html:576", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in docs/design/prototype/apple-meta/app.html:576"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f9c4228fe2d9815", "name": "Insecure pattern 'local_storage_auth_token' in scripts/dev/up.sh:41", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/dev/up.sh:41"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab79d9b68a87451f", "name": "Insecure pattern 'dangerous_innerhtml' in web/README.md:119", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in web/README.md:119"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ef56ab771c6e8816", "name": "Insecure pattern 'direct_innerhtml_assignment' in web/src/dashboard/SpecRenderer.tsx:367", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/src/dashboard/SpecRenderer.tsx:367"}, "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-ce644785050c4fa5", "name": "Insecure pattern 'cors_wildcard' in web/e2e/auth.spec.ts:112", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in web/e2e/auth.spec.ts:112"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8142e5cf9be78b15", "name": "Insecure pattern 'exec_used' in .claude/skills/friesenlabs-deploy/SKILL.md:108", "shortDescription": {"text": "Insecure pattern 'exec_used' in .claude/skills/friesenlabs-deploy/SKILL.md:108"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-535b22f1637eaac8", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d49045788b3f37d", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ad6701f0a8405e22", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-673fd08c667efadb", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03f5d97a2d63780c", "name": "Very large file: api/pg_clients.py (1854 lines)", "shortDescription": {"text": "Very large file: api/pg_clients.py (1854 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-b44960664e59f5e7", "name": "Very large file: api/app.py (845 lines)", "shortDescription": {"text": "Very large file: api/app.py (845 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-2b62a689afde4f12", "name": "Very large file: api/integrations_routes.py (1058 lines)", "shortDescription": {"text": "Very large file: api/integrations_routes.py (1058 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-48a2205ef2e1d481", "name": "Very large file: scripts/generate_demo_dataset.py (1037 lines)", "shortDescription": {"text": "Very large file: scripts/generate_demo_dataset.py (1037 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-f17c730c5b553e7d", "name": "Very large file: web/src/app.tsx (859 lines)", "shortDescription": {"text": "Very large file: web/src/app.tsx (859 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-d6a49e08db0bb5f6", "name": "Very large file: web/src/api/PipelineBoard.tsx (1282 lines)", "shortDescription": {"text": "Very large file: web/src/api/PipelineBoard.tsx (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-af776ba9b775126a", "name": "Very large file: web/src/api/KnowledgeView.tsx (1548 lines)", "shortDescription": {"text": "Very large file: web/src/api/KnowledgeView.tsx (1548 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-f82611e3acd534a3", "name": "Very large file: web/src/api/client.ts (3095 lines)", "shortDescription": {"text": "Very large file: web/src/api/client.ts (3095 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-ff3d2be27ae4ffca", "name": "Very large file: web/src/api/mockData.ts (1557 lines)", "shortDescription": {"text": "Very large file: web/src/api/mockData.ts (1557 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-4eac297e1a14b58d", "name": "Very large file: web/src/api/ContactsDirectory.tsx (1705 lines)", "shortDescription": {"text": "Very large file: web/src/api/ContactsDirectory.tsx (1705 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-e0720f9cb6d4d224", "name": "Very large file: web/src/screens/landing.tsx (1601 lines)", "shortDescription": {"text": "Very large file: web/src/screens/landing.tsx (1601 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-55d0bd09d84e12c6", "name": "Very large file: web/src/screens/workflow.tsx (813 lines)", "shortDescription": {"text": "Very large file: web/src/screens/workflow.tsx (813 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-08a48f52ebbb5c04", "name": "Very large file: web/e2e/knowledge.spec.ts (1169 lines)", "shortDescription": {"text": "Very large file: web/e2e/knowledge.spec.ts (1169 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-9a8795cf3855de16", "name": "Very large file: agents/runtime.py (931 lines)", "shortDescription": {"text": "Very large file: agents/runtime.py (931 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-8c04c52d2ce0a268", "name": "47 TODO/FIXME markers", "shortDescription": {"text": "47 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 59 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 480 placeholder/mock markers across 130 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-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. 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-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f1c099bb304e528", "name": "Commented-code block (5 lines) in conv/synthesizer.py:53", "shortDescription": {"text": "Commented-code block (5 lines) in conv/synthesizer.py:53"}, "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-25a7c89f8685e96e", "name": "Commented-code block (5 lines) in conv/cache.py:80", "shortDescription": {"text": "Commented-code block (5 lines) in conv/cache.py:80"}, "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-3f9fe5783790b2a0", "name": "Commented-code block (6 lines) in conv/session.py:230", "shortDescription": {"text": "Commented-code block (6 lines) in conv/session.py:230"}, "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-d73b923055fe8d38", "name": "Commented-code block (5 lines) in tests/integration/test_control_rls.py:58", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/test_control_rls.py:58"}, "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-76527002b0cd7fa6", "name": "Legacy-named symbol `test_disposable_email_rejected_with_honest_copy` in tests/integration/test_api_signup_abuse.py:84", "shortDescription": {"text": "Legacy-named symbol `test_disposable_email_rejected_with_honest_copy` in tests/integration/test_api_signup_abuse.py:84"}, "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-f1da941720fc7dec", "name": "Legacy-named symbol `test_update_document_new_namespace_lands_then_cleans_old` in tests/integration/test_api_knowledge.p", "shortDescription": {"text": "Legacy-named symbol `test_update_document_new_namespace_lands_then_cleans_old` in tests/integration/test_api_knowledge.py:668"}, "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-d58584135f412e04", "name": "Commented-code block (5 lines) in tests/unit/test_draft_email.py:121", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_draft_email.py:121"}, "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-0ee9e8724b8a3dd7", "name": "Commented-code block (5 lines) in tests/unit/test_runtime_settle.py:153", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_runtime_settle.py:153"}, "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-dff894280e5a99be", "name": "Legacy-named symbol `test_upgrade_roster_wins_serves_new_and_retires_old` in tests/unit/test_roster_autoupgrade.py:284", "shortDescription": {"text": "Legacy-named symbol `test_upgrade_roster_wins_serves_new_and_retires_old` in tests/unit/test_roster_autoupgrade.py:284"}, "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-00ed3a8f6252c10b", "name": "Legacy-named symbol `test_legacy_loader_reads_only_v1` in tests/unit/test_ml_artifacts.py:129", "shortDescription": {"text": "Legacy-named symbol `test_legacy_loader_reads_only_v1` in tests/unit/test_ml_artifacts.py:129"}, "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-d4e08c3200cfe21c", "name": "Legacy-named symbol `test_check_raises_with_honest_copy` in tests/unit/test_signup_abuse.py:38", "shortDescription": {"text": "Legacy-named symbol `test_check_raises_with_honest_copy` in tests/unit/test_signup_abuse.py:38"}, "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-de8b32b56f909d0d", "name": "Legacy-named symbol `list_objects_v2` in tests/unit/test_batch_embed.py:46", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in tests/unit/test_batch_embed.py:46"}, "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-7867217543b2fefe", "name": "Commented-code block (6 lines) in tests/unit/test_sql_schema.py:24", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_sql_schema.py:24"}, "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-cf73b4c8879204f9", "name": "Legacy-named symbol `test_custom_field_labels_resolved_via_fields_v2` in tests/unit/test_pipedrive_connector.py:349", "shortDescription": {"text": "Legacy-named symbol `test_custom_field_labels_resolved_via_fields_v2` in tests/unit/test_pipedrive_connector.py:349"}, "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-206fae9cae75aeb5", "name": "Legacy-named symbol `test_get_template_returns_a_copy` in tests/unit/test_playbook_schema.py:196", "shortDescription": {"text": "Legacy-named symbol `test_get_template_returns_a_copy` in tests/unit/test_playbook_schema.py:196"}, "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-df19cc51108f3af9", "name": "Commented-code block (6 lines) in tests/unit/test_signup_provisioning.py:237", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_signup_provisioning.py:237"}, "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-7ea3abbefdd96e72", "name": "Commented-code block (5 lines) in api/account_delete_routes.py:61", "shortDescription": {"text": "Commented-code block (5 lines) in api/account_delete_routes.py:61"}, "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-92454b957487b1e2", "name": "Commented-code block (6 lines) in api/knowledge_routes.py:115", "shortDescription": {"text": "Commented-code block (6 lines) in api/knowledge_routes.py:115"}, "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-e3eada21b4b3b6f7", "name": "Commented-code block (6 lines) in api/contacts_routes.py:77", "shortDescription": {"text": "Commented-code block (6 lines) in api/contacts_routes.py:77"}, "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-611e96b153502602", "name": "Commented-code block (7 lines) in api/signup_routes.py:64", "shortDescription": {"text": "Commented-code block (7 lines) in api/signup_routes.py:64"}, "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-cf23f6e87efa36e8", "name": "Commented-code block (8 lines) in api/asgi.py:219", "shortDescription": {"text": "Commented-code block (8 lines) in api/asgi.py:219"}, "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-bc69a483b6684cf1", "name": "Commented-code block (5 lines) in api/app.py:101", "shortDescription": {"text": "Commented-code block (5 lines) in api/app.py:101"}, "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-0789dc2fbd8203dd", "name": "Commented-code block (6 lines) in api/cortex_routes.py:164", "shortDescription": {"text": "Commented-code block (6 lines) in api/cortex_routes.py:164"}, "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-81ae8f16309941c5", "name": "Commented-code block (5 lines) in api/integrations_routes.py:93", "shortDescription": {"text": "Commented-code block (5 lines) in api/integrations_routes.py:93"}, "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-4d57999b28cabe49", "name": "Commented-code block (7 lines) in api/routes_studio.py:99", "shortDescription": {"text": "Commented-code block (7 lines) in api/routes_studio.py:99"}, "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-0684a08af0911920", "name": "Commented-code block (6 lines) in api/prod_deps.py:161", "shortDescription": {"text": "Commented-code block (6 lines) in api/prod_deps.py:161"}, "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-908333aca666a28e", "name": "Stub function `confirm` (body is just `pass`/`return`) \u2014 api/prod_deps.py:153", "shortDescription": {"text": "Stub function `confirm` (body is just `pass`/`return`) \u2014 api/prod_deps.py:153"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52cf1bbd2c4c981a", "name": "Commented-code block (5 lines) in api/control/greenlight.py:353", "shortDescription": {"text": "Commented-code block (5 lines) in api/control/greenlight.py:353"}, "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-2d9ac8755a38917d", "name": "Commented-code block (6 lines) in api/control/gate.py:43", "shortDescription": {"text": "Commented-code block (6 lines) in api/control/gate.py:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce8ceabfe3756bf3", "name": "Commented-code block (5 lines) in shared/config.py:33", "shortDescription": {"text": "Commented-code block (5 lines) in shared/config.py:33"}, "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-499e98b92e9e4868", "name": "Commented-code block (5 lines) in shared/view_spec.py:47", "shortDescription": {"text": "Commented-code block (5 lines) in shared/view_spec.py:47"}, "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-8f979b383068e378", "name": "Commented-code block (5 lines) in scripts/isolation_test.py:126", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/isolation_test.py:126"}, "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-37966ae67f35e864", "name": "Commented-code block (5 lines) in scripts/generate_test_packs.py:60", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate_test_packs.py:60"}, "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-5bcfef5948300f1e", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ops/set_tfvars_secret.py:87", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ops/set_tfvars_secret.py:87"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-90a07fcc88de1b02", "name": "Commented-code block (6 lines) in scripts/ml/retrain_all.py:234", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ml/retrain_all.py:234"}, "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-9460aa072da87440", "name": "Commented-code block (5 lines) in signup/stripe_adapter.py:83", "shortDescription": {"text": "Commented-code block (5 lines) in signup/stripe_adapter.py:83"}, "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-0c6ea926d2d3f492", "name": "Commented-code block (7 lines) in signup/cognito_admin.py:214", "shortDescription": {"text": "Commented-code block (7 lines) in signup/cognito_admin.py:214"}, "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-bd4d79c2252a3299", "name": "Commented-code block (5 lines) in signup/payment.py:108", "shortDescription": {"text": "Commented-code block (5 lines) in signup/payment.py:108"}, "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-863041945b526310", "name": "Commented-code block (6 lines) in signup/provisioning.py:49", "shortDescription": {"text": "Commented-code block (6 lines) in signup/provisioning.py:49"}, "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-59946e28ece1182b", "name": "Commented-code block (6 lines) in signup/store_pg.py:194", "shortDescription": {"text": "Commented-code block (6 lines) in signup/store_pg.py:194"}, "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-9af2cdf35c468d88", "name": "Commented-code block (6 lines) in worker/worker.py:54", "shortDescription": {"text": "Commented-code block (6 lines) in worker/worker.py:54"}, "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-b4261aa5caafca11", "name": "Legacy-named symbol `list_objects_v2` in ingest/embed.py:227", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in ingest/embed.py:227"}, "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-d0db1aa1eb8f9bc8", "name": "Commented-code block (5 lines) in ingest/sinks.py:72", "shortDescription": {"text": "Commented-code block (5 lines) in ingest/sinks.py:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2361fd5edb7660f9", "name": "Commented-code block (8 lines) in ingest/connectors/salesforce.py:505", "shortDescription": {"text": "Commented-code block (8 lines) in ingest/connectors/salesforce.py:505"}, "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-934c9022f343e75c", "name": "Commented-code block (6 lines) in ingest/connectors/gohighlevel_full.py:55", "shortDescription": {"text": "Commented-code block (6 lines) in ingest/connectors/gohighlevel_full.py:55"}, "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-c65d909a040866b0", "name": "Commented-code block (11 lines) in ingest/connectors/pipedrive.py:515", "shortDescription": {"text": "Commented-code block (11 lines) in ingest/connectors/pipedrive.py:515"}, "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-c2fbce3b0a0ec2d8", "name": "Commented-code block (5 lines) in ingest/connectors/hubspot.py:58", "shortDescription": {"text": "Commented-code block (5 lines) in ingest/connectors/hubspot.py:58"}, "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-368901f27d3c7ddb", "name": "Commented-code block (10 lines) in ingest/connectors/gohighlevel.py:327", "shortDescription": {"text": "Commented-code block (10 lines) in ingest/connectors/gohighlevel.py:327"}, "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-896c7ae7d362ab67", "name": "Commented-code block (5 lines) in ingest/connectors/oauth.py:133", "shortDescription": {"text": "Commented-code block (5 lines) in ingest/connectors/oauth.py:133"}, "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-9176c60e9da1b950", "name": "Commented-code block (6 lines) in semantic/cube.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in semantic/cube.js:1"}, "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-f367cf1f9c2744a3", "name": "Commented-code block (5 lines) in semantic/security.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in semantic/security.js:6"}, "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-52fe7f9a98a60930", "name": "Commented-code block (5 lines) in semantic/test/driver.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in semantic/test/driver.test.js:1"}, "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-e1a2fa0662207bf1", "name": "Commented-code block (8 lines) in ml/forecast_data.py:15", "shortDescription": {"text": "Commented-code block (8 lines) in ml/forecast_data.py:15"}, "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-e2a8e57eccc4f8b9", "name": "Legacy-named symbol `list_objects_v2` in ml/registry.py:356", "shortDescription": {"text": "Legacy-named symbol `list_objects_v2` in ml/registry.py:356"}, "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-782e6eca72169bf3", "name": "Legacy-named symbol `deserialize_legacy_v1` in ml/migrate_artifacts.py:6", "shortDescription": {"text": "Legacy-named symbol `deserialize_legacy_v1` in ml/migrate_artifacts.py:6"}, "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-e7156408f2bf6ede", "name": "Legacy-named symbol `deserialize_legacy_v1` in ml/artifacts.py:125", "shortDescription": {"text": "Legacy-named symbol `deserialize_legacy_v1` in ml/artifacts.py:125"}, "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-ed206c35412000fa", "name": "Commented-code block (17 lines) in web/playwright.config.ts:7", "shortDescription": {"text": "Commented-code block (17 lines) in web/playwright.config.ts:7"}, "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-93dd519f69002910", "name": "Commented-code block (7 lines) in web/vite.config.ts:18", "shortDescription": {"text": "Commented-code block (7 lines) in web/vite.config.ts: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-95b421295fc0131d", "name": "Commented-code block (5 lines) in web/playwright.smoke.config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/playwright.smoke.config.ts: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-f548c436d6ac07c8", "name": "Commented-code block (5 lines) in web/vitest.config.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in web/vitest.config.ts:4"}, "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-dcb3fe2bccf90e94", "name": "Commented-code block (5 lines) in web/test/auth-core.test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/test/auth-core.test.mjs:1"}, "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-12a7e25d0efb2281", "name": "Commented-code block (10 lines) in web/src/app.tsx:6", "shortDescription": {"text": "Commented-code block (10 lines) in web/src/app.tsx:6"}, "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-e8626b532d5af21c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app.tsx:213", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app.tsx:213"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5625cc4d7e164423", "name": "Commented-code block (7 lines) in web/src/ai.tsx:10", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/ai.tsx:10"}, "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-aa2727c9f08379f2", "name": "Commented-code block (7 lines) in web/src/globals.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/globals.ts: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-7b6e786f01746314", "name": "Commented-code block (7 lines) in web/src/main.tsx:13", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/main.tsx:13"}, "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-9242eb5c92c8c426", "name": "Commented-code block (5 lines) in web/src/pricing.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/pricing.ts: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-d6e5410089528d01", "name": "Commented-code block (7 lines) in web/src/vite-env.d.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/vite-env.d.ts: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-7448ba7fb5095fc9", "name": "Commented-code block (5 lines) in web/src/RealCommandPalette.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/RealCommandPalette.tsx:1"}, "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-83a572c5bd4f88fa", "name": "Commented-code block (8 lines) in web/src/modules.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/modules.ts: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-52f932974d3bfa0a", "name": "Commented-code block (10 lines) in web/src/auth/AuthContext.tsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in web/src/auth/AuthContext.tsx:1"}, "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-6d9d818b0cfc7a4d", "name": "Commented-code block (7 lines) in web/src/auth/core.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/auth/core.js:5"}, "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-6239a75a7a444970", "name": "Commented-code block (8 lines) in web/src/auth/cognito.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/auth/cognito.ts:5"}, "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-0890ab021cb210e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/auth/cognito.ts:233", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/auth/cognito.ts:233"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d28faf28acc9f2f", "name": "Commented-code block (14 lines) in web/src/analytics/posthog.ts:3", "shortDescription": {"text": "Commented-code block (14 lines) in web/src/analytics/posthog.ts: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-6bb50e9cfaa86fd6", "name": "Commented-code block (7 lines) in web/src/api/UsagePanel.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/api/UsagePanel.tsx: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-5d57cb5664f8b5fb", "name": "Commented-code block (8 lines) in web/src/api/MergeDuplicates.tsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/api/MergeDuplicates.tsx:1"}, "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-8d06ff5b7dfadcce", "name": "Commented-code block (8 lines) in web/src/api/CrewPanel.tsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/api/CrewPanel.tsx:1"}, "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-91a7addbebbc86bb", "name": "Commented-code block (20 lines) in web/src/api/SellView.tsx:5", "shortDescription": {"text": "Commented-code block (20 lines) in web/src/api/SellView.tsx:5"}, "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-bd425632442347bd", "name": "Commented-code block (7 lines) in web/src/api/riskBadge.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/api/riskBadge.ts:4"}, "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-f2999f23e571d3c8", "name": "Commented-code block (5 lines) in web/src/api/IntegrationsPanel.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/api/IntegrationsPanel.tsx: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-b2bfe1daa03056fb", "name": "Commented-code block (25 lines) in web/src/api/ReportsView.tsx:6", "shortDescription": {"text": "Commented-code block (25 lines) in web/src/api/ReportsView.tsx:6"}, "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-378d20146d29f874", "name": "Commented-code block (11 lines) in web/src/api/ChatDock.tsx:5", "shortDescription": {"text": "Commented-code block (11 lines) in web/src/api/ChatDock.tsx:5"}, "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-5b39eecdf536342e", "name": "Commented-code block (16 lines) in web/src/api/PipelineBoard.tsx:5", "shortDescription": {"text": "Commented-code block (16 lines) in web/src/api/PipelineBoard.tsx:5"}, "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-deb3d1ad1769710b", "name": "Commented-code block (14 lines) in web/src/api/BillingManage.tsx:6", "shortDescription": {"text": "Commented-code block (14 lines) in web/src/api/BillingManage.tsx:6"}, "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-2e4ead1eb8b4f821", "name": "Commented-code block (10 lines) in web/src/api/DashboardView.tsx:1", "shortDescription": {"text": "Commented-code block (10 lines) in web/src/api/DashboardView.tsx:1"}, "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-e259cf0da396f234", "name": "Commented-code block (6 lines) in web/src/api/SetupWizard.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/api/SetupWizard.tsx:1"}, "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-ec6a04dca2546a9a", "name": "Commented-code block (17 lines) in web/src/api/DashboardsView.tsx:5", "shortDescription": {"text": "Commented-code block (17 lines) in web/src/api/DashboardsView.tsx:5"}, "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-db127df6342a3788", "name": "Commented-code block (24 lines) in web/src/api/KnowledgeView.tsx:6", "shortDescription": {"text": "Commented-code block (24 lines) in web/src/api/KnowledgeView.tsx:6"}, "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-c79849b4d1ba5359", "name": "Commented-code block (10 lines) in web/src/api/GreenlightQueue.tsx:3", "shortDescription": {"text": "Commented-code block (10 lines) in web/src/api/GreenlightQueue.tsx: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-567305328fafb25c", "name": "Commented-code block (6 lines) in web/src/api/SidecarView.tsx:8", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/api/SidecarView.tsx:8"}, "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-19ebf835c117f9d1", "name": "Commented-code block (16 lines) in web/src/api/CortexView.tsx:8", "shortDescription": {"text": "Commented-code block (16 lines) in web/src/api/CortexView.tsx:8"}, "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-d678109bb8359182", "name": "Commented-code block (14 lines) in web/src/api/SecurityControls.tsx:4", "shortDescription": {"text": "Commented-code block (14 lines) in web/src/api/SecurityControls.tsx:4"}, "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-3dd9f5f7e4779155", "name": "Commented-code block (8 lines) in web/src/api/WorkspaceSettings.tsx:8", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/api/WorkspaceSettings.tsx:8"}, "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-ce2472fea744161d", "name": "Commented-code block (7 lines) in web/src/api/AnomalyPanel.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/api/AnomalyPanel.tsx:4"}, "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-9d1278feab726c37", "name": "Commented-code block (6 lines) in web/src/api/client.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/api/client.ts: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-5f9be945fa0614de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/api/client.ts:1458", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/api/client.ts:1458"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7119cb51b79be86c", "name": "Commented-code block (7 lines) in web/src/api/ModulesView.tsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/api/ModulesView.tsx:12"}, "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-63fff4d94b562824", "name": "Commented-code block (7 lines) in web/src/api/ChurnPanel.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/api/ChurnPanel.tsx:4"}, "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-019ef0087e8f7ebb", "name": "Commented-code block (8 lines) in web/src/api/ForecastPanel.tsx:4", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/api/ForecastPanel.tsx:4"}, "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-57a2113849cae061", "name": "Commented-code block (5 lines) in web/src/api/mockData.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/api/mockData.ts: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-c626ba2c21ff6729", "name": "Commented-code block (12 lines) in web/src/api/TheBrief.tsx:1", "shortDescription": {"text": "Commented-code block (12 lines) in web/src/api/TheBrief.tsx:1"}, "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-02b04490dc57092e", "name": "Commented-code block (14 lines) in web/src/api/AccountDataControls.tsx:6", "shortDescription": {"text": "Commented-code block (14 lines) in web/src/api/AccountDataControls.tsx:6"}, "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-368d3a24be6ac213", "name": "Commented-code block (18 lines) in web/src/api/StudioView.tsx:5", "shortDescription": {"text": "Commented-code block (18 lines) in web/src/api/StudioView.tsx:5"}, "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-cf49b16f44c42934", "name": "Commented-code block (20 lines) in web/src/api/ContactsDirectory.tsx:6", "shortDescription": {"text": "Commented-code block (20 lines) in web/src/api/ContactsDirectory.tsx:6"}, "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-12afce6d3d8804d1", "name": "Commented-code block (8 lines) in web/src/api/MarketplaceView.tsx:6", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/api/MarketplaceView.tsx:6"}, "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-c9ea022866182e7b", "name": "Commented-code block (23 lines) in web/src/api/WorkflowsView.tsx:6", "shortDescription": {"text": "Commented-code block (23 lines) in web/src/api/WorkflowsView.tsx:6"}, "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-cc3b1c5d7a59aac1", "name": "Commented-code block (13 lines) in web/src/api/TasksView.tsx:4", "shortDescription": {"text": "Commented-code block (13 lines) in web/src/api/TasksView.tsx:4"}, "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-8eaaabbd7e88cfe6", "name": "Commented-code block (20 lines) in web/src/api/AgentsRoster.tsx:6", "shortDescription": {"text": "Commented-code block (20 lines) in web/src/api/AgentsRoster.tsx:6"}, "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-4f9c9d88c4d375b7", "name": "Commented-code block (5 lines) in web/src/api/__tests__/TheBrief.test.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/api/__tests__/TheBrief.test.tsx:1"}, "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-be95d714b8fd27c1", "name": "Commented-code block (6 lines) in web/src/screens/landing-constellation.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/screens/landing-constellation.tsx:6"}, "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-cae2c6297739c18d", "name": "Commented-code block (7 lines) in web/src/screens/tweaks-panel.tsx:17", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/screens/tweaks-panel.tsx:17"}, "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-a83fcc6ce27b1a22", "name": "Commented-code block (5 lines) in web/src/screens/landing.tsx:783", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/screens/landing.tsx:783"}, "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-fc3567596947e019", "name": "Commented-code block (5 lines) in web/src/dashboard/dashboardSpec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/dashboard/dashboardSpec.ts: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-96a60a6ecf863014", "name": "Commented-code block (19 lines) in web/src/dashboard/SpecRenderer.tsx:3", "shortDescription": {"text": "Commented-code block (19 lines) in web/src/dashboard/SpecRenderer.tsx: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-1e838cb4066ba5fc", "name": "Commented-code block (5 lines) in web/src/dashboard/markdown.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/dashboard/markdown.tsx: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-83c7f34eba36cb15", "name": "Commented-code block (15 lines) in web/src/dashboard/Demo.tsx:3", "shortDescription": {"text": "Commented-code block (15 lines) in web/src/dashboard/Demo.tsx: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-836ac5acda556228", "name": "Legacy-named symbol `demo_revenue_room_v2` in web/src/dashboard/sample.ts:51", "shortDescription": {"text": "Legacy-named symbol `demo_revenue_room_v2` in web/src/dashboard/sample.ts:51"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-08b82bd2c32bfec2", "name": "Commented-code block (5 lines) in web/src/dashboard/viewSpec.ts:13", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/dashboard/viewSpec.ts:13"}, "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-5dba5a489db498ac", "name": "Commented-code block (21 lines) in web/src/signup/SignupFlow.tsx:3", "shortDescription": {"text": "Commented-code block (21 lines) in web/src/signup/SignupFlow.tsx: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-d27d5d19a4f6614a", "name": "Commented-code block (8 lines) in web/src/signup/turnstile.tsx:7", "shortDescription": {"text": "Commented-code block (8 lines) in web/src/signup/turnstile.tsx:7"}, "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-30beb6534884cb55", "name": "Commented-code block (5 lines) in web/src/lib/SafeHtml.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/lib/SafeHtml.tsx:1"}, "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-3f9425a43b427a33", "name": "Commented-code block (7 lines) in web/src/lib/navSynonyms.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in web/src/lib/navSynonyms.ts: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-b2d3b314d9396432", "name": "Commented-code block (6 lines) in web/src/dev/SafeHtmlDemo.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/dev/SafeHtmlDemo.tsx:1"}, "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-63f8ef5d7932cc53", "name": "Commented-code block (5 lines) in web/src/onboarding/EmptyState.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/onboarding/EmptyState.tsx: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-e2cd924d3e0669c0", "name": "Commented-code block (5 lines) in web/src/onboarding/FirstRunChecklist.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/onboarding/FirstRunChecklist.tsx: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-4e5a952b160ed970", "name": "Commented-code block (5 lines) in web/src/onboarding/useOnboarding.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in web/src/onboarding/useOnboarding.ts:6"}, "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-8abff879948edc18", "name": "Commented-code block (6 lines) in web/src/support/api.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/support/api.ts:6"}, "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-390c3b626322bf01", "name": "Commented-code block (6 lines) in web/src/support/HelpForm.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/support/HelpForm.tsx: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-818989f6728c04f9", "name": "Commented-code block (6 lines) in web/src/support/StatusPage.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in web/src/support/StatusPage.tsx: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-0f1ea6be3eb27c77", "name": "Commented-code block (16 lines) in web/e2e/integrations.spec.ts:3", "shortDescription": {"text": "Commented-code block (16 lines) in web/e2e/integrations.spec.ts: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-23cb6d4d49f8251a", "name": "Commented-code block (8 lines) in web/e2e/balto.spec.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in web/e2e/balto.spec.ts: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-2234e70c41b3b7a6", "name": "Commented-code block (9 lines) in web/e2e/greenlight.spec.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in web/e2e/greenlight.spec.ts: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-4f51dffa9db3257e", "name": "Commented-code block (17 lines) in web/e2e/cortex.spec.ts:3", "shortDescription": {"text": "Commented-code block (17 lines) in web/e2e/cortex.spec.ts: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-15fb8f20403027a3", "name": "Commented-code block (20 lines) in web/e2e/workflows.spec.ts:3", "shortDescription": {"text": "Commented-code block (20 lines) in web/e2e/workflows.spec.ts: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-428186d6386a4ecf", "name": "Commented-code block (13 lines) in web/e2e/signup.spec.ts:8", "shortDescription": {"text": "Commented-code block (13 lines) in web/e2e/signup.spec.ts:8"}, "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-12767799c46a6f82", "name": "Commented-code block (20 lines) in web/e2e/realmode.spec.ts:3", "shortDescription": {"text": "Commented-code block (20 lines) in web/e2e/realmode.spec.ts: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-7e55785b172d2d5b", "name": "Commented-code block (5 lines) in web/e2e/greenlight-real.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/greenlight-real.spec.ts: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-5c70fa5ac005eb79", "name": "Commented-code block (8 lines) in web/e2e/merge.spec.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in web/e2e/merge.spec.ts: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-83034a8c14f2d5c0", "name": "Commented-code block (9 lines) in web/e2e/depth-ui.spec.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in web/e2e/depth-ui.spec.ts: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-8795cf5faaeab689", "name": "Commented-code block (8 lines) in web/e2e/support.spec.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in web/e2e/support.spec.ts: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-305dc8cd37022aaa", "name": "Commented-code block (5 lines) in web/e2e/support-auth.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/support-auth.spec.ts: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-f3096b5c7efea822", "name": "Commented-code block (9 lines) in web/e2e/dashboard-data.spec.ts:6", "shortDescription": {"text": "Commented-code block (9 lines) in web/e2e/dashboard-data.spec.ts:6"}, "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-eefe38bd9eae0295", "name": "Commented-code block (6 lines) in web/e2e/dashboard-real.spec.ts:26", "shortDescription": {"text": "Commented-code block (6 lines) in web/e2e/dashboard-real.spec.ts:26"}, "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-e9b72c31768c1390", "name": "Commented-code block (21 lines) in web/e2e/auth.spec.ts:5", "shortDescription": {"text": "Commented-code block (21 lines) in web/e2e/auth.spec.ts:5"}, "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-a6a809e16aeac661", "name": "`fetch()` without try/.catch or AbortSignal \u2014 web/e2e/auth.spec.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/e2e/auth.spec.ts:102"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5ee570c3607beca", "name": "Commented-code block (13 lines) in web/e2e/dashboards.spec.ts:3", "shortDescription": {"text": "Commented-code block (13 lines) in web/e2e/dashboards.spec.ts: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-75839d01f85ca30b", "name": "Commented-code block (12 lines) in web/e2e/dashboard.spec.ts:3", "shortDescription": {"text": "Commented-code block (12 lines) in web/e2e/dashboard.spec.ts: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-cb54001040a4062d", "name": "Commented-code block (6 lines) in web/e2e/a11y.spec.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in web/e2e/a11y.spec.ts:4"}, "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-a9699e35b56a8ac4", "name": "Commented-code block (8 lines) in web/e2e/sidecar.spec.ts:7", "shortDescription": {"text": "Commented-code block (8 lines) in web/e2e/sidecar.spec.ts:7"}, "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-f342f2d199452598", "name": "Commented-code block (16 lines) in web/e2e/knowledge.spec.ts:3", "shortDescription": {"text": "Commented-code block (16 lines) in web/e2e/knowledge.spec.ts: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-3f6672aa32e2bf80", "name": "Commented-code block (5 lines) in web/e2e/visual.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/visual.spec.ts: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-cdb27b1bcc3fca32", "name": "Commented-code block (13 lines) in web/e2e/sell.spec.ts:8", "shortDescription": {"text": "Commented-code block (13 lines) in web/e2e/sell.spec.ts:8"}, "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-e7d4b40cc8676332", "name": "Commented-code block (16 lines) in web/e2e/signup-real.spec.ts:3", "shortDescription": {"text": "Commented-code block (16 lines) in web/e2e/signup-real.spec.ts: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-4e1ddb8f91525128", "name": "Commented-code block (10 lines) in web/e2e/onboarding.spec.ts:8", "shortDescription": {"text": "Commented-code block (10 lines) in web/e2e/onboarding.spec.ts:8"}, "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-a7a5cefca62998c8", "name": "Commented-code block (15 lines) in web/e2e/tasks.spec.ts:3", "shortDescription": {"text": "Commented-code block (15 lines) in web/e2e/tasks.spec.ts: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-30a0a52c492be319", "name": "Commented-code block (20 lines) in web/e2e/contacts.spec.ts:3", "shortDescription": {"text": "Commented-code block (20 lines) in web/e2e/contacts.spec.ts: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-46035340547711e2", "name": "Commented-code block (8 lines) in web/e2e/focus-visible.spec.ts:5", "shortDescription": {"text": "Commented-code block (8 lines) in web/e2e/focus-visible.spec.ts:5"}, "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-309ee0a933acff1b", "name": "Commented-code block (16 lines) in web/e2e/reports.spec.ts:3", "shortDescription": {"text": "Commented-code block (16 lines) in web/e2e/reports.spec.ts: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-4b6b5362af152434", "name": "Commented-code block (9 lines) in web/e2e/billing.spec.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in web/e2e/billing.spec.ts: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-c03170088f9b7e91", "name": "Commented-code block (19 lines) in web/e2e/pipeline.spec.ts:3", "shortDescription": {"text": "Commented-code block (19 lines) in web/e2e/pipeline.spec.ts: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-771e5884722c96fb", "name": "Commented-code block (5 lines) in web/e2e/conversion.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/conversion.spec.ts: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-b252b8f3e2b85966", "name": "Commented-code block (18 lines) in web/e2e/agents.spec.ts:3", "shortDescription": {"text": "Commented-code block (18 lines) in web/e2e/agents.spec.ts: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-89e99edb8b483100", "name": "Commented-code block (5 lines) in web/e2e/studio.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in web/e2e/studio.spec.ts: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-048fc0b2558b498b", "name": "Commented-code block (10 lines) in agents/runtime_selfhosted.py:149", "shortDescription": {"text": "Commented-code block (10 lines) in agents/runtime_selfhosted.py:149"}, "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-d8c1bd10ea91ed69", "name": "Commented-code block (7 lines) in agents/runtime.py:27", "shortDescription": {"text": "Commented-code block (7 lines) in agents/runtime.py:27"}, "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-e9b8d5b9732c7e3e", "name": "Commented-code block (5 lines) in agents/playbooks/runner.py:40", "shortDescription": {"text": "Commented-code block (5 lines) in agents/playbooks/runner.py:40"}, "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-79f07f7b47dc48ba", "name": "Commented-code block (9 lines) in agents/playbooks/dispatch.py:220", "shortDescription": {"text": "Commented-code block (9 lines) in agents/playbooks/dispatch.py:220"}, "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-e14d781a1e0f1267", "name": "Commented-code block (5 lines) in agents/tools/sideeffecting.py:68", "shortDescription": {"text": "Commented-code block (5 lines) in agents/tools/sideeffecting.py:68"}, "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-61008bc46eb4fb07", "name": "Commented-code block (6 lines) in agents/tools/base.py:63", "shortDescription": {"text": "Commented-code block (6 lines) in agents/tools/base.py:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nconv/view_patcher.py:configured, agents/tools/spec_generator.py:configured\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nconv/analytics.py:list, conv/analytics.py:list, conv/analytics.py:list\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-442a654d08998e5e", "name": "Django view `request_tokens` may be unauthenticated \u2014 conv/views.py:90", "shortDescription": {"text": "Django view `request_tokens` may be unauthenticated \u2014 conv/views.py:90"}, "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-033977943697f79c", "name": "Django view `members_cover` may be unauthenticated \u2014 conv/views.py:115", "shortDescription": {"text": "Django view `members_cover` may be unauthenticated \u2014 conv/views.py:115"}, "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-26381f1d9b900dd7", "name": "Django view `find_covering_view` may be unauthenticated \u2014 conv/views.py:131", "shortDescription": {"text": "Django view `find_covering_view` may be unauthenticated \u2014 conv/views.py:131"}, "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-1ce3b3516e659937", "name": "FastAPI POST `knowledge_add_document` without auth dependency \u2014 api/knowledge_routes.py:334", "shortDescription": {"text": "FastAPI POST `knowledge_add_document` without auth dependency \u2014 api/knowledge_routes.py:334"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aa88babec1d417d9", "name": "FastAPI PATCH `knowledge_move_document` without auth dependency \u2014 api/knowledge_routes.py:377", "shortDescription": {"text": "FastAPI PATCH `knowledge_move_document` without auth dependency \u2014 api/knowledge_routes.py:377"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-365f16c7daab997a", "name": "FastAPI PUT `knowledge_update_document` without auth dependency \u2014 api/knowledge_routes.py:482", "shortDescription": {"text": "FastAPI PUT `knowledge_update_document` without auth dependency \u2014 api/knowledge_routes.py:482"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4beda64d6aaddadb", "name": "FastAPI DELETE `knowledge_delete_document` without auth dependency \u2014 api/knowledge_routes.py:527", "shortDescription": {"text": "FastAPI DELETE `knowledge_delete_document` without auth dependency \u2014 api/knowledge_routes.py:527"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-040536bda74d03aa", "name": "FastAPI POST `merge_contacts` without auth dependency \u2014 api/contacts_routes.py:224", "shortDescription": {"text": "FastAPI POST `merge_contacts` without auth dependency \u2014 api/contacts_routes.py:224"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79af98ae34f5957e", "name": "FastAPI POST `create_contact` without auth dependency \u2014 api/contacts_routes.py:268", "shortDescription": {"text": "FastAPI POST `create_contact` without auth dependency \u2014 api/contacts_routes.py:268"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a349da7fed36ad8d", "name": "FastAPI PATCH `edit_contact` without auth dependency \u2014 api/contacts_routes.py:292", "shortDescription": {"text": "FastAPI PATCH `edit_contact` without auth dependency \u2014 api/contacts_routes.py:292"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7bbac83c1607bf58", "name": "FastAPI POST `merge_companies` without auth dependency \u2014 api/contacts_routes.py:355", "shortDescription": {"text": "FastAPI POST `merge_companies` without auth dependency \u2014 api/contacts_routes.py:355"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fee3e5c21405d6d8", "name": "FastAPI POST `create_company` without auth dependency \u2014 api/contacts_routes.py:390", "shortDescription": {"text": "FastAPI POST `create_company` without auth dependency \u2014 api/contacts_routes.py:390"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a7765e9a30ac2fb", "name": "FastAPI PATCH `edit_company` without auth dependency \u2014 api/contacts_routes.py:401", "shortDescription": {"text": "FastAPI PATCH `edit_company` without auth dependency \u2014 api/contacts_routes.py:401"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-de02813b2137b05f", "name": "FastAPI POST `log_contact_activity` without auth dependency \u2014 api/contacts_routes.py:425", "shortDescription": {"text": "FastAPI POST `log_contact_activity` without auth dependency \u2014 api/contacts_routes.py:425"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-739ed58b990fbf35", "name": "FastAPI POST `archive_contact` without auth dependency \u2014 api/contacts_routes.py:450", "shortDescription": {"text": "FastAPI POST `archive_contact` without auth dependency \u2014 api/contacts_routes.py:450"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b69e3da5bfca440b", "name": "FastAPI POST `unarchive_contact` without auth dependency \u2014 api/contacts_routes.py:454", "shortDescription": {"text": "FastAPI POST `unarchive_contact` without auth dependency \u2014 api/contacts_routes.py:454"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb7b7deab5921aa4", "name": "FastAPI POST `archive_company` without auth dependency \u2014 api/contacts_routes.py:458", "shortDescription": {"text": "FastAPI POST `archive_company` without auth dependency \u2014 api/contacts_routes.py:458"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3281e0fb17ebe17d", "name": "FastAPI POST `unarchive_company` without auth dependency \u2014 api/contacts_routes.py:462", "shortDescription": {"text": "FastAPI POST `unarchive_company` without auth dependency \u2014 api/contacts_routes.py:462"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b279c299575c2a8a", "name": "FastAPI POST `verify_email` without auth dependency \u2014 api/signup_routes.py:205", "shortDescription": {"text": "FastAPI POST `verify_email` without auth dependency \u2014 api/signup_routes.py:205"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a6236025fa02256", "name": "FastAPI POST `verify_phone` without auth dependency \u2014 api/signup_routes.py:242", "shortDescription": {"text": "FastAPI POST `verify_phone` without auth dependency \u2014 api/signup_routes.py:242"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0dfdfe16e4e6cf50", "name": "FastAPI POST `checkout` without auth dependency \u2014 api/signup_routes.py:252", "shortDescription": {"text": "FastAPI POST `checkout` without auth dependency \u2014 api/signup_routes.py:252"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fbd04a897560ab7", "name": "FastAPI POST `retry_provision` without auth dependency \u2014 api/signup_routes.py:299", "shortDescription": {"text": "FastAPI POST `retry_provision` without auth dependency \u2014 api/signup_routes.py:299"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-22e44375536f008f", "name": "FastAPI POST `stripe_webhook` without auth dependency \u2014 api/signup_routes.py:334", "shortDescription": {"text": "FastAPI POST `stripe_webhook` without auth dependency \u2014 api/signup_routes.py:334"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-083285c53ae970dc", "name": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:63", "shortDescription": {"text": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:63"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9b7f29f50034ef89", "name": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:64", "shortDescription": {"text": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:64"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-059a1b9be3c5682e", "name": "FastAPI POST `save_view` without auth dependency \u2014 api/app.py:464", "shortDescription": {"text": "FastAPI POST `save_view` without auth dependency \u2014 api/app.py:464"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5a9c2926a36ce40f", "name": "FastAPI POST `refine_view` without auth dependency \u2014 api/app.py:479", "shortDescription": {"text": "FastAPI POST `refine_view` without auth dependency \u2014 api/app.py:479"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79a06856961730c3", "name": "FastAPI POST `synthesize_view` without auth dependency \u2014 api/app.py:494", "shortDescription": {"text": "FastAPI POST `synthesize_view` without auth dependency \u2014 api/app.py:494"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9bcadec447f4951", "name": "FastAPI POST `save_view_draft` without auth dependency \u2014 api/app.py:511", "shortDescription": {"text": "FastAPI POST `save_view_draft` without auth dependency \u2014 api/app.py:511"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83bb7b6a298cb48a", "name": "FastAPI POST `save_dashboard` without auth dependency \u2014 api/app.py:553", "shortDescription": {"text": "FastAPI POST `save_dashboard` without auth dependency \u2014 api/app.py:553"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6be9d9dceb6a9ab8", "name": "FastAPI POST `chat` without auth dependency \u2014 api/app.py:598", "shortDescription": {"text": "FastAPI POST `chat` without auth dependency \u2014 api/app.py:598"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8a25c740e727c017", "name": "FastAPI POST `chat_continue` without auth dependency \u2014 api/app.py:621", "shortDescription": {"text": "FastAPI POST `chat_continue` without auth dependency \u2014 api/app.py:621"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55f45df9063f39f8", "name": "FastAPI POST `run_action` without auth dependency \u2014 api/app.py:644", "shortDescription": {"text": "FastAPI POST `run_action` without auth dependency \u2014 api/app.py:644"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5248b6b9b96e7f68", "name": "FastAPI POST `view_data` without auth dependency \u2014 api/cube_data_routes.py:94", "shortDescription": {"text": "FastAPI POST `view_data` without auth dependency \u2014 api/cube_data_routes.py:94"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b54558d9628509e", "name": "FastAPI POST `store_credentials` without auth dependency \u2014 api/integrations_routes.py:675", "shortDescription": {"text": "FastAPI POST `store_credentials` without auth dependency \u2014 api/integrations_routes.py:675"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b6be3528ec95e6c2", "name": "FastAPI DELETE `delete_credentials` without auth dependency \u2014 api/integrations_routes.py:717", "shortDescription": {"text": "FastAPI DELETE `delete_credentials` without auth dependency \u2014 api/integrations_routes.py:717"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17db196ebdf99fb5", "name": "FastAPI POST `kick_sync` without auth dependency \u2014 api/integrations_routes.py:741", "shortDescription": {"text": "FastAPI POST `kick_sync` without auth dependency \u2014 api/integrations_routes.py:741"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e5b94958058df2cc", "name": "FastAPI POST `csv_import` without auth dependency \u2014 api/integrations_routes.py:842", "shortDescription": {"text": "FastAPI POST `csv_import` without auth dependency \u2014 api/integrations_routes.py:842"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8973e7cc20752c78", "name": "FastAPI POST `create_conversation` without auth dependency \u2014 api/conversations_routes.py:93", "shortDescription": {"text": "FastAPI POST `create_conversation` without auth dependency \u2014 api/conversations_routes.py:93"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-884664cfc56dbd67", "name": "FastAPI PATCH `rename_conversation` without auth dependency \u2014 api/conversations_routes.py:117", "shortDescription": {"text": "FastAPI PATCH `rename_conversation` without auth dependency \u2014 api/conversations_routes.py:117"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a687534242db64d0", "name": "FastAPI POST `archive_conversation` without auth dependency \u2014 api/conversations_routes.py:133", "shortDescription": {"text": "FastAPI POST `archive_conversation` without auth dependency \u2014 api/conversations_routes.py:133"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-808e3dfe8db3a169", "name": "FastAPI POST `unarchive_conversation` without auth dependency \u2014 api/conversations_routes.py:143", "shortDescription": {"text": "FastAPI POST `unarchive_conversation` without auth dependency \u2014 api/conversations_routes.py:143"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5cc87eadb7b6b4c", "name": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:146", "shortDescription": {"text": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:146"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bbcb66e0c8dc5e4c", "name": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:147", "shortDescription": {"text": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:147"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bab1a5b2cd4f10a3", "name": "FastAPI POST `create_playbook` without auth dependency \u2014 api/routes_studio.py:273", "shortDescription": {"text": "FastAPI POST `create_playbook` without auth dependency \u2014 api/routes_studio.py:273"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-08b582b8a0e83236", "name": "FastAPI PUT `update_playbook` without auth dependency \u2014 api/routes_studio.py:289", "shortDescription": {"text": "FastAPI PUT `update_playbook` without auth dependency \u2014 api/routes_studio.py:289"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84af411038550bfb", "name": "FastAPI DELETE `delete_playbook` without auth dependency \u2014 api/routes_studio.py:306", "shortDescription": {"text": "FastAPI DELETE `delete_playbook` without auth dependency \u2014 api/routes_studio.py:306"}, "fullDescription": {"text": "`@router.delete` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-23a0c87fdc1bdcea", "name": "FastAPI POST `instantiate_template` without auth dependency \u2014 api/routes_studio.py:318", "shortDescription": {"text": "FastAPI POST `instantiate_template` without auth dependency \u2014 api/routes_studio.py:318"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-83b10edb76d60996", "name": "FastAPI POST `activate_playbook_route` without auth dependency \u2014 api/routes_studio.py:333", "shortDescription": {"text": "FastAPI POST `activate_playbook_route` without auth dependency \u2014 api/routes_studio.py:333"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f54fde6d50e2615a", "name": "FastAPI POST `deactivate_playbook_route` without auth dependency \u2014 api/routes_studio.py:395", "shortDescription": {"text": "FastAPI POST `deactivate_playbook_route` without auth dependency \u2014 api/routes_studio.py:395"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01560fe80ca0b20e", "name": "FastAPI POST `run_playbook_route` without auth dependency \u2014 api/routes_studio.py:406", "shortDescription": {"text": "FastAPI POST `run_playbook_route` without auth dependency \u2014 api/routes_studio.py:406"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6c11bba499544c9f", "name": "FastAPI POST `sidecar_act` without auth dependency \u2014 api/sidecar_routes.py:80", "shortDescription": {"text": "FastAPI POST `sidecar_act` without auth dependency \u2014 api/sidecar_routes.py:80"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b35fa9af621c21c5", "name": "FastAPI POST `create_deal` without auth dependency \u2014 api/deals_routes.py:275", "shortDescription": {"text": "FastAPI POST `create_deal` without auth dependency \u2014 api/deals_routes.py:275"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7b4d0251f5c4302", "name": "FastAPI PATCH `edit_deal` without auth dependency \u2014 api/deals_routes.py:322", "shortDescription": {"text": "FastAPI PATCH `edit_deal` without auth dependency \u2014 api/deals_routes.py:322"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2917a74cbcb67d8d", "name": "FastAPI POST `log_deal_activity` without auth dependency \u2014 api/deals_routes.py:369", "shortDescription": {"text": "FastAPI POST `log_deal_activity` without auth dependency \u2014 api/deals_routes.py:369"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-63130152b4cc79a0", "name": "FastAPI POST `archive_deal` without auth dependency \u2014 api/deals_routes.py:385", "shortDescription": {"text": "FastAPI POST `archive_deal` without auth dependency \u2014 api/deals_routes.py:385"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7e8f4e3d587f9f8c", "name": "FastAPI POST `unarchive_deal` without auth dependency \u2014 api/deals_routes.py:389", "shortDescription": {"text": "FastAPI POST `unarchive_deal` without auth dependency \u2014 api/deals_routes.py:389"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52217e45ab68a7aa", "name": "FastAPI POST `move_stage` without auth dependency \u2014 api/deals_routes.py:393", "shortDescription": {"text": "FastAPI POST `move_stage` without auth dependency \u2014 api/deals_routes.py:393"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-776f8f7a0f437825", "name": "FastAPI POST `mount_public` without auth dependency \u2014 api/public_routes.py:163", "shortDescription": {"text": "FastAPI POST `mount_public` without auth dependency \u2014 api/public_routes.py:163"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7850324b33285886", "name": "FastAPI POST `create_task` without auth dependency \u2014 api/tasks_routes.py:153", "shortDescription": {"text": "FastAPI POST `create_task` without auth dependency \u2014 api/tasks_routes.py:153"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-765fda3284b1097a", "name": "FastAPI PATCH `edit_task` without auth dependency \u2014 api/tasks_routes.py:179", "shortDescription": {"text": "FastAPI PATCH `edit_task` without auth dependency \u2014 api/tasks_routes.py:179"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9845ab6a336d9912", "name": "FastAPI POST `complete_task` without auth dependency \u2014 api/tasks_routes.py:218", "shortDescription": {"text": "FastAPI POST `complete_task` without auth dependency \u2014 api/tasks_routes.py:218"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-17cea4b240e05be8", "name": "FastAPI POST `reopen_task` without auth dependency \u2014 api/tasks_routes.py:222", "shortDescription": {"text": "FastAPI POST `reopen_task` without auth dependency \u2014 api/tasks_routes.py:222"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3249ad40ebb21cfe", "name": "FastAPI POST `archive_task` without auth dependency \u2014 api/tasks_routes.py:235", "shortDescription": {"text": "FastAPI POST `archive_task` without auth dependency \u2014 api/tasks_routes.py:235"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-65743ae159794f3b", "name": "FastAPI POST `unarchive_task` without auth dependency \u2014 api/tasks_routes.py:239", "shortDescription": {"text": "FastAPI POST `unarchive_task` without auth dependency \u2014 api/tasks_routes.py:239"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e2c1bcbd14a9801d", "name": "FastAPI PUT `put_onboarding` without auth dependency \u2014 api/onboarding_routes.py:321", "shortDescription": {"text": "FastAPI PUT `put_onboarding` without auth dependency \u2014 api/onboarding_routes.py:321"}, "fullDescription": {"text": "`@router.put` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2edf966dee74cf20", "name": "FastAPI POST `load_sample` without auth dependency \u2014 api/onboarding_routes.py:336", "shortDescription": {"text": "FastAPI POST `load_sample` without auth dependency \u2014 api/onboarding_routes.py:336"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47af9017430e8ff2", "name": "FastAPI POST `mount_support` without auth dependency \u2014 api/support_routes.py:153", "shortDescription": {"text": "FastAPI POST `mount_support` without auth dependency \u2014 api/support_routes.py:153"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-197fe9422ce3e558", "name": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:233)", "shortDescription": {"text": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:233)"}, "fullDescription": {"text": "`web/src/auth/cognito.ts:233` calls `POST https://${domain}/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bda391d94abb656a", "name": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:275)", "shortDescription": {"text": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:275)"}, "fullDescription": {"text": "`web/src/auth/cognito.ts:275` calls `POST https://${domain}/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed80b9d22a5ae874", "name": "Dangling fetch: POST https://${domain}/oauth2/revoke (web/src/auth/cognito.ts:362)", "shortDescription": {"text": "Dangling fetch: POST https://${domain}/oauth2/revoke (web/src/auth/cognito.ts:362)"}, "fullDescription": {"text": "`web/src/auth/cognito.ts:362` calls `POST https://${domain}/oauth2/revoke` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>/oauth2/revoke`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fe95f31f2fce6fd1", "name": "Unused endpoint: GET /account/export", "shortDescription": {"text": "Unused endpoint: GET /account/export"}, "fullDescription": {"text": "`api/account_routes.py` declares `GET /account/export` 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-dbfc08bae13a19b3", "name": "Unused endpoint: POST /account/delete", "shortDescription": {"text": "Unused endpoint: POST /account/delete"}, "fullDescription": {"text": "`api/account_delete_routes.py` declares `POST /account/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-7b0bc4b318458b1a", "name": "Unused endpoint: GET /knowledge", "shortDescription": {"text": "Unused endpoint: GET /knowledge"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `GET /knowledge` 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-d5534aedb5ed46df", "name": "Unused endpoint: GET /knowledge/search", "shortDescription": {"text": "Unused endpoint: GET /knowledge/search"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `GET /knowledge/search` 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-9a22639dcf56ca8b", "name": "Unused endpoint: POST /knowledge/documents", "shortDescription": {"text": "Unused endpoint: POST /knowledge/documents"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `POST /knowledge/documents` 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-9c2326e7969e4d5d", "name": "Unused endpoint: GET /knowledge/documents", "shortDescription": {"text": "Unused endpoint: GET /knowledge/documents"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `GET /knowledge/documents` 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-1576bd6a8073b50a", "name": "Unused endpoint: PATCH /knowledge/documents/{ref_id}/location", "shortDescription": {"text": "Unused endpoint: PATCH /knowledge/documents/{ref_id}/location"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `PATCH /knowledge/documents/{ref_id}/location` 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-a93dbcd77a600622", "name": "Unused endpoint: GET /knowledge/documents/{ref_id}", "shortDescription": {"text": "Unused endpoint: GET /knowledge/documents/{ref_id}"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `GET /knowledge/documents/{ref_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-5f1f1dbd7e4e53a7", "name": "Unused endpoint: PUT /knowledge/documents/{ref_id}", "shortDescription": {"text": "Unused endpoint: PUT /knowledge/documents/{ref_id}"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `PUT /knowledge/documents/{ref_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-244b2e8c82762f29", "name": "Unused endpoint: DELETE /knowledge/documents/{ref_id}", "shortDescription": {"text": "Unused endpoint: DELETE /knowledge/documents/{ref_id}"}, "fullDescription": {"text": "`api/knowledge_routes.py` declares `DELETE /knowledge/documents/{ref_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-99dd6421d5f7bb29", "name": "Unused endpoint: GET /public/status", "shortDescription": {"text": "Unused endpoint: GET /public/status"}, "fullDescription": {"text": "`api/status_routes.py` declares `GET /public/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-963710f42a2c8219", "name": "Unused endpoint: GET /api/status", "shortDescription": {"text": "Unused endpoint: GET /api/status"}, "fullDescription": {"text": "`api/status_routes.py` declares `GET /api/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6327e7d63f12d827", "name": "Unused endpoint: GET /contacts", "shortDescription": {"text": "Unused endpoint: GET /contacts"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /contacts` 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-1eb8c6d4f14b7cdc", "name": "Unused endpoint: GET /contacts/duplicates", "shortDescription": {"text": "Unused endpoint: GET /contacts/duplicates"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /contacts/duplicates` 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-56c76afbccd7686b", "name": "Unused endpoint: POST /contacts/merge", "shortDescription": {"text": "Unused endpoint: POST /contacts/merge"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /contacts/merge` 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-c03a22ce5bc1852c", "name": "Unused endpoint: GET /contacts/{contact_id}", "shortDescription": {"text": "Unused endpoint: GET /contacts/{contact_id}"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /contacts/{contact_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-4321271f647e2bd0", "name": "Unused endpoint: POST /contacts", "shortDescription": {"text": "Unused endpoint: POST /contacts"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /contacts` 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-9337d7f7f251c9b5", "name": "Unused endpoint: PATCH /contacts/{contact_id}", "shortDescription": {"text": "Unused endpoint: PATCH /contacts/{contact_id}"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `PATCH /contacts/{contact_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-a35ce3e9c9f59e0a", "name": "Unused endpoint: GET /companies", "shortDescription": {"text": "Unused endpoint: GET /companies"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /companies` 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-3a256e55f31d8dd8", "name": "Unused endpoint: GET /companies/duplicates", "shortDescription": {"text": "Unused endpoint: GET /companies/duplicates"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /companies/duplicates` 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-250dd6450b569c07", "name": "Unused endpoint: POST /companies/merge", "shortDescription": {"text": "Unused endpoint: POST /companies/merge"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /companies/merge` 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-0a5f0f911d476173", "name": "Unused endpoint: GET /companies/{company_id}", "shortDescription": {"text": "Unused endpoint: GET /companies/{company_id}"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `GET /companies/{company_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-ec39abb0b24cc5b2", "name": "Unused endpoint: POST /companies", "shortDescription": {"text": "Unused endpoint: POST /companies"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /companies` 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-9654464a0e81d943", "name": "Unused endpoint: PATCH /companies/{company_id}", "shortDescription": {"text": "Unused endpoint: PATCH /companies/{company_id}"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `PATCH /companies/{company_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-c1c9a70c6db05568", "name": "Unused endpoint: POST /contacts/{contact_id}/activities", "shortDescription": {"text": "Unused endpoint: POST /contacts/{contact_id}/activities"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /contacts/{contact_id}/activities` 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-c3420012fd8390a7", "name": "Unused endpoint: POST /contacts/{contact_id}/archive", "shortDescription": {"text": "Unused endpoint: POST /contacts/{contact_id}/archive"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /contacts/{contact_id}/archive` 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-2ab8562874f1c974", "name": "Unused endpoint: POST /contacts/{contact_id}/unarchive", "shortDescription": {"text": "Unused endpoint: POST /contacts/{contact_id}/unarchive"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /contacts/{contact_id}/unarchive` 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-c8569c5e37623cc2", "name": "Unused endpoint: POST /companies/{company_id}/archive", "shortDescription": {"text": "Unused endpoint: POST /companies/{company_id}/archive"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /companies/{company_id}/archive` 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-0a2cbee483383936", "name": "Unused endpoint: POST /companies/{company_id}/unarchive", "shortDescription": {"text": "Unused endpoint: POST /companies/{company_id}/unarchive"}, "fullDescription": {"text": "`api/contacts_routes.py` declares `POST /companies/{company_id}/unarchive` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d16b1bb2723f51e", "name": "Unused endpoint: POST /signup", "shortDescription": {"text": "Unused endpoint: POST /signup"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /signup` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdf523471f4ae02e", "name": "Unused endpoint: GET /signup/{account_id}", "shortDescription": {"text": "Unused endpoint: GET /signup/{account_id}"}, "fullDescription": {"text": "`api/signup_routes.py` declares `GET /signup/{account_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-faa500a1117eb47f", "name": "Unused endpoint: POST /signup/{account_id}/verify-email", "shortDescription": {"text": "Unused endpoint: POST /signup/{account_id}/verify-email"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /signup/{account_id}/verify-email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f18d63e92cba467", "name": "Unused endpoint: GET /signup/{account_id}/verify-email", "shortDescription": {"text": "Unused endpoint: GET /signup/{account_id}/verify-email"}, "fullDescription": {"text": "`api/signup_routes.py` declares `GET /signup/{account_id}/verify-email` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f8dbe34872483b4", "name": "Unused endpoint: POST /signup/{account_id}/verify-phone", "shortDescription": {"text": "Unused endpoint: POST /signup/{account_id}/verify-phone"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /signup/{account_id}/verify-phone` 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-e1fa1a66cbb9fddb", "name": "Unused endpoint: POST /signup/{account_id}/checkout", "shortDescription": {"text": "Unused endpoint: POST /signup/{account_id}/checkout"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /signup/{account_id}/checkout` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e81ab546c85891b0", "name": "Unused endpoint: POST /signup/{account_id}/retry-provision", "shortDescription": {"text": "Unused endpoint: POST /signup/{account_id}/retry-provision"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /signup/{account_id}/retry-provision` 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-1dfcc9529630142e", "name": "Unused endpoint: POST /webhooks/stripe", "shortDescription": {"text": "Unused endpoint: POST /webhooks/stripe"}, "fullDescription": {"text": "`api/signup_routes.py` declares `POST /webhooks/stripe` 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-b5038409102d29e2", "name": "Unused endpoint: POST /billing/portal-session", "shortDescription": {"text": "Unused endpoint: POST /billing/portal-session"}, "fullDescription": {"text": "`api/billing_routes.py` declares `POST /billing/portal-session` 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-1552af7fe444d20d", "name": "Unused endpoint: POST /api/billing/portal-session", "shortDescription": {"text": "Unused endpoint: POST /api/billing/portal-session"}, "fullDescription": {"text": "`api/billing_routes.py` declares `POST /api/billing/portal-session` 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-efd2fb68a69a7b51", "name": "Unused endpoint: GET /billing/invoices", "shortDescription": {"text": "Unused endpoint: GET /billing/invoices"}, "fullDescription": {"text": "`api/billing_routes.py` declares `GET /billing/invoices` 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-c444dca0336d5659", "name": "Unused endpoint: GET /api/billing/invoices", "shortDescription": {"text": "Unused endpoint: GET /api/billing/invoices"}, "fullDescription": {"text": "`api/billing_routes.py` declares `GET /api/billing/invoices` 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-bced35a4cd9c329b", "name": "Unused endpoint: GET /billing", "shortDescription": {"text": "Unused endpoint: GET /billing"}, "fullDescription": {"text": "`api/billing_routes.py` declares `GET /billing` 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-38ea87798d21ae17", "name": "Unused endpoint: GET /api/billing", "shortDescription": {"text": "Unused endpoint: GET /api/billing"}, "fullDescription": {"text": "`api/billing_routes.py` declares `GET /api/billing` 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-0cc6d1ba34d97c8c", "name": "Unused endpoint: GET /account/modules", "shortDescription": {"text": "Unused endpoint: GET /account/modules"}, "fullDescription": {"text": "`api/modules_routes.py` declares `GET /account/modules` 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-391e36a5b0288083", "name": "Unused endpoint: PUT /account/modules", "shortDescription": {"text": "Unused endpoint: PUT /account/modules"}, "fullDescription": {"text": "`api/modules_routes.py` declares `PUT /account/modules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`api/app.py` declares `GET /me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c1545494ab6166c", "name": "Unused endpoint: GET /api/me", "shortDescription": {"text": "Unused endpoint: GET /api/me"}, "fullDescription": {"text": "`api/app.py` declares `GET /api/me` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0518558dda792269", "name": "Unused endpoint: GET /approvals", "shortDescription": {"text": "Unused endpoint: GET /approvals"}, "fullDescription": {"text": "`api/app.py` declares `GET /approvals` 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-4acc9902c4f7dffb", "name": "Unused endpoint: POST /approvals/{approval_id}/decide", "shortDescription": {"text": "Unused endpoint: POST /approvals/{approval_id}/decide"}, "fullDescription": {"text": "`api/app.py` declares `POST /approvals/{approval_id}/decide` 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-4a7ffa6a3ee2cb58", "name": "Unused endpoint: GET /views", "shortDescription": {"text": "Unused endpoint: GET /views"}, "fullDescription": {"text": "`api/app.py` declares `GET /views` 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/21125"}, "properties": {"repository": "theogyeezy/friesenlabs", "repoUrl": "https://github.com/theogyeezy/friesenlabs", "branch": "main"}, "results": [{"ruleId": "scanner-034e469028ca432f", "level": "note", "message": {"text": "Possibly dead Python function: append_turn"}, "properties": {"repobilityId": "9cf275de57a581f2", "scanner": "scanner-primary", "fingerprint": "034e469028ca432f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/pg_clients.py:1817"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-393c3d0ca4498b68", "level": "note", "message": {"text": "Possibly dead Python function: current_admin"}, "properties": {"repobilityId": "f4a4ef5148990322", "scanner": "scanner-primary", "fingerprint": "393c3d0ca4498b68", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/auth.py:181"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e066a2538e078e94", "level": "note", "message": {"text": "Possibly dead Python function: entitled_tenant"}, "properties": {"repobilityId": "96afbd9e59bc0bb7", "scanner": "scanner-primary", "fingerprint": "e066a2538e078e94", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c42c8e812f458543", "level": "note", "message": {"text": "Possibly dead Python function: deps_from_dsn"}, "properties": {"repobilityId": "939fd63a41d4fcd4", "scanner": "scanner-primary", "fingerprint": "c42c8e812f458543", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/onboarding_routes.py:293"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-df92472acebd4c70", "level": "note", "message": {"text": "Possibly dead Python function: resume_global"}, "properties": {"repobilityId": "b3b7cab7cb6ad091", "scanner": "scanner-primary", "fingerprint": "df92472acebd4c70", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/killswitch.py:18"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9d0f75750462e970", "level": "note", "message": {"text": "Possibly dead Python function: interrupt_event"}, "properties": {"repobilityId": "f39be61a21a29717", "scanner": "scanner-primary", "fingerprint": "9d0f75750462e970", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/killswitch.py:53"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d020602c6f421d5", "level": "note", "message": {"text": "Possibly dead Python function: apply_update_deal"}, "properties": {"repobilityId": "b7df5f8393254394", "scanner": "scanner-primary", "fingerprint": "5d020602c6f421d5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/appliers.py:30"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ccd895ca0bf50529", "level": "note", "message": {"text": "Possibly dead Python function: apply_update_contact"}, "properties": {"repobilityId": "e4179667563ec183", "scanner": "scanner-primary", "fingerprint": "ccd895ca0bf50529", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/appliers.py:45"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1bfd22fdb40afa70", "level": "note", "message": {"text": "Possibly dead Python function: apply_create_activity"}, "properties": {"repobilityId": "0fc3826cf10c492f", "scanner": "scanner-primary", "fingerprint": "1bfd22fdb40afa70", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/appliers.py:60"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8010e1eb2e11bf59", "level": "note", "message": {"text": "Possibly dead Python function: apply_create_deal"}, "properties": {"repobilityId": "63979490f9a80ff0", "scanner": "scanner-primary", "fingerprint": "8010e1eb2e11bf59", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/appliers.py:72"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b732f8f66246894", "level": "note", "message": {"text": "Possibly dead Python function: record_only"}, "properties": {"repobilityId": "03cc1259015b9bde", "scanner": "scanner-primary", "fingerprint": "6b732f8f66246894", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/control/appliers.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1421ad0306c883e1", "level": "note", "message": {"text": "Possibly dead Python function: refund_stub"}, "properties": {"repobilityId": "c4f039bdff790905", "scanner": "scanner-primary", "fingerprint": "1421ad0306c883e1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "signup/provisioning.py:46"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4df51c07fb699b56", "level": "note", "message": {"text": "Possibly dead Python function: robust_ewma"}, "properties": {"repobilityId": "ad058d3ccfe83496", "scanner": "scanner-primary", "fingerprint": "4df51c07fb699b56", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ml/anomaly.py:86"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-048bf12651afcd11", "level": "note", "message": {"text": "Possibly dead Python function: now_utc"}, "properties": {"repobilityId": "d1243d7193620093", "scanner": "scanner-primary", "fingerprint": "048bf12651afcd11", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ml/anomaly_data.py:62"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4575cedbf0a032ec", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/SpecRenderer.tsx:13"}, "properties": {"repobilityId": "25a0c479c2c3d889", "scanner": "scanner-primary", "fingerprint": "4575cedbf0a032ec", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0595598e6ff09f49", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/dashboard/markdown.tsx:5"}, "properties": {"repobilityId": "a59653d349e1afae", "scanner": "scanner-primary", "fingerprint": "0595598e6ff09f49", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a2b051624388cf44", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 web/src/lib/SafeHtml.tsx:3"}, "properties": {"repobilityId": "088f7ad1e3817ce1", "scanner": "scanner-primary", "fingerprint": "a2b051624388cf44", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c5535522c3a813b1", "level": "warning", "message": {"text": "Privileged port 17 in use"}, "properties": {"repobilityId": "0bf38fb8f89ec589", "scanner": "scanner-primary", "fingerprint": "c5535522c3a813b1", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reap.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b67e5cb221b6d91b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "properties": {"repobilityId": "8cc237fe892d02f7", "scanner": "scanner-primary", "fingerprint": "b67e5cb221b6d91b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-9417a5f37341f597", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "properties": {"repobilityId": "addb202cd4fe1e5a", "scanner": "scanner-primary", "fingerprint": "9417a5f37341f597", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "worker/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-ea2f5841568ad840", "level": "warning", "message": {"text": "Dockerfile runs as root: semantic/Dockerfile"}, "properties": {"repobilityId": "4febef6b6cf967e5", "scanner": "scanner-primary", "fingerprint": "ea2f5841568ad840", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-14e0079b2b1fdeec", "level": "warning", "message": {"text": "Docker base image uses a mutable or implicit tag: cubejs/cube:latest"}, "properties": {"repobilityId": "8101fbe886ee4ac2", "scanner": "scanner-primary", "fingerprint": "14e0079b2b1fdeec", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "semantic/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-4fea1e40e49691bb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/index.html:271"}, "properties": {"repobilityId": "8b7cb17afe074711", "scanner": "scanner-primary", "fingerprint": "4fea1e40e49691bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/prototype/index.html"}, "region": {"startLine": 271}}}]}, {"ruleId": "scanner-18c8486c5c816001", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/index.html:664"}, "properties": {"repobilityId": "1b3b27352033c05c", "scanner": "scanner-primary", "fingerprint": "18c8486c5c816001", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/prototype/apple-meta/index.html"}, "region": {"startLine": 664}}}]}, {"ruleId": "scanner-7eba39206b5c1c73", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/prototype/apple-meta/app.html:440"}, "properties": {"repobilityId": "49b120498c9089bb", "scanner": "scanner-primary", "fingerprint": "7eba39206b5c1c73", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/prototype/apple-meta/app.html"}, "region": {"startLine": 440}}}]}, {"ruleId": "scanner-e8f17f3810d1b9df", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in docs/design/prototype/apple-meta/app.html:576"}, "properties": {"repobilityId": "117855277f78f79e", "scanner": "scanner-primary", "fingerprint": "e8f17f3810d1b9df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/prototype/apple-meta/app.html"}, "region": {"startLine": 576}}}]}, {"ruleId": "scanner-1f9c4228fe2d9815", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in scripts/dev/up.sh:41"}, "properties": {"repobilityId": "1c853a5636008a52", "scanner": "scanner-primary", "fingerprint": "1f9c4228fe2d9815", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev/up.sh"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-ab79d9b68a87451f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in web/README.md:119"}, "properties": {"repobilityId": "4e8fda3a8fa3d468", "scanner": "scanner-primary", "fingerprint": "ab79d9b68a87451f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/README.md"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-ef56ab771c6e8816", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in web/src/dashboard/SpecRenderer.tsx:367"}, "properties": {"repobilityId": "2b64bc03308548d5", "scanner": "scanner-primary", "fingerprint": "ef56ab771c6e8816", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/src/dashboard/SpecRenderer.tsx"}, "region": {"startLine": 367}}}]}, {"ruleId": "scanner-ce644785050c4fa5", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in web/e2e/auth.spec.ts:112"}, "properties": {"repobilityId": "84d86c37a8ec8b4d", "scanner": "scanner-primary", "fingerprint": "ce644785050c4fa5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "web/e2e/auth.spec.ts"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-8142e5cf9be78b15", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in .claude/skills/friesenlabs-deploy/SKILL.md:108"}, "properties": {"repobilityId": "480f14f83decf033", "scanner": "scanner-primary", "fingerprint": "8142e5cf9be78b15", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/friesenlabs-deploy/SKILL.md"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-535b22f1637eaac8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "18de1683718f76bc", "scanner": "scanner-primary", "fingerprint": "535b22f1637eaac8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/migrate.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5d49045788b3f37d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2b7a73b787bba6b9", "scanner": "scanner-primary", "fingerprint": "5d49045788b3f37d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reap.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ad6701f0a8405e22", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8384c23520d55657", "scanner": "scanner-primary", "fingerprint": "ad6701f0a8405e22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-673fd08c667efadb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "30ccbe03d3acd7cd", "scanner": "scanner-primary", "fingerprint": "673fd08c667efadb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build-images.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03f5d97a2d63780c", "level": "note", "message": {"text": "Very large file: api/pg_clients.py (1854 lines)"}, "properties": {"repobilityId": "a04b275b04f67027", "scanner": "scanner-primary", "fingerprint": "03f5d97a2d63780c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b44960664e59f5e7", "level": "note", "message": {"text": "Very large file: api/app.py (845 lines)"}, "properties": {"repobilityId": "af262f7d9ecea14b", "scanner": "scanner-primary", "fingerprint": "b44960664e59f5e7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2b62a689afde4f12", "level": "note", "message": {"text": "Very large file: api/integrations_routes.py (1058 lines)"}, "properties": {"repobilityId": "d027979a64404f8b", "scanner": "scanner-primary", "fingerprint": "2b62a689afde4f12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48a2205ef2e1d481", "level": "note", "message": {"text": "Very large file: scripts/generate_demo_dataset.py (1037 lines)"}, "properties": {"repobilityId": "79fab29ed18b2f32", "scanner": "scanner-primary", "fingerprint": "48a2205ef2e1d481", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f17c730c5b553e7d", "level": "note", "message": {"text": "Very large file: web/src/app.tsx (859 lines)"}, "properties": {"repobilityId": "5765143853a68022", "scanner": "scanner-primary", "fingerprint": "f17c730c5b553e7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d6a49e08db0bb5f6", "level": "note", "message": {"text": "Very large file: web/src/api/PipelineBoard.tsx (1282 lines)"}, "properties": {"repobilityId": "3ba0a2ef4db5abc1", "scanner": "scanner-primary", "fingerprint": "d6a49e08db0bb5f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-af776ba9b775126a", "level": "note", "message": {"text": "Very large file: web/src/api/KnowledgeView.tsx (1548 lines)"}, "properties": {"repobilityId": "30690de06564b656", "scanner": "scanner-primary", "fingerprint": "af776ba9b775126a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f82611e3acd534a3", "level": "note", "message": {"text": "Very large file: web/src/api/client.ts (3095 lines)"}, "properties": {"repobilityId": "6b49c9b906bac046", "scanner": "scanner-primary", "fingerprint": "f82611e3acd534a3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff3d2be27ae4ffca", "level": "note", "message": {"text": "Very large file: web/src/api/mockData.ts (1557 lines)"}, "properties": {"repobilityId": "d09123e472046db0", "scanner": "scanner-primary", "fingerprint": "ff3d2be27ae4ffca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4eac297e1a14b58d", "level": "note", "message": {"text": "Very large file: web/src/api/ContactsDirectory.tsx (1705 lines)"}, "properties": {"repobilityId": "a4e7164cf227320d", "scanner": "scanner-primary", "fingerprint": "4eac297e1a14b58d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e0720f9cb6d4d224", "level": "note", "message": {"text": "Very large file: web/src/screens/landing.tsx (1601 lines)"}, "properties": {"repobilityId": "fc9836df829e5ae7", "scanner": "scanner-primary", "fingerprint": "e0720f9cb6d4d224", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-55d0bd09d84e12c6", "level": "note", "message": {"text": "Very large file: web/src/screens/workflow.tsx (813 lines)"}, "properties": {"repobilityId": "32d651d820becaf5", "scanner": "scanner-primary", "fingerprint": "55d0bd09d84e12c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-08a48f52ebbb5c04", "level": "note", "message": {"text": "Very large file: web/e2e/knowledge.spec.ts (1169 lines)"}, "properties": {"repobilityId": "82a3d168881878d9", "scanner": "scanner-primary", "fingerprint": "08a48f52ebbb5c04", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9a8795cf3855de16", "level": "note", "message": {"text": "Very large file: agents/runtime.py (931 lines)"}, "properties": {"repobilityId": "267f7662e5e0ca3a", "scanner": "scanner-primary", "fingerprint": "9a8795cf3855de16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c04c52d2ce0a268", "level": "note", "message": {"text": "47 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "8c04c52d2ce0a268", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "de0a554175d23299", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "4ce4a1eca4efe89b", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "133d311815b56b85", "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": "6a62d2c72d7d5010", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "cce6356aacb660b1", "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": "0837457f815c0c19", "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": "163fadf93700a1ff", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-1f1c099bb304e528", "level": "none", "message": {"text": "Commented-code block (5 lines) in conv/synthesizer.py:53"}, "properties": {"repobilityId": "fa2e222523395fec", "scanner": "scanner-primary", "fingerprint": "1f1c099bb304e528", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25a7c89f8685e96e", "level": "none", "message": {"text": "Commented-code block (5 lines) in conv/cache.py:80"}, "properties": {"repobilityId": "728c2581c6dc679e", "scanner": "scanner-primary", "fingerprint": "25a7c89f8685e96e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f9fe5783790b2a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in conv/session.py:230"}, "properties": {"repobilityId": "f919e6087ceb2b38", "scanner": "scanner-primary", "fingerprint": "3f9fe5783790b2a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73b923055fe8d38", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/test_control_rls.py:58"}, "properties": {"repobilityId": "84b63050546303f3", "scanner": "scanner-primary", "fingerprint": "d73b923055fe8d38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76527002b0cd7fa6", "level": "note", "message": {"text": "Legacy-named symbol `test_disposable_email_rejected_with_honest_copy` in tests/integration/test_api_signup_abuse.py:84"}, "properties": {"repobilityId": "5e16663551bdfff4", "scanner": "scanner-primary", "fingerprint": "76527002b0cd7fa6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1da941720fc7dec", "level": "note", "message": {"text": "Legacy-named symbol `test_update_document_new_namespace_lands_then_cleans_old` in tests/integration/test_api_knowledge.py:668"}, "properties": {"repobilityId": "0baf120671e48962", "scanner": "scanner-primary", "fingerprint": "f1da941720fc7dec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d58584135f412e04", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_draft_email.py:121"}, "properties": {"repobilityId": "e989ac4835f25749", "scanner": "scanner-primary", "fingerprint": "d58584135f412e04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ee9e8724b8a3dd7", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_runtime_settle.py:153"}, "properties": {"repobilityId": "f1f9c9c19531e6f1", "scanner": "scanner-primary", "fingerprint": "0ee9e8724b8a3dd7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dff894280e5a99be", "level": "note", "message": {"text": "Legacy-named symbol `test_upgrade_roster_wins_serves_new_and_retires_old` in tests/unit/test_roster_autoupgrade.py:284"}, "properties": {"repobilityId": "140e9b976f0e91f4", "scanner": "scanner-primary", "fingerprint": "dff894280e5a99be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-00ed3a8f6252c10b", "level": "note", "message": {"text": "Legacy-named symbol `test_legacy_loader_reads_only_v1` in tests/unit/test_ml_artifacts.py:129"}, "properties": {"repobilityId": "902b717efabdb283", "scanner": "scanner-primary", "fingerprint": "00ed3a8f6252c10b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4e08c3200cfe21c", "level": "note", "message": {"text": "Legacy-named symbol `test_check_raises_with_honest_copy` in tests/unit/test_signup_abuse.py:38"}, "properties": {"repobilityId": "7376a1715334aba3", "scanner": "scanner-primary", "fingerprint": "d4e08c3200cfe21c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de8b32b56f909d0d", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in tests/unit/test_batch_embed.py:46"}, "properties": {"repobilityId": "b92912ef33178c80", "scanner": "scanner-primary", "fingerprint": "de8b32b56f909d0d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7867217543b2fefe", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_sql_schema.py:24"}, "properties": {"repobilityId": "9906c8afc7f0c748", "scanner": "scanner-primary", "fingerprint": "7867217543b2fefe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf73b4c8879204f9", "level": "note", "message": {"text": "Legacy-named symbol `test_custom_field_labels_resolved_via_fields_v2` in tests/unit/test_pipedrive_connector.py:349"}, "properties": {"repobilityId": "a934b86e9da4237e", "scanner": "scanner-primary", "fingerprint": "cf73b4c8879204f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-206fae9cae75aeb5", "level": "note", "message": {"text": "Legacy-named symbol `test_get_template_returns_a_copy` in tests/unit/test_playbook_schema.py:196"}, "properties": {"repobilityId": "480c87fadec069ac", "scanner": "scanner-primary", "fingerprint": "206fae9cae75aeb5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df19cc51108f3af9", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_signup_provisioning.py:237"}, "properties": {"repobilityId": "738e6b38b56a4579", "scanner": "scanner-primary", "fingerprint": "df19cc51108f3af9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ea3abbefdd96e72", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/account_delete_routes.py:61"}, "properties": {"repobilityId": "9ca99111b9f68144", "scanner": "scanner-primary", "fingerprint": "7ea3abbefdd96e72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92454b957487b1e2", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/knowledge_routes.py:115"}, "properties": {"repobilityId": "93cc9bbd80861127", "scanner": "scanner-primary", "fingerprint": "92454b957487b1e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3eada21b4b3b6f7", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/contacts_routes.py:77"}, "properties": {"repobilityId": "c308f080bceb2883", "scanner": "scanner-primary", "fingerprint": "e3eada21b4b3b6f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-611e96b153502602", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/signup_routes.py:64"}, "properties": {"repobilityId": "82deb7176d0f4cec", "scanner": "scanner-primary", "fingerprint": "611e96b153502602", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf23f6e87efa36e8", "level": "none", "message": {"text": "Commented-code block (8 lines) in api/asgi.py:219"}, "properties": {"repobilityId": "3e250d502b1660a4", "scanner": "scanner-primary", "fingerprint": "cf23f6e87efa36e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc69a483b6684cf1", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/app.py:101"}, "properties": {"repobilityId": "74f5bd5d76498db0", "scanner": "scanner-primary", "fingerprint": "bc69a483b6684cf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0789dc2fbd8203dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/cortex_routes.py:164"}, "properties": {"repobilityId": "4c7ab902b0d32985", "scanner": "scanner-primary", "fingerprint": "0789dc2fbd8203dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81ae8f16309941c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/integrations_routes.py:93"}, "properties": {"repobilityId": "cb34df8244649eb3", "scanner": "scanner-primary", "fingerprint": "81ae8f16309941c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d57999b28cabe49", "level": "none", "message": {"text": "Commented-code block (7 lines) in api/routes_studio.py:99"}, "properties": {"repobilityId": "0d0b37cd248d9bb1", "scanner": "scanner-primary", "fingerprint": "4d57999b28cabe49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0684a08af0911920", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/prod_deps.py:161"}, "properties": {"repobilityId": "b01af2eee11a7a02", "scanner": "scanner-primary", "fingerprint": "0684a08af0911920", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-908333aca666a28e", "level": "note", "message": {"text": "Stub function `confirm` (body is just `pass`/`return`) \u2014 api/prod_deps.py:153"}, "properties": {"repobilityId": "937e664e1209addc", "scanner": "scanner-primary", "fingerprint": "908333aca666a28e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-52cf1bbd2c4c981a", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/control/greenlight.py:353"}, "properties": {"repobilityId": "966c8d8368af0686", "scanner": "scanner-primary", "fingerprint": "52cf1bbd2c4c981a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d9ac8755a38917d", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/control/gate.py:43"}, "properties": {"repobilityId": "f805756f8660460c", "scanner": "scanner-primary", "fingerprint": "2d9ac8755a38917d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce8ceabfe3756bf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/config.py:33"}, "properties": {"repobilityId": "f34ae82b82ce9b04", "scanner": "scanner-primary", "fingerprint": "ce8ceabfe3756bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-499e98b92e9e4868", "level": "none", "message": {"text": "Commented-code block (5 lines) in shared/view_spec.py:47"}, "properties": {"repobilityId": "db005c0a6623913d", "scanner": "scanner-primary", "fingerprint": "499e98b92e9e4868", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f979b383068e378", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/isolation_test.py:126"}, "properties": {"repobilityId": "5188f7bca42c1e5e", "scanner": "scanner-primary", "fingerprint": "8f979b383068e378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37966ae67f35e864", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate_test_packs.py:60"}, "properties": {"repobilityId": "a09b2a743c3bd734", "scanner": "scanner-primary", "fingerprint": "37966ae67f35e864", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bcfef5948300f1e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ops/set_tfvars_secret.py:87"}, "properties": {"repobilityId": "f04d7ac2d0a14954", "scanner": "scanner-primary", "fingerprint": "5bcfef5948300f1e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-90a07fcc88de1b02", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ml/retrain_all.py:234"}, "properties": {"repobilityId": "a9dba907a7992e66", "scanner": "scanner-primary", "fingerprint": "90a07fcc88de1b02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9460aa072da87440", "level": "none", "message": {"text": "Commented-code block (5 lines) in signup/stripe_adapter.py:83"}, "properties": {"repobilityId": "cc6e664e729e3730", "scanner": "scanner-primary", "fingerprint": "9460aa072da87440", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c6ea926d2d3f492", "level": "none", "message": {"text": "Commented-code block (7 lines) in signup/cognito_admin.py:214"}, "properties": {"repobilityId": "ff97465ccfdfeec3", "scanner": "scanner-primary", "fingerprint": "0c6ea926d2d3f492", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd4d79c2252a3299", "level": "none", "message": {"text": "Commented-code block (5 lines) in signup/payment.py:108"}, "properties": {"repobilityId": "8a85ab7f855bc2db", "scanner": "scanner-primary", "fingerprint": "bd4d79c2252a3299", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-863041945b526310", "level": "none", "message": {"text": "Commented-code block (6 lines) in signup/provisioning.py:49"}, "properties": {"repobilityId": "6b1a188a945888e7", "scanner": "scanner-primary", "fingerprint": "863041945b526310", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59946e28ece1182b", "level": "none", "message": {"text": "Commented-code block (6 lines) in signup/store_pg.py:194"}, "properties": {"repobilityId": "c4da9fa9110189b0", "scanner": "scanner-primary", "fingerprint": "59946e28ece1182b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9af2cdf35c468d88", "level": "none", "message": {"text": "Commented-code block (6 lines) in worker/worker.py:54"}, "properties": {"repobilityId": "35eb64cc412a2c48", "scanner": "scanner-primary", "fingerprint": "9af2cdf35c468d88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4261aa5caafca11", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in ingest/embed.py:227"}, "properties": {"repobilityId": "182cd9fbb9173b84", "scanner": "scanner-primary", "fingerprint": "b4261aa5caafca11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d0db1aa1eb8f9bc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in ingest/sinks.py:72"}, "properties": {"repobilityId": "2fb0a41c9e037392", "scanner": "scanner-primary", "fingerprint": "d0db1aa1eb8f9bc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2361fd5edb7660f9", "level": "none", "message": {"text": "Commented-code block (8 lines) in ingest/connectors/salesforce.py:505"}, "properties": {"repobilityId": "f02ab5be037742d1", "scanner": "scanner-primary", "fingerprint": "2361fd5edb7660f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-934c9022f343e75c", "level": "none", "message": {"text": "Commented-code block (6 lines) in ingest/connectors/gohighlevel_full.py:55"}, "properties": {"repobilityId": "1eadc9cff968aad1", "scanner": "scanner-primary", "fingerprint": "934c9022f343e75c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c65d909a040866b0", "level": "none", "message": {"text": "Commented-code block (11 lines) in ingest/connectors/pipedrive.py:515"}, "properties": {"repobilityId": "af132c6841cdf1c3", "scanner": "scanner-primary", "fingerprint": "c65d909a040866b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2fbce3b0a0ec2d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in ingest/connectors/hubspot.py:58"}, "properties": {"repobilityId": "27184901e5802a6b", "scanner": "scanner-primary", "fingerprint": "c2fbce3b0a0ec2d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-368901f27d3c7ddb", "level": "none", "message": {"text": "Commented-code block (10 lines) in ingest/connectors/gohighlevel.py:327"}, "properties": {"repobilityId": "d315e188933db47b", "scanner": "scanner-primary", "fingerprint": "368901f27d3c7ddb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-896c7ae7d362ab67", "level": "none", "message": {"text": "Commented-code block (5 lines) in ingest/connectors/oauth.py:133"}, "properties": {"repobilityId": "b0bd3b9f2dd57a04", "scanner": "scanner-primary", "fingerprint": "896c7ae7d362ab67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9176c60e9da1b950", "level": "none", "message": {"text": "Commented-code block (6 lines) in semantic/cube.js:1"}, "properties": {"repobilityId": "b2fc0358c99fb7a5", "scanner": "scanner-primary", "fingerprint": "9176c60e9da1b950", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f367cf1f9c2744a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in semantic/security.js:6"}, "properties": {"repobilityId": "3b3a1eed9c1fc513", "scanner": "scanner-primary", "fingerprint": "f367cf1f9c2744a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52fe7f9a98a60930", "level": "none", "message": {"text": "Commented-code block (5 lines) in semantic/test/driver.test.js:1"}, "properties": {"repobilityId": "0a737b85d5806291", "scanner": "scanner-primary", "fingerprint": "52fe7f9a98a60930", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a2fa0662207bf1", "level": "none", "message": {"text": "Commented-code block (8 lines) in ml/forecast_data.py:15"}, "properties": {"repobilityId": "3c50915f0e697c03", "scanner": "scanner-primary", "fingerprint": "e1a2fa0662207bf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2a8e57eccc4f8b9", "level": "note", "message": {"text": "Legacy-named symbol `list_objects_v2` in ml/registry.py:356"}, "properties": {"repobilityId": "e22fea6468e69b1a", "scanner": "scanner-primary", "fingerprint": "e2a8e57eccc4f8b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-782e6eca72169bf3", "level": "note", "message": {"text": "Legacy-named symbol `deserialize_legacy_v1` in ml/migrate_artifacts.py:6"}, "properties": {"repobilityId": "64ece3dd034de1c3", "scanner": "scanner-primary", "fingerprint": "782e6eca72169bf3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e7156408f2bf6ede", "level": "note", "message": {"text": "Legacy-named symbol `deserialize_legacy_v1` in ml/artifacts.py:125"}, "properties": {"repobilityId": "594f68107e25c3ea", "scanner": "scanner-primary", "fingerprint": "e7156408f2bf6ede", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed206c35412000fa", "level": "none", "message": {"text": "Commented-code block (17 lines) in web/playwright.config.ts:7"}, "properties": {"repobilityId": "9f6f02a203910f0e", "scanner": "scanner-primary", "fingerprint": "ed206c35412000fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93dd519f69002910", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/vite.config.ts:18"}, "properties": {"repobilityId": "252c871a7a91e926", "scanner": "scanner-primary", "fingerprint": "93dd519f69002910", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95b421295fc0131d", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/playwright.smoke.config.ts:3"}, "properties": {"repobilityId": "7e5dc8cf91a0890f", "scanner": "scanner-primary", "fingerprint": "95b421295fc0131d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f548c436d6ac07c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/vitest.config.ts:4"}, "properties": {"repobilityId": "3eba8f61c9b3d4e9", "scanner": "scanner-primary", "fingerprint": "f548c436d6ac07c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb3fe2bccf90e94", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/test/auth-core.test.mjs:1"}, "properties": {"repobilityId": "6936614a966f4325", "scanner": "scanner-primary", "fingerprint": "dcb3fe2bccf90e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12a7e25d0efb2281", "level": "none", "message": {"text": "Commented-code block (10 lines) in web/src/app.tsx:6"}, "properties": {"repobilityId": "1bd29b4f45ab2f0f", "scanner": "scanner-primary", "fingerprint": "12a7e25d0efb2281", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8626b532d5af21c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/app.tsx:213"}, "properties": {"repobilityId": "473bd7df953398a6", "scanner": "scanner-primary", "fingerprint": "e8626b532d5af21c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5625cc4d7e164423", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/ai.tsx:10"}, "properties": {"repobilityId": "d7da6ff157bf0198", "scanner": "scanner-primary", "fingerprint": "5625cc4d7e164423", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa2727c9f08379f2", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/globals.ts:3"}, "properties": {"repobilityId": "b92730e8d38ff60b", "scanner": "scanner-primary", "fingerprint": "aa2727c9f08379f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b6e786f01746314", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/main.tsx:13"}, "properties": {"repobilityId": "f97057eb9384246d", "scanner": "scanner-primary", "fingerprint": "7b6e786f01746314", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9242eb5c92c8c426", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/pricing.ts:3"}, "properties": {"repobilityId": "6b4634db91e6f74f", "scanner": "scanner-primary", "fingerprint": "9242eb5c92c8c426", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6e5410089528d01", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/vite-env.d.ts:3"}, "properties": {"repobilityId": "80394277cf631700", "scanner": "scanner-primary", "fingerprint": "d6e5410089528d01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7448ba7fb5095fc9", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/RealCommandPalette.tsx:1"}, "properties": {"repobilityId": "cd28e1bbe4c01055", "scanner": "scanner-primary", "fingerprint": "7448ba7fb5095fc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83a572c5bd4f88fa", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/modules.ts:3"}, "properties": {"repobilityId": "759de53b50a523b5", "scanner": "scanner-primary", "fingerprint": "83a572c5bd4f88fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52f932974d3bfa0a", "level": "none", "message": {"text": "Commented-code block (10 lines) in web/src/auth/AuthContext.tsx:1"}, "properties": {"repobilityId": "ae0847d93f673d5d", "scanner": "scanner-primary", "fingerprint": "52f932974d3bfa0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d9d818b0cfc7a4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/auth/core.js:5"}, "properties": {"repobilityId": "ecb67a50ae6d48fa", "scanner": "scanner-primary", "fingerprint": "6d9d818b0cfc7a4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6239a75a7a444970", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/auth/cognito.ts:5"}, "properties": {"repobilityId": "34f1089867516dea", "scanner": "scanner-primary", "fingerprint": "6239a75a7a444970", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0890ab021cb210e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/auth/cognito.ts:233"}, "properties": {"repobilityId": "ee0dece3dcc2c7e9", "scanner": "scanner-primary", "fingerprint": "0890ab021cb210e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d28faf28acc9f2f", "level": "none", "message": {"text": "Commented-code block (14 lines) in web/src/analytics/posthog.ts:3"}, "properties": {"repobilityId": "3493c3692f39a9a4", "scanner": "scanner-primary", "fingerprint": "9d28faf28acc9f2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bb50e9cfaa86fd6", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/api/UsagePanel.tsx:3"}, "properties": {"repobilityId": "cdc4e3b77ddb2958", "scanner": "scanner-primary", "fingerprint": "6bb50e9cfaa86fd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d57cb5664f8b5fb", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/api/MergeDuplicates.tsx:1"}, "properties": {"repobilityId": "53e39da1904f6bbb", "scanner": "scanner-primary", "fingerprint": "5d57cb5664f8b5fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d06ff5b7dfadcce", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/api/CrewPanel.tsx:1"}, "properties": {"repobilityId": "95ed1c4d6f70efa6", "scanner": "scanner-primary", "fingerprint": "8d06ff5b7dfadcce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91a7addbebbc86bb", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/src/api/SellView.tsx:5"}, "properties": {"repobilityId": "5883a49b31d58a8c", "scanner": "scanner-primary", "fingerprint": "91a7addbebbc86bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd425632442347bd", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/api/riskBadge.ts:4"}, "properties": {"repobilityId": "e504744d8299592a", "scanner": "scanner-primary", "fingerprint": "bd425632442347bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2999f23e571d3c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/api/IntegrationsPanel.tsx:3"}, "properties": {"repobilityId": "b8f953cd34bb17ab", "scanner": "scanner-primary", "fingerprint": "f2999f23e571d3c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2bfe1daa03056fb", "level": "none", "message": {"text": "Commented-code block (25 lines) in web/src/api/ReportsView.tsx:6"}, "properties": {"repobilityId": "2efc3a5728edc67b", "scanner": "scanner-primary", "fingerprint": "b2bfe1daa03056fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-378d20146d29f874", "level": "none", "message": {"text": "Commented-code block (11 lines) in web/src/api/ChatDock.tsx:5"}, "properties": {"repobilityId": "95ba6e5307ee95e0", "scanner": "scanner-primary", "fingerprint": "378d20146d29f874", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b39eecdf536342e", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/src/api/PipelineBoard.tsx:5"}, "properties": {"repobilityId": "fed2bfd58d4f4cb5", "scanner": "scanner-primary", "fingerprint": "5b39eecdf536342e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-deb3d1ad1769710b", "level": "none", "message": {"text": "Commented-code block (14 lines) in web/src/api/BillingManage.tsx:6"}, "properties": {"repobilityId": "557cee62e0b21824", "scanner": "scanner-primary", "fingerprint": "deb3d1ad1769710b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e4ead1eb8b4f821", "level": "none", "message": {"text": "Commented-code block (10 lines) in web/src/api/DashboardView.tsx:1"}, "properties": {"repobilityId": "3bd0a1eef11762f7", "scanner": "scanner-primary", "fingerprint": "2e4ead1eb8b4f821", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e259cf0da396f234", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/api/SetupWizard.tsx:1"}, "properties": {"repobilityId": "afa948c90da220ea", "scanner": "scanner-primary", "fingerprint": "e259cf0da396f234", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec6a04dca2546a9a", "level": "none", "message": {"text": "Commented-code block (17 lines) in web/src/api/DashboardsView.tsx:5"}, "properties": {"repobilityId": "1a4c60056e09f7f7", "scanner": "scanner-primary", "fingerprint": "ec6a04dca2546a9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db127df6342a3788", "level": "none", "message": {"text": "Commented-code block (24 lines) in web/src/api/KnowledgeView.tsx:6"}, "properties": {"repobilityId": "bff0ecae68114e2a", "scanner": "scanner-primary", "fingerprint": "db127df6342a3788", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c79849b4d1ba5359", "level": "none", "message": {"text": "Commented-code block (10 lines) in web/src/api/GreenlightQueue.tsx:3"}, "properties": {"repobilityId": "457b2ecff2c0c055", "scanner": "scanner-primary", "fingerprint": "c79849b4d1ba5359", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-567305328fafb25c", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/api/SidecarView.tsx:8"}, "properties": {"repobilityId": "1a5a24b575036668", "scanner": "scanner-primary", "fingerprint": "567305328fafb25c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19ebf835c117f9d1", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/src/api/CortexView.tsx:8"}, "properties": {"repobilityId": "48309437738cf211", "scanner": "scanner-primary", "fingerprint": "19ebf835c117f9d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d678109bb8359182", "level": "none", "message": {"text": "Commented-code block (14 lines) in web/src/api/SecurityControls.tsx:4"}, "properties": {"repobilityId": "986f7838a73161f7", "scanner": "scanner-primary", "fingerprint": "d678109bb8359182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3dd9f5f7e4779155", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/api/WorkspaceSettings.tsx:8"}, "properties": {"repobilityId": "5159980151ec3af1", "scanner": "scanner-primary", "fingerprint": "3dd9f5f7e4779155", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce2472fea744161d", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/api/AnomalyPanel.tsx:4"}, "properties": {"repobilityId": "d3d7a9595b35d613", "scanner": "scanner-primary", "fingerprint": "ce2472fea744161d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d1278feab726c37", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/api/client.ts:3"}, "properties": {"repobilityId": "b6eb47a4b87defb3", "scanner": "scanner-primary", "fingerprint": "9d1278feab726c37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f9be945fa0614de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/src/api/client.ts:1458"}, "properties": {"repobilityId": "36b9d9247c212588", "scanner": "scanner-primary", "fingerprint": "5f9be945fa0614de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7119cb51b79be86c", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/api/ModulesView.tsx:12"}, "properties": {"repobilityId": "e6f83721385c8fe5", "scanner": "scanner-primary", "fingerprint": "7119cb51b79be86c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63fff4d94b562824", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/api/ChurnPanel.tsx:4"}, "properties": {"repobilityId": "04f2089da3728da9", "scanner": "scanner-primary", "fingerprint": "63fff4d94b562824", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-019ef0087e8f7ebb", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/api/ForecastPanel.tsx:4"}, "properties": {"repobilityId": "510283dad199739f", "scanner": "scanner-primary", "fingerprint": "019ef0087e8f7ebb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57a2113849cae061", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/api/mockData.ts:3"}, "properties": {"repobilityId": "75c241baa51edc48", "scanner": "scanner-primary", "fingerprint": "57a2113849cae061", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c626ba2c21ff6729", "level": "none", "message": {"text": "Commented-code block (12 lines) in web/src/api/TheBrief.tsx:1"}, "properties": {"repobilityId": "c6fc5eba3b2bdcd3", "scanner": "scanner-primary", "fingerprint": "c626ba2c21ff6729", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02b04490dc57092e", "level": "none", "message": {"text": "Commented-code block (14 lines) in web/src/api/AccountDataControls.tsx:6"}, "properties": {"repobilityId": "96fbf254abcd66b9", "scanner": "scanner-primary", "fingerprint": "02b04490dc57092e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-368d3a24be6ac213", "level": "none", "message": {"text": "Commented-code block (18 lines) in web/src/api/StudioView.tsx:5"}, "properties": {"repobilityId": "d717f6f45a8c3dd4", "scanner": "scanner-primary", "fingerprint": "368d3a24be6ac213", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf49b16f44c42934", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/src/api/ContactsDirectory.tsx:6"}, "properties": {"repobilityId": "c57b4a8d766d6d74", "scanner": "scanner-primary", "fingerprint": "cf49b16f44c42934", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12afce6d3d8804d1", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/api/MarketplaceView.tsx:6"}, "properties": {"repobilityId": "a541dcb26bd07fe3", "scanner": "scanner-primary", "fingerprint": "12afce6d3d8804d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9ea022866182e7b", "level": "none", "message": {"text": "Commented-code block (23 lines) in web/src/api/WorkflowsView.tsx:6"}, "properties": {"repobilityId": "c4c90e462da517d8", "scanner": "scanner-primary", "fingerprint": "c9ea022866182e7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc3b1c5d7a59aac1", "level": "none", "message": {"text": "Commented-code block (13 lines) in web/src/api/TasksView.tsx:4"}, "properties": {"repobilityId": "6ce2e36424d4f3f4", "scanner": "scanner-primary", "fingerprint": "cc3b1c5d7a59aac1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8eaaabbd7e88cfe6", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/src/api/AgentsRoster.tsx:6"}, "properties": {"repobilityId": "05e40128a325cb63", "scanner": "scanner-primary", "fingerprint": "8eaaabbd7e88cfe6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f9c9d88c4d375b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/api/__tests__/TheBrief.test.tsx:1"}, "properties": {"repobilityId": "e6da722d5614f34e", "scanner": "scanner-primary", "fingerprint": "4f9c9d88c4d375b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be95d714b8fd27c1", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/screens/landing-constellation.tsx:6"}, "properties": {"repobilityId": "f10a992d109845a4", "scanner": "scanner-primary", "fingerprint": "be95d714b8fd27c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cae2c6297739c18d", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/screens/tweaks-panel.tsx:17"}, "properties": {"repobilityId": "1876981b41935733", "scanner": "scanner-primary", "fingerprint": "cae2c6297739c18d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a83fcc6ce27b1a22", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/screens/landing.tsx:783"}, "properties": {"repobilityId": "701638027bcc8bef", "scanner": "scanner-primary", "fingerprint": "a83fcc6ce27b1a22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc3567596947e019", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/dashboard/dashboardSpec.ts:3"}, "properties": {"repobilityId": "9c5b59fc0e0cf923", "scanner": "scanner-primary", "fingerprint": "fc3567596947e019", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96a60a6ecf863014", "level": "none", "message": {"text": "Commented-code block (19 lines) in web/src/dashboard/SpecRenderer.tsx:3"}, "properties": {"repobilityId": "5612fec52acca097", "scanner": "scanner-primary", "fingerprint": "96a60a6ecf863014", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e838cb4066ba5fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/dashboard/markdown.tsx:3"}, "properties": {"repobilityId": "d0eac76d6974bd27", "scanner": "scanner-primary", "fingerprint": "1e838cb4066ba5fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83c7f34eba36cb15", "level": "none", "message": {"text": "Commented-code block (15 lines) in web/src/dashboard/Demo.tsx:3"}, "properties": {"repobilityId": "fc88143aa4c96db3", "scanner": "scanner-primary", "fingerprint": "83c7f34eba36cb15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-836ac5acda556228", "level": "note", "message": {"text": "Legacy-named symbol `demo_revenue_room_v2` in web/src/dashboard/sample.ts:51"}, "properties": {"repobilityId": "f042249636fa25f5", "scanner": "scanner-primary", "fingerprint": "836ac5acda556228", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-08b82bd2c32bfec2", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/dashboard/viewSpec.ts:13"}, "properties": {"repobilityId": "b9150033840092dc", "scanner": "scanner-primary", "fingerprint": "08b82bd2c32bfec2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dba5a489db498ac", "level": "none", "message": {"text": "Commented-code block (21 lines) in web/src/signup/SignupFlow.tsx:3"}, "properties": {"repobilityId": "da64233961cde931", "scanner": "scanner-primary", "fingerprint": "5dba5a489db498ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d27d5d19a4f6614a", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/src/signup/turnstile.tsx:7"}, "properties": {"repobilityId": "65b6947f7e28e75e", "scanner": "scanner-primary", "fingerprint": "d27d5d19a4f6614a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30beb6534884cb55", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/lib/SafeHtml.tsx:1"}, "properties": {"repobilityId": "b06d51225a2b69b3", "scanner": "scanner-primary", "fingerprint": "30beb6534884cb55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f9425a43b427a33", "level": "none", "message": {"text": "Commented-code block (7 lines) in web/src/lib/navSynonyms.ts:3"}, "properties": {"repobilityId": "7a246f924265ad7d", "scanner": "scanner-primary", "fingerprint": "3f9425a43b427a33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2d3b314d9396432", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/dev/SafeHtmlDemo.tsx:1"}, "properties": {"repobilityId": "2c6a3b13dcf68503", "scanner": "scanner-primary", "fingerprint": "b2d3b314d9396432", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63f8ef5d7932cc53", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/onboarding/EmptyState.tsx:3"}, "properties": {"repobilityId": "6fce25cd14e24602", "scanner": "scanner-primary", "fingerprint": "63f8ef5d7932cc53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2cd924d3e0669c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/onboarding/FirstRunChecklist.tsx:3"}, "properties": {"repobilityId": "ab255fd12b117767", "scanner": "scanner-primary", "fingerprint": "e2cd924d3e0669c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e5a952b160ed970", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/src/onboarding/useOnboarding.ts:6"}, "properties": {"repobilityId": "5f1d9a97b34b3f05", "scanner": "scanner-primary", "fingerprint": "4e5a952b160ed970", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8abff879948edc18", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/support/api.ts:6"}, "properties": {"repobilityId": "fae11887b784a6d8", "scanner": "scanner-primary", "fingerprint": "8abff879948edc18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-390c3b626322bf01", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/support/HelpForm.tsx:3"}, "properties": {"repobilityId": "e6b5b22dab631445", "scanner": "scanner-primary", "fingerprint": "390c3b626322bf01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-818989f6728c04f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/src/support/StatusPage.tsx:3"}, "properties": {"repobilityId": "cdece83e471f2330", "scanner": "scanner-primary", "fingerprint": "818989f6728c04f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f1ea6be3eb27c77", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/e2e/integrations.spec.ts:3"}, "properties": {"repobilityId": "3967a885942c8712", "scanner": "scanner-primary", "fingerprint": "0f1ea6be3eb27c77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23cb6d4d49f8251a", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/e2e/balto.spec.ts:3"}, "properties": {"repobilityId": "91949c62a874b2b8", "scanner": "scanner-primary", "fingerprint": "23cb6d4d49f8251a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2234e70c41b3b7a6", "level": "none", "message": {"text": "Commented-code block (9 lines) in web/e2e/greenlight.spec.ts:3"}, "properties": {"repobilityId": "bd9381445682148e", "scanner": "scanner-primary", "fingerprint": "2234e70c41b3b7a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f51dffa9db3257e", "level": "none", "message": {"text": "Commented-code block (17 lines) in web/e2e/cortex.spec.ts:3"}, "properties": {"repobilityId": "c8b5d68b13f0631a", "scanner": "scanner-primary", "fingerprint": "4f51dffa9db3257e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15fb8f20403027a3", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/e2e/workflows.spec.ts:3"}, "properties": {"repobilityId": "2f2de99c4c87475b", "scanner": "scanner-primary", "fingerprint": "15fb8f20403027a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-428186d6386a4ecf", "level": "none", "message": {"text": "Commented-code block (13 lines) in web/e2e/signup.spec.ts:8"}, "properties": {"repobilityId": "80914678eb46e373", "scanner": "scanner-primary", "fingerprint": "428186d6386a4ecf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12767799c46a6f82", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/e2e/realmode.spec.ts:3"}, "properties": {"repobilityId": "64741e91d2476603", "scanner": "scanner-primary", "fingerprint": "12767799c46a6f82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e55785b172d2d5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/greenlight-real.spec.ts:3"}, "properties": {"repobilityId": "068d7b424c916fa6", "scanner": "scanner-primary", "fingerprint": "7e55785b172d2d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c70fa5ac005eb79", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/e2e/merge.spec.ts:3"}, "properties": {"repobilityId": "e10ba2ff93c10684", "scanner": "scanner-primary", "fingerprint": "5c70fa5ac005eb79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83034a8c14f2d5c0", "level": "none", "message": {"text": "Commented-code block (9 lines) in web/e2e/depth-ui.spec.ts:3"}, "properties": {"repobilityId": "e1012d979dd612cd", "scanner": "scanner-primary", "fingerprint": "83034a8c14f2d5c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8795cf5faaeab689", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/e2e/support.spec.ts:3"}, "properties": {"repobilityId": "98684784ce3f9f06", "scanner": "scanner-primary", "fingerprint": "8795cf5faaeab689", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-305dc8cd37022aaa", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/support-auth.spec.ts:3"}, "properties": {"repobilityId": "3e9a8b4004484ab9", "scanner": "scanner-primary", "fingerprint": "305dc8cd37022aaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3096b5c7efea822", "level": "none", "message": {"text": "Commented-code block (9 lines) in web/e2e/dashboard-data.spec.ts:6"}, "properties": {"repobilityId": "6f3765881a4d47c1", "scanner": "scanner-primary", "fingerprint": "f3096b5c7efea822", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eefe38bd9eae0295", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/e2e/dashboard-real.spec.ts:26"}, "properties": {"repobilityId": "4d6c8b867fcc081b", "scanner": "scanner-primary", "fingerprint": "eefe38bd9eae0295", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9b72c31768c1390", "level": "none", "message": {"text": "Commented-code block (21 lines) in web/e2e/auth.spec.ts:5"}, "properties": {"repobilityId": "6fc59e639a8d157e", "scanner": "scanner-primary", "fingerprint": "e9b72c31768c1390", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a6a809e16aeac661", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 web/e2e/auth.spec.ts:102"}, "properties": {"repobilityId": "4cfa795d948b622d", "scanner": "scanner-primary", "fingerprint": "a6a809e16aeac661", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5ee570c3607beca", "level": "none", "message": {"text": "Commented-code block (13 lines) in web/e2e/dashboards.spec.ts:3"}, "properties": {"repobilityId": "03b834ca8d7c82c7", "scanner": "scanner-primary", "fingerprint": "d5ee570c3607beca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75839d01f85ca30b", "level": "none", "message": {"text": "Commented-code block (12 lines) in web/e2e/dashboard.spec.ts:3"}, "properties": {"repobilityId": "03a0b3faa6f296f0", "scanner": "scanner-primary", "fingerprint": "75839d01f85ca30b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb54001040a4062d", "level": "none", "message": {"text": "Commented-code block (6 lines) in web/e2e/a11y.spec.ts:4"}, "properties": {"repobilityId": "e44b8f1b44488230", "scanner": "scanner-primary", "fingerprint": "cb54001040a4062d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9699e35b56a8ac4", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/e2e/sidecar.spec.ts:7"}, "properties": {"repobilityId": "76d7d63b4c8c143f", "scanner": "scanner-primary", "fingerprint": "a9699e35b56a8ac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f342f2d199452598", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/e2e/knowledge.spec.ts:3"}, "properties": {"repobilityId": "aaa6aeec8c158181", "scanner": "scanner-primary", "fingerprint": "f342f2d199452598", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f6672aa32e2bf80", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/visual.spec.ts:3"}, "properties": {"repobilityId": "095b9687a60a2c60", "scanner": "scanner-primary", "fingerprint": "3f6672aa32e2bf80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cdb27b1bcc3fca32", "level": "none", "message": {"text": "Commented-code block (13 lines) in web/e2e/sell.spec.ts:8"}, "properties": {"repobilityId": "7e62157c9d4e326c", "scanner": "scanner-primary", "fingerprint": "cdb27b1bcc3fca32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7d4b40cc8676332", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/e2e/signup-real.spec.ts:3"}, "properties": {"repobilityId": "e162c1072e09c502", "scanner": "scanner-primary", "fingerprint": "e7d4b40cc8676332", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e1ddb8f91525128", "level": "none", "message": {"text": "Commented-code block (10 lines) in web/e2e/onboarding.spec.ts:8"}, "properties": {"repobilityId": "042121c3d8166bd9", "scanner": "scanner-primary", "fingerprint": "4e1ddb8f91525128", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7a5cefca62998c8", "level": "none", "message": {"text": "Commented-code block (15 lines) in web/e2e/tasks.spec.ts:3"}, "properties": {"repobilityId": "51fd72e570809c76", "scanner": "scanner-primary", "fingerprint": "a7a5cefca62998c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30a0a52c492be319", "level": "none", "message": {"text": "Commented-code block (20 lines) in web/e2e/contacts.spec.ts:3"}, "properties": {"repobilityId": "489bbf54b1927ea4", "scanner": "scanner-primary", "fingerprint": "30a0a52c492be319", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46035340547711e2", "level": "none", "message": {"text": "Commented-code block (8 lines) in web/e2e/focus-visible.spec.ts:5"}, "properties": {"repobilityId": "038942e63175033b", "scanner": "scanner-primary", "fingerprint": "46035340547711e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-309ee0a933acff1b", "level": "none", "message": {"text": "Commented-code block (16 lines) in web/e2e/reports.spec.ts:3"}, "properties": {"repobilityId": "d977329a88230fec", "scanner": "scanner-primary", "fingerprint": "309ee0a933acff1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b6b5362af152434", "level": "none", "message": {"text": "Commented-code block (9 lines) in web/e2e/billing.spec.ts:3"}, "properties": {"repobilityId": "38df27efaae476dc", "scanner": "scanner-primary", "fingerprint": "4b6b5362af152434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c03170088f9b7e91", "level": "none", "message": {"text": "Commented-code block (19 lines) in web/e2e/pipeline.spec.ts:3"}, "properties": {"repobilityId": "fcfa329746fe3a77", "scanner": "scanner-primary", "fingerprint": "c03170088f9b7e91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-771e5884722c96fb", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/conversion.spec.ts:3"}, "properties": {"repobilityId": "527203cfffadacce", "scanner": "scanner-primary", "fingerprint": "771e5884722c96fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b252b8f3e2b85966", "level": "none", "message": {"text": "Commented-code block (18 lines) in web/e2e/agents.spec.ts:3"}, "properties": {"repobilityId": "f00206f7f10c9b63", "scanner": "scanner-primary", "fingerprint": "b252b8f3e2b85966", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89e99edb8b483100", "level": "none", "message": {"text": "Commented-code block (5 lines) in web/e2e/studio.spec.ts:3"}, "properties": {"repobilityId": "5ecee9833146832d", "scanner": "scanner-primary", "fingerprint": "89e99edb8b483100", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-048fc0b2558b498b", "level": "none", "message": {"text": "Commented-code block (10 lines) in agents/runtime_selfhosted.py:149"}, "properties": {"repobilityId": "22623884a70dec9e", "scanner": "scanner-primary", "fingerprint": "048fc0b2558b498b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8c1bd10ea91ed69", "level": "none", "message": {"text": "Commented-code block (7 lines) in agents/runtime.py:27"}, "properties": {"repobilityId": "4830ab5aa170cfc9", "scanner": "scanner-primary", "fingerprint": "d8c1bd10ea91ed69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9b8d5b9732c7e3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in agents/playbooks/runner.py:40"}, "properties": {"repobilityId": "3c2fdb841ea004a3", "scanner": "scanner-primary", "fingerprint": "e9b8d5b9732c7e3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79f07f7b47dc48ba", "level": "none", "message": {"text": "Commented-code block (9 lines) in agents/playbooks/dispatch.py:220"}, "properties": {"repobilityId": "6dfa21b15d3f757a", "scanner": "scanner-primary", "fingerprint": "79f07f7b47dc48ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e14d781a1e0f1267", "level": "none", "message": {"text": "Commented-code block (5 lines) in agents/tools/sideeffecting.py:68"}, "properties": {"repobilityId": "40dba9b2847ca2e6", "scanner": "scanner-primary", "fingerprint": "e14d781a1e0f1267", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-61008bc46eb4fb07", "level": "none", "message": {"text": "Commented-code block (6 lines) in agents/tools/base.py:63"}, "properties": {"repobilityId": "24a1393983a7e514", "scanner": "scanner-primary", "fingerprint": "61008bc46eb4fb07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "90f6a6d0465ea10f", "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": "1e8d5b3d193965ad", "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": "7055bb81f54cc7b0", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "21ecfb849cc9f71f", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "90c36fd11ab1d3b7", "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": "eba4799f0ea0b2d3", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "fb8d91aebd99878a", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "79d8d178e691a92a", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "cf61ec5576483749", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "0947bc54fd387705", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "9cd6e579b493f64d", "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": "ad7adcc37a59afb8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "373ae5e64f63ad60", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "6a354170b2b64106", "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": "0666c9e4bf5ab9c3", "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": "103f2157ad4c42cd", "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": "7c3c58c8678e7ce0", "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": "dbe74de6ba011fb0", "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": "1351c444ae247a60", "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": "440c0357fb454e93", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-442a654d08998e5e", "level": "warning", "message": {"text": "Django view `request_tokens` may be unauthenticated \u2014 conv/views.py:90"}, "properties": {"repobilityId": "07f61ab4863a084e", "scanner": "scanner-primary", "fingerprint": "442a654d08998e5e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conv/views.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-033977943697f79c", "level": "warning", "message": {"text": "Django view `members_cover` may be unauthenticated \u2014 conv/views.py:115"}, "properties": {"repobilityId": "28068675e0fde323", "scanner": "scanner-primary", "fingerprint": "033977943697f79c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conv/views.py"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-26381f1d9b900dd7", "level": "warning", "message": {"text": "Django view `find_covering_view` may be unauthenticated \u2014 conv/views.py:131"}, "properties": {"repobilityId": "42ff95e7be2acf55", "scanner": "scanner-primary", "fingerprint": "26381f1d9b900dd7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["auth", "owasp", "auth.django.unauth_view"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "conv/views.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-1ce3b3516e659937", "level": "error", "message": {"text": "FastAPI POST `knowledge_add_document` without auth dependency \u2014 api/knowledge_routes.py:334"}, "properties": {"repobilityId": "7d390d10eebf8889", "scanner": "scanner-primary", "fingerprint": "1ce3b3516e659937", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/knowledge_routes.py"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-aa88babec1d417d9", "level": "error", "message": {"text": "FastAPI PATCH `knowledge_move_document` without auth dependency \u2014 api/knowledge_routes.py:377"}, "properties": {"repobilityId": "2418e11170cce876", "scanner": "scanner-primary", "fingerprint": "aa88babec1d417d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/knowledge_routes.py"}, "region": {"startLine": 377}}}]}, {"ruleId": "scanner-365f16c7daab997a", "level": "error", "message": {"text": "FastAPI PUT `knowledge_update_document` without auth dependency \u2014 api/knowledge_routes.py:482"}, "properties": {"repobilityId": "c24d64ab4aa6d0d7", "scanner": "scanner-primary", "fingerprint": "365f16c7daab997a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/knowledge_routes.py"}, "region": {"startLine": 482}}}]}, {"ruleId": "scanner-4beda64d6aaddadb", "level": "error", "message": {"text": "FastAPI DELETE `knowledge_delete_document` without auth dependency \u2014 api/knowledge_routes.py:527"}, "properties": {"repobilityId": "fe81b62ff7f4bdb3", "scanner": "scanner-primary", "fingerprint": "4beda64d6aaddadb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/knowledge_routes.py"}, "region": {"startLine": 527}}}]}, {"ruleId": "scanner-040536bda74d03aa", "level": "error", "message": {"text": "FastAPI POST `merge_contacts` without auth dependency \u2014 api/contacts_routes.py:224"}, "properties": {"repobilityId": "a671e0bf009e7d9d", "scanner": "scanner-primary", "fingerprint": "040536bda74d03aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-79af98ae34f5957e", "level": "error", "message": {"text": "FastAPI POST `create_contact` without auth dependency \u2014 api/contacts_routes.py:268"}, "properties": {"repobilityId": "4c49e09f42950a8e", "scanner": "scanner-primary", "fingerprint": "79af98ae34f5957e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-a349da7fed36ad8d", "level": "error", "message": {"text": "FastAPI PATCH `edit_contact` without auth dependency \u2014 api/contacts_routes.py:292"}, "properties": {"repobilityId": "27c137dba2e70520", "scanner": "scanner-primary", "fingerprint": "a349da7fed36ad8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 292}}}]}, {"ruleId": "scanner-7bbac83c1607bf58", "level": "error", "message": {"text": "FastAPI POST `merge_companies` without auth dependency \u2014 api/contacts_routes.py:355"}, "properties": {"repobilityId": "3ddcb74e1b053394", "scanner": "scanner-primary", "fingerprint": "7bbac83c1607bf58", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-fee3e5c21405d6d8", "level": "error", "message": {"text": "FastAPI POST `create_company` without auth dependency \u2014 api/contacts_routes.py:390"}, "properties": {"repobilityId": "da9dcb05def62262", "scanner": "scanner-primary", "fingerprint": "fee3e5c21405d6d8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 390}}}]}, {"ruleId": "scanner-8a7765e9a30ac2fb", "level": "error", "message": {"text": "FastAPI PATCH `edit_company` without auth dependency \u2014 api/contacts_routes.py:401"}, "properties": {"repobilityId": "5b5e944f46c713bc", "scanner": "scanner-primary", "fingerprint": "8a7765e9a30ac2fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-de02813b2137b05f", "level": "error", "message": {"text": "FastAPI POST `log_contact_activity` without auth dependency \u2014 api/contacts_routes.py:425"}, "properties": {"repobilityId": "235727bf22b9fb8f", "scanner": "scanner-primary", "fingerprint": "de02813b2137b05f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-739ed58b990fbf35", "level": "error", "message": {"text": "FastAPI POST `archive_contact` without auth dependency \u2014 api/contacts_routes.py:450"}, "properties": {"repobilityId": "fc5e74d002b30826", "scanner": "scanner-primary", "fingerprint": "739ed58b990fbf35", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 450}}}]}, {"ruleId": "scanner-b69e3da5bfca440b", "level": "error", "message": {"text": "FastAPI POST `unarchive_contact` without auth dependency \u2014 api/contacts_routes.py:454"}, "properties": {"repobilityId": "98afc2467606d52b", "scanner": "scanner-primary", "fingerprint": "b69e3da5bfca440b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 454}}}]}, {"ruleId": "scanner-bb7b7deab5921aa4", "level": "error", "message": {"text": "FastAPI POST `archive_company` without auth dependency \u2014 api/contacts_routes.py:458"}, "properties": {"repobilityId": "4bd30f145740b432", "scanner": "scanner-primary", "fingerprint": "bb7b7deab5921aa4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 458}}}]}, {"ruleId": "scanner-3281e0fb17ebe17d", "level": "error", "message": {"text": "FastAPI POST `unarchive_company` without auth dependency \u2014 api/contacts_routes.py:462"}, "properties": {"repobilityId": "29c154383a6520e8", "scanner": "scanner-primary", "fingerprint": "3281e0fb17ebe17d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/contacts_routes.py"}, "region": {"startLine": 462}}}]}, {"ruleId": "scanner-b279c299575c2a8a", "level": "error", "message": {"text": "FastAPI POST `verify_email` without auth dependency \u2014 api/signup_routes.py:205"}, "properties": {"repobilityId": "9410ab09c7faf88c", "scanner": "scanner-primary", "fingerprint": "b279c299575c2a8a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/signup_routes.py"}, "region": {"startLine": 205}}}]}, {"ruleId": "scanner-4a6236025fa02256", "level": "error", "message": {"text": "FastAPI POST `verify_phone` without auth dependency \u2014 api/signup_routes.py:242"}, "properties": {"repobilityId": "8b61a367a63cc07e", "scanner": "scanner-primary", "fingerprint": "4a6236025fa02256", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/signup_routes.py"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-0dfdfe16e4e6cf50", "level": "error", "message": {"text": "FastAPI POST `checkout` without auth dependency \u2014 api/signup_routes.py:252"}, "properties": {"repobilityId": "a0802032d7de1450", "scanner": "scanner-primary", "fingerprint": "0dfdfe16e4e6cf50", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/signup_routes.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-1fbd04a897560ab7", "level": "error", "message": {"text": "FastAPI POST `retry_provision` without auth dependency \u2014 api/signup_routes.py:299"}, "properties": {"repobilityId": "54d9b05df5f5060a", "scanner": "scanner-primary", "fingerprint": "1fbd04a897560ab7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/signup_routes.py"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-22e44375536f008f", "level": "error", "message": {"text": "FastAPI POST `stripe_webhook` without auth dependency \u2014 api/signup_routes.py:334"}, "properties": {"repobilityId": "ae0339705f084825", "scanner": "scanner-primary", "fingerprint": "22e44375536f008f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/signup_routes.py"}, "region": {"startLine": 334}}}]}, {"ruleId": "scanner-083285c53ae970dc", "level": "error", "message": {"text": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:63"}, "properties": {"repobilityId": "b8f88fcfcfa3246c", "scanner": "scanner-primary", "fingerprint": "083285c53ae970dc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/billing_routes.py"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-9b7f29f50034ef89", "level": "error", "message": {"text": "FastAPI POST `portal_session` without auth dependency \u2014 api/billing_routes.py:64"}, "properties": {"repobilityId": "1409f1ef814a30ef", "scanner": "scanner-primary", "fingerprint": "9b7f29f50034ef89", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/billing_routes.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-059a1b9be3c5682e", "level": "error", "message": {"text": "FastAPI POST `save_view` without auth dependency \u2014 api/app.py:464"}, "properties": {"repobilityId": "7a27717e49452dfb", "scanner": "scanner-primary", "fingerprint": "059a1b9be3c5682e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 464}}}]}, {"ruleId": "scanner-5a9c2926a36ce40f", "level": "error", "message": {"text": "FastAPI POST `refine_view` without auth dependency \u2014 api/app.py:479"}, "properties": {"repobilityId": "7d02404e48be7ade", "scanner": "scanner-primary", "fingerprint": "5a9c2926a36ce40f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 479}}}]}, {"ruleId": "scanner-79a06856961730c3", "level": "error", "message": {"text": "FastAPI POST `synthesize_view` without auth dependency \u2014 api/app.py:494"}, "properties": {"repobilityId": "568bbcdd5663df23", "scanner": "scanner-primary", "fingerprint": "79a06856961730c3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 494}}}]}, {"ruleId": "scanner-d9bcadec447f4951", "level": "error", "message": {"text": "FastAPI POST `save_view_draft` without auth dependency \u2014 api/app.py:511"}, "properties": {"repobilityId": "1e73d1ed887a6708", "scanner": "scanner-primary", "fingerprint": "d9bcadec447f4951", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 511}}}]}, {"ruleId": "scanner-83bb7b6a298cb48a", "level": "error", "message": {"text": "FastAPI POST `save_dashboard` without auth dependency \u2014 api/app.py:553"}, "properties": {"repobilityId": "90fa8ff8b7c6d800", "scanner": "scanner-primary", "fingerprint": "83bb7b6a298cb48a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-6be9d9dceb6a9ab8", "level": "error", "message": {"text": "FastAPI POST `chat` without auth dependency \u2014 api/app.py:598"}, "properties": {"repobilityId": "954ef7d70b4762c4", "scanner": "scanner-primary", "fingerprint": "6be9d9dceb6a9ab8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 598}}}]}, {"ruleId": "scanner-8a25c740e727c017", "level": "error", "message": {"text": "FastAPI POST `chat_continue` without auth dependency \u2014 api/app.py:621"}, "properties": {"repobilityId": "9c9977fd476b5fce", "scanner": "scanner-primary", "fingerprint": "8a25c740e727c017", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 621}}}]}, {"ruleId": "scanner-55f45df9063f39f8", "level": "error", "message": {"text": "FastAPI POST `run_action` without auth dependency \u2014 api/app.py:644"}, "properties": {"repobilityId": "d077094ebeb5ca5b", "scanner": "scanner-primary", "fingerprint": "55f45df9063f39f8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/app.py"}, "region": {"startLine": 644}}}]}, {"ruleId": "scanner-5248b6b9b96e7f68", "level": "error", "message": {"text": "FastAPI POST `view_data` without auth dependency \u2014 api/cube_data_routes.py:94"}, "properties": {"repobilityId": "9994524d9f7e653c", "scanner": "scanner-primary", "fingerprint": "5248b6b9b96e7f68", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/cube_data_routes.py"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-5b54558d9628509e", "level": "error", "message": {"text": "FastAPI POST `store_credentials` without auth dependency \u2014 api/integrations_routes.py:675"}, "properties": {"repobilityId": "7cc093c368a027de", "scanner": "scanner-primary", "fingerprint": "5b54558d9628509e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/integrations_routes.py"}, "region": {"startLine": 675}}}]}, {"ruleId": "scanner-b6be3528ec95e6c2", "level": "error", "message": {"text": "FastAPI DELETE `delete_credentials` without auth dependency \u2014 api/integrations_routes.py:717"}, "properties": {"repobilityId": "54b634fbafbf5653", "scanner": "scanner-primary", "fingerprint": "b6be3528ec95e6c2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/integrations_routes.py"}, "region": {"startLine": 717}}}]}, {"ruleId": "scanner-17db196ebdf99fb5", "level": "error", "message": {"text": "FastAPI POST `kick_sync` without auth dependency \u2014 api/integrations_routes.py:741"}, "properties": {"repobilityId": "4b2906e39a813a7b", "scanner": "scanner-primary", "fingerprint": "17db196ebdf99fb5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/integrations_routes.py"}, "region": {"startLine": 741}}}]}, {"ruleId": "scanner-e5b94958058df2cc", "level": "error", "message": {"text": "FastAPI POST `csv_import` without auth dependency \u2014 api/integrations_routes.py:842"}, "properties": {"repobilityId": "02a9b149557b6dd3", "scanner": "scanner-primary", "fingerprint": "e5b94958058df2cc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/integrations_routes.py"}, "region": {"startLine": 842}}}]}, {"ruleId": "scanner-8973e7cc20752c78", "level": "error", "message": {"text": "FastAPI POST `create_conversation` without auth dependency \u2014 api/conversations_routes.py:93"}, "properties": {"repobilityId": "6bf80fad7d332597", "scanner": "scanner-primary", "fingerprint": "8973e7cc20752c78", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/conversations_routes.py"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-884664cfc56dbd67", "level": "error", "message": {"text": "FastAPI PATCH `rename_conversation` without auth dependency \u2014 api/conversations_routes.py:117"}, "properties": {"repobilityId": "8d4161fcf8588917", "scanner": "scanner-primary", "fingerprint": "884664cfc56dbd67", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/conversations_routes.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-a687534242db64d0", "level": "error", "message": {"text": "FastAPI POST `archive_conversation` without auth dependency \u2014 api/conversations_routes.py:133"}, "properties": {"repobilityId": "03ecc427112d271d", "scanner": "scanner-primary", "fingerprint": "a687534242db64d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/conversations_routes.py"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-808e3dfe8db3a169", "level": "error", "message": {"text": "FastAPI POST `unarchive_conversation` without auth dependency \u2014 api/conversations_routes.py:143"}, "properties": {"repobilityId": "fdd81690c4f60854", "scanner": "scanner-primary", "fingerprint": "808e3dfe8db3a169", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/conversations_routes.py"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-d5cc87eadb7b6b4c", "level": "error", "message": {"text": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:146"}, "properties": {"repobilityId": "66bb7595a2052a03", "scanner": "scanner-primary", "fingerprint": "d5cc87eadb7b6b4c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/sell_routes.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-bbcb66e0c8dc5e4c", "level": "error", "message": {"text": "FastAPI POST `sell_nudge` without auth dependency \u2014 api/sell_routes.py:147"}, "properties": {"repobilityId": "309ae38162f4f388", "scanner": "scanner-primary", "fingerprint": "bbcb66e0c8dc5e4c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/sell_routes.py"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-bab1a5b2cd4f10a3", "level": "error", "message": {"text": "FastAPI POST `create_playbook` without auth dependency \u2014 api/routes_studio.py:273"}, "properties": {"repobilityId": "4a7db128ea75bb81", "scanner": "scanner-primary", "fingerprint": "bab1a5b2cd4f10a3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-08b582b8a0e83236", "level": "error", "message": {"text": "FastAPI PUT `update_playbook` without auth dependency \u2014 api/routes_studio.py:289"}, "properties": {"repobilityId": "51975f276a5f4a8f", "scanner": "scanner-primary", "fingerprint": "08b582b8a0e83236", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 289}}}]}, {"ruleId": "scanner-84af411038550bfb", "level": "error", "message": {"text": "FastAPI DELETE `delete_playbook` without auth dependency \u2014 api/routes_studio.py:306"}, "properties": {"repobilityId": "0e17ced16568d1c3", "scanner": "scanner-primary", "fingerprint": "84af411038550bfb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 306}}}]}, {"ruleId": "scanner-23a0c87fdc1bdcea", "level": "error", "message": {"text": "FastAPI POST `instantiate_template` without auth dependency \u2014 api/routes_studio.py:318"}, "properties": {"repobilityId": "eae4494e65a7b8ce", "scanner": "scanner-primary", "fingerprint": "23a0c87fdc1bdcea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 318}}}]}, {"ruleId": "scanner-83b10edb76d60996", "level": "error", "message": {"text": "FastAPI POST `activate_playbook_route` without auth dependency \u2014 api/routes_studio.py:333"}, "properties": {"repobilityId": "5d91b8f578924989", "scanner": "scanner-primary", "fingerprint": "83b10edb76d60996", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 333}}}]}, {"ruleId": "scanner-f54fde6d50e2615a", "level": "error", "message": {"text": "FastAPI POST `deactivate_playbook_route` without auth dependency \u2014 api/routes_studio.py:395"}, "properties": {"repobilityId": "a5b8de06088d92a0", "scanner": "scanner-primary", "fingerprint": "f54fde6d50e2615a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 395}}}]}, {"ruleId": "scanner-01560fe80ca0b20e", "level": "error", "message": {"text": "FastAPI POST `run_playbook_route` without auth dependency \u2014 api/routes_studio.py:406"}, "properties": {"repobilityId": "32d97bd14c677cf4", "scanner": "scanner-primary", "fingerprint": "01560fe80ca0b20e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/routes_studio.py"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-6c11bba499544c9f", "level": "error", "message": {"text": "FastAPI POST `sidecar_act` without auth dependency \u2014 api/sidecar_routes.py:80"}, "properties": {"repobilityId": "aa6978533f5392c5", "scanner": "scanner-primary", "fingerprint": "6c11bba499544c9f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/sidecar_routes.py"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-b35fa9af621c21c5", "level": "error", "message": {"text": "FastAPI POST `create_deal` without auth dependency \u2014 api/deals_routes.py:275"}, "properties": {"repobilityId": "9e609cc8bee5a4dd", "scanner": "scanner-primary", "fingerprint": "b35fa9af621c21c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-a7b4d0251f5c4302", "level": "error", "message": {"text": "FastAPI PATCH `edit_deal` without auth dependency \u2014 api/deals_routes.py:322"}, "properties": {"repobilityId": "12e04c209d3fef2a", "scanner": "scanner-primary", "fingerprint": "a7b4d0251f5c4302", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-2917a74cbcb67d8d", "level": "error", "message": {"text": "FastAPI POST `log_deal_activity` without auth dependency \u2014 api/deals_routes.py:369"}, "properties": {"repobilityId": "7fdd2f8f7f76e850", "scanner": "scanner-primary", "fingerprint": "2917a74cbcb67d8d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-63130152b4cc79a0", "level": "error", "message": {"text": "FastAPI POST `archive_deal` without auth dependency \u2014 api/deals_routes.py:385"}, "properties": {"repobilityId": "b19c6356914a9313", "scanner": "scanner-primary", "fingerprint": "63130152b4cc79a0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 385}}}]}, {"ruleId": "scanner-7e8f4e3d587f9f8c", "level": "error", "message": {"text": "FastAPI POST `unarchive_deal` without auth dependency \u2014 api/deals_routes.py:389"}, "properties": {"repobilityId": "253a241a3b54d6d0", "scanner": "scanner-primary", "fingerprint": "7e8f4e3d587f9f8c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 389}}}]}, {"ruleId": "scanner-52217e45ab68a7aa", "level": "error", "message": {"text": "FastAPI POST `move_stage` without auth dependency \u2014 api/deals_routes.py:393"}, "properties": {"repobilityId": "302c4f11a243f095", "scanner": "scanner-primary", "fingerprint": "52217e45ab68a7aa", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/deals_routes.py"}, "region": {"startLine": 393}}}]}, {"ruleId": "scanner-776f8f7a0f437825", "level": "error", "message": {"text": "FastAPI POST `mount_public` without auth dependency \u2014 api/public_routes.py:163"}, "properties": {"repobilityId": "ec2075ea9b01c7d2", "scanner": "scanner-primary", "fingerprint": "776f8f7a0f437825", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/public_routes.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-7850324b33285886", "level": "error", "message": {"text": "FastAPI POST `create_task` without auth dependency \u2014 api/tasks_routes.py:153"}, "properties": {"repobilityId": "94a619e76e4181ea", "scanner": "scanner-primary", "fingerprint": "7850324b33285886", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-765fda3284b1097a", "level": "error", "message": {"text": "FastAPI PATCH `edit_task` without auth dependency \u2014 api/tasks_routes.py:179"}, "properties": {"repobilityId": "a61d2eadba96d0a7", "scanner": "scanner-primary", "fingerprint": "765fda3284b1097a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-9845ab6a336d9912", "level": "error", "message": {"text": "FastAPI POST `complete_task` without auth dependency \u2014 api/tasks_routes.py:218"}, "properties": {"repobilityId": "e1ec33646bbca798", "scanner": "scanner-primary", "fingerprint": "9845ab6a336d9912", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-17cea4b240e05be8", "level": "error", "message": {"text": "FastAPI POST `reopen_task` without auth dependency \u2014 api/tasks_routes.py:222"}, "properties": {"repobilityId": "6588d92e038ac755", "scanner": "scanner-primary", "fingerprint": "17cea4b240e05be8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-3249ad40ebb21cfe", "level": "error", "message": {"text": "FastAPI POST `archive_task` without auth dependency \u2014 api/tasks_routes.py:235"}, "properties": {"repobilityId": "e60658e9ebfd5121", "scanner": "scanner-primary", "fingerprint": "3249ad40ebb21cfe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-65743ae159794f3b", "level": "error", "message": {"text": "FastAPI POST `unarchive_task` without auth dependency \u2014 api/tasks_routes.py:239"}, "properties": {"repobilityId": "6495fa529bda7d6e", "scanner": "scanner-primary", "fingerprint": "65743ae159794f3b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/tasks_routes.py"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-e2c1bcbd14a9801d", "level": "error", "message": {"text": "FastAPI PUT `put_onboarding` without auth dependency \u2014 api/onboarding_routes.py:321"}, "properties": {"repobilityId": "17f772781195fd40", "scanner": "scanner-primary", "fingerprint": "e2c1bcbd14a9801d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/onboarding_routes.py"}, "region": {"startLine": 321}}}]}, {"ruleId": "scanner-2edf966dee74cf20", "level": "error", "message": {"text": "FastAPI POST `load_sample` without auth dependency \u2014 api/onboarding_routes.py:336"}, "properties": {"repobilityId": "de8d15826f2b171d", "scanner": "scanner-primary", "fingerprint": "2edf966dee74cf20", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/onboarding_routes.py"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-47af9017430e8ff2", "level": "error", "message": {"text": "FastAPI POST `mount_support` without auth dependency \u2014 api/support_routes.py:153"}, "properties": {"repobilityId": "cd2c82d9691bf76c", "scanner": "scanner-primary", "fingerprint": "47af9017430e8ff2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/support_routes.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-197fe9422ce3e558", "level": "error", "message": {"text": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:233)"}, "properties": {"repobilityId": "481acfa6eb4e4222", "scanner": "scanner-primary", "fingerprint": "197fe9422ce3e558", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bda391d94abb656a", "level": "error", "message": {"text": "Dangling fetch: POST https://${domain}/oauth2/token (web/src/auth/cognito.ts:275)"}, "properties": {"repobilityId": "a825092244252d21", "scanner": "scanner-primary", "fingerprint": "bda391d94abb656a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ed80b9d22a5ae874", "level": "error", "message": {"text": "Dangling fetch: POST https://${domain}/oauth2/revoke (web/src/auth/cognito.ts:362)"}, "properties": {"repobilityId": "8ba675124443e22b", "scanner": "scanner-primary", "fingerprint": "ed80b9d22a5ae874", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fe95f31f2fce6fd1", "level": "note", "message": {"text": "Unused endpoint: GET /account/export"}, "properties": {"repobilityId": "6d73660fd9a3f940", "scanner": "scanner-primary", "fingerprint": "fe95f31f2fce6fd1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dbfc08bae13a19b3", "level": "note", "message": {"text": "Unused endpoint: POST /account/delete"}, "properties": {"repobilityId": "490683ea183b14ed", "scanner": "scanner-primary", "fingerprint": "dbfc08bae13a19b3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7b0bc4b318458b1a", "level": "note", "message": {"text": "Unused endpoint: GET /knowledge"}, "properties": {"repobilityId": "0ac55cc594daca85", "scanner": "scanner-primary", "fingerprint": "7b0bc4b318458b1a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d5534aedb5ed46df", "level": "note", "message": {"text": "Unused endpoint: GET /knowledge/search"}, "properties": {"repobilityId": "21de9ccbeb798640", "scanner": "scanner-primary", "fingerprint": "d5534aedb5ed46df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9a22639dcf56ca8b", "level": "note", "message": {"text": "Unused endpoint: POST /knowledge/documents"}, "properties": {"repobilityId": "57ea850427b930a2", "scanner": "scanner-primary", "fingerprint": "9a22639dcf56ca8b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9c2326e7969e4d5d", "level": "note", "message": {"text": "Unused endpoint: GET /knowledge/documents"}, "properties": {"repobilityId": "4355b96587be499b", "scanner": "scanner-primary", "fingerprint": "9c2326e7969e4d5d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1576bd6a8073b50a", "level": "note", "message": {"text": "Unused endpoint: PATCH /knowledge/documents/{ref_id}/location"}, "properties": {"repobilityId": "d0286551558be566", "scanner": "scanner-primary", "fingerprint": "1576bd6a8073b50a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a93dbcd77a600622", "level": "note", "message": {"text": "Unused endpoint: GET /knowledge/documents/{ref_id}"}, "properties": {"repobilityId": "f7cb39d4fc98f7d1", "scanner": "scanner-primary", "fingerprint": "a93dbcd77a600622", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5f1f1dbd7e4e53a7", "level": "note", "message": {"text": "Unused endpoint: PUT /knowledge/documents/{ref_id}"}, "properties": {"repobilityId": "7f435846ac0ba03f", "scanner": "scanner-primary", "fingerprint": "5f1f1dbd7e4e53a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-244b2e8c82762f29", "level": "note", "message": {"text": "Unused endpoint: DELETE /knowledge/documents/{ref_id}"}, "properties": {"repobilityId": "b0f7dad7a7650121", "scanner": "scanner-primary", "fingerprint": "244b2e8c82762f29", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99dd6421d5f7bb29", "level": "note", "message": {"text": "Unused endpoint: GET /public/status"}, "properties": {"repobilityId": "104bc0ac8e7d4b98", "scanner": "scanner-primary", "fingerprint": "99dd6421d5f7bb29", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-963710f42a2c8219", "level": "note", "message": {"text": "Unused endpoint: GET /api/status"}, "properties": {"repobilityId": "2b0496daaa799757", "scanner": "scanner-primary", "fingerprint": "963710f42a2c8219", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6327e7d63f12d827", "level": "note", "message": {"text": "Unused endpoint: GET /contacts"}, "properties": {"repobilityId": "76e5906356434ea8", "scanner": "scanner-primary", "fingerprint": "6327e7d63f12d827", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1eb8c6d4f14b7cdc", "level": "note", "message": {"text": "Unused endpoint: GET /contacts/duplicates"}, "properties": {"repobilityId": "5aba159829b7aa3e", "scanner": "scanner-primary", "fingerprint": "1eb8c6d4f14b7cdc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56c76afbccd7686b", "level": "note", "message": {"text": "Unused endpoint: POST /contacts/merge"}, "properties": {"repobilityId": "0d61cc18d9fc2040", "scanner": "scanner-primary", "fingerprint": "56c76afbccd7686b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c03a22ce5bc1852c", "level": "note", "message": {"text": "Unused endpoint: GET /contacts/{contact_id}"}, "properties": {"repobilityId": "29e0c6ca6ebc6d1f", "scanner": "scanner-primary", "fingerprint": "c03a22ce5bc1852c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4321271f647e2bd0", "level": "note", "message": {"text": "Unused endpoint: POST /contacts"}, "properties": {"repobilityId": "7e9b35ccc79aad11", "scanner": "scanner-primary", "fingerprint": "4321271f647e2bd0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9337d7f7f251c9b5", "level": "note", "message": {"text": "Unused endpoint: PATCH /contacts/{contact_id}"}, "properties": {"repobilityId": "39c5f8f5921f4ea8", "scanner": "scanner-primary", "fingerprint": "9337d7f7f251c9b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a35ce3e9c9f59e0a", "level": "note", "message": {"text": "Unused endpoint: GET /companies"}, "properties": {"repobilityId": "ec9a3fb44f9992c4", "scanner": "scanner-primary", "fingerprint": "a35ce3e9c9f59e0a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a256e55f31d8dd8", "level": "note", "message": {"text": "Unused endpoint: GET /companies/duplicates"}, "properties": {"repobilityId": "7ac4bd1f8b6953aa", "scanner": "scanner-primary", "fingerprint": "3a256e55f31d8dd8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-250dd6450b569c07", "level": "note", "message": {"text": "Unused endpoint: POST /companies/merge"}, "properties": {"repobilityId": "c75720e6a42be107", "scanner": "scanner-primary", "fingerprint": "250dd6450b569c07", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a5f0f911d476173", "level": "note", "message": {"text": "Unused endpoint: GET /companies/{company_id}"}, "properties": {"repobilityId": "1a9d612c098bc385", "scanner": "scanner-primary", "fingerprint": "0a5f0f911d476173", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec39abb0b24cc5b2", "level": "note", "message": {"text": "Unused endpoint: POST /companies"}, "properties": {"repobilityId": "8c0ebdcfb81b2139", "scanner": "scanner-primary", "fingerprint": "ec39abb0b24cc5b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9654464a0e81d943", "level": "note", "message": {"text": "Unused endpoint: PATCH /companies/{company_id}"}, "properties": {"repobilityId": "c071ee0d066344ec", "scanner": "scanner-primary", "fingerprint": "9654464a0e81d943", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1c9a70c6db05568", "level": "note", "message": {"text": "Unused endpoint: POST /contacts/{contact_id}/activities"}, "properties": {"repobilityId": "3625beb3cf68ef75", "scanner": "scanner-primary", "fingerprint": "c1c9a70c6db05568", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c3420012fd8390a7", "level": "note", "message": {"text": "Unused endpoint: POST /contacts/{contact_id}/archive"}, "properties": {"repobilityId": "baa45ebc8600681a", "scanner": "scanner-primary", "fingerprint": "c3420012fd8390a7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ab8562874f1c974", "level": "note", "message": {"text": "Unused endpoint: POST /contacts/{contact_id}/unarchive"}, "properties": {"repobilityId": "d2b140301f7f94a9", "scanner": "scanner-primary", "fingerprint": "2ab8562874f1c974", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8569c5e37623cc2", "level": "note", "message": {"text": "Unused endpoint: POST /companies/{company_id}/archive"}, "properties": {"repobilityId": "be648a9c8f16ae24", "scanner": "scanner-primary", "fingerprint": "c8569c5e37623cc2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a2cbee483383936", "level": "note", "message": {"text": "Unused endpoint: POST /companies/{company_id}/unarchive"}, "properties": {"repobilityId": "7789280fdd8e4e2b", "scanner": "scanner-primary", "fingerprint": "0a2cbee483383936", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d16b1bb2723f51e", "level": "note", "message": {"text": "Unused endpoint: POST /signup"}, "properties": {"repobilityId": "e712b369a9f69c90", "scanner": "scanner-primary", "fingerprint": "8d16b1bb2723f51e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bdf523471f4ae02e", "level": "note", "message": {"text": "Unused endpoint: GET /signup/{account_id}"}, "properties": {"repobilityId": "a060d85736d96d7f", "scanner": "scanner-primary", "fingerprint": "bdf523471f4ae02e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-faa500a1117eb47f", "level": "note", "message": {"text": "Unused endpoint: POST /signup/{account_id}/verify-email"}, "properties": {"repobilityId": "204f1138616917ec", "scanner": "scanner-primary", "fingerprint": "faa500a1117eb47f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4f18d63e92cba467", "level": "note", "message": {"text": "Unused endpoint: GET /signup/{account_id}/verify-email"}, "properties": {"repobilityId": "3b7fed27b8d3a3e1", "scanner": "scanner-primary", "fingerprint": "4f18d63e92cba467", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f8dbe34872483b4", "level": "note", "message": {"text": "Unused endpoint: POST /signup/{account_id}/verify-phone"}, "properties": {"repobilityId": "13ed06e4b7cc85bd", "scanner": "scanner-primary", "fingerprint": "2f8dbe34872483b4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1fa1a66cbb9fddb", "level": "note", "message": {"text": "Unused endpoint: POST /signup/{account_id}/checkout"}, "properties": {"repobilityId": "2d94e5cc8f19f335", "scanner": "scanner-primary", "fingerprint": "e1fa1a66cbb9fddb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e81ab546c85891b0", "level": "note", "message": {"text": "Unused endpoint: POST /signup/{account_id}/retry-provision"}, "properties": {"repobilityId": "47b9c140470add9a", "scanner": "scanner-primary", "fingerprint": "e81ab546c85891b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1dfcc9529630142e", "level": "note", "message": {"text": "Unused endpoint: POST /webhooks/stripe"}, "properties": {"repobilityId": "73aa237670a5d9a8", "scanner": "scanner-primary", "fingerprint": "1dfcc9529630142e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b5038409102d29e2", "level": "note", "message": {"text": "Unused endpoint: POST /billing/portal-session"}, "properties": {"repobilityId": "54ffe967379d70da", "scanner": "scanner-primary", "fingerprint": "b5038409102d29e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1552af7fe444d20d", "level": "note", "message": {"text": "Unused endpoint: POST /api/billing/portal-session"}, "properties": {"repobilityId": "afb486ce6fc6688f", "scanner": "scanner-primary", "fingerprint": "1552af7fe444d20d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efd2fb68a69a7b51", "level": "note", "message": {"text": "Unused endpoint: GET /billing/invoices"}, "properties": {"repobilityId": "5abff6c344833c5e", "scanner": "scanner-primary", "fingerprint": "efd2fb68a69a7b51", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c444dca0336d5659", "level": "note", "message": {"text": "Unused endpoint: GET /api/billing/invoices"}, "properties": {"repobilityId": "cbaaedcce97f7b02", "scanner": "scanner-primary", "fingerprint": "c444dca0336d5659", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bced35a4cd9c329b", "level": "note", "message": {"text": "Unused endpoint: GET /billing"}, "properties": {"repobilityId": "beb9cec9815809d2", "scanner": "scanner-primary", "fingerprint": "bced35a4cd9c329b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-38ea87798d21ae17", "level": "note", "message": {"text": "Unused endpoint: GET /api/billing"}, "properties": {"repobilityId": "e009bda0030bc814", "scanner": "scanner-primary", "fingerprint": "38ea87798d21ae17", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0cc6d1ba34d97c8c", "level": "note", "message": {"text": "Unused endpoint: GET /account/modules"}, "properties": {"repobilityId": "faa6bf0b7db8ac19", "scanner": "scanner-primary", "fingerprint": "0cc6d1ba34d97c8c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-391e36a5b0288083", "level": "note", "message": {"text": "Unused endpoint: PUT /account/modules"}, "properties": {"repobilityId": "6316432ceb31eed7", "scanner": "scanner-primary", "fingerprint": "391e36a5b0288083", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "bb60eda32391faf3", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c1545494ab6166c", "level": "note", "message": {"text": "Unused endpoint: GET /api/me"}, "properties": {"repobilityId": "2d608e24a18acc88", "scanner": "scanner-primary", "fingerprint": "5c1545494ab6166c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0518558dda792269", "level": "note", "message": {"text": "Unused endpoint: GET /approvals"}, "properties": {"repobilityId": "0334ac260961bc85", "scanner": "scanner-primary", "fingerprint": "0518558dda792269", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4acc9902c4f7dffb", "level": "note", "message": {"text": "Unused endpoint: POST /approvals/{approval_id}/decide"}, "properties": {"repobilityId": "6630a7f9a6b3cd9f", "scanner": "scanner-primary", "fingerprint": "4acc9902c4f7dffb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a7ffa6a3ee2cb58", "level": "note", "message": {"text": "Unused endpoint: GET /views"}, "properties": {"repobilityId": "bdebe0bcf45041af", "scanner": "scanner-primary", "fingerprint": "4a7ffa6a3ee2cb58", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}