{"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-4d58e334678b488c", "name": "Possibly dead Python function: to_utc", "shortDescription": {"text": "Possibly dead Python function: to_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-9c3922eaab166ff5", "name": "Possibly dead Python function: format_time_ict", "shortDescription": {"text": "Possibly dead Python function: format_time_ict"}, "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-5b3ae2bff0aa10ad", "name": "Possibly dead Python function: is_trading_day_db", "shortDescription": {"text": "Possibly dead Python function: is_trading_day_db"}, "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-ca3da99152a72b1f", "name": "Possibly dead Python function: reset_client", "shortDescription": {"text": "Possibly dead Python function: reset_client"}, "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-1c997996d2885f8d", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-6b4dcdfe9d41fc1e", "name": "Possibly dead Python function: reset_state", "shortDescription": {"text": "Possibly dead Python function: reset_state"}, "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-ba1bf897f3e483e6", "name": "Possibly dead Python function: run_monitor_loop", "shortDescription": {"text": "Possibly dead Python function: run_monitor_loop"}, "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-b2a879b0a2051635", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-b169e8bfed1c5269", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-fc079a5aec78ecd6", "name": "Possibly dead Python function: classify_ownership", "shortDescription": {"text": "Possibly dead Python function: classify_ownership"}, "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-9b171e235be00730", "name": "Possibly dead Python function: process_minute_batch", "shortDescription": {"text": "Possibly dead Python function: process_minute_batch"}, "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-5f23e784560f5193", "name": "Possibly dead Python function: fetch_intraday_bars_blocking", "shortDescription": {"text": "Possibly dead Python function: fetch_intraday_bars_blocking"}, "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-654b9eeca2ed4857", "name": "Possibly dead Python function: key", "shortDescription": {"text": "Possibly dead Python function: key"}, "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-11f8db53508e283b", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-4ff4a88b1e27d075", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-4539b6b4b124b3ea", "name": "Possibly dead Python function: run_eod", "shortDescription": {"text": "Possibly dead Python function: run_eod"}, "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-4a2b073d37f2d09d", "name": "Possibly dead Python function: is_individual_drawdown_eligible", "shortDescription": {"text": "Possibly dead Python function: is_individual_drawdown_eligible"}, "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-d8e574abe203651e", "name": "Possibly dead Python function: regime_policy", "shortDescription": {"text": "Possibly dead Python function: regime_policy"}, "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-e492a8a1a7e91004", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a13c0b6d38b8bc3", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2cd7c1691aa3ed96", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c1aad2a50f5a45b", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-734335c3c78204ed", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83d750117d23f0ba", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/alerts/[id]/page.tsx:219", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/alerts/[id]/page.tsx:219"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-193f481cb74739ac", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/watchlist/page.tsx:110", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/watchlist/page.tsx:110"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41dc37c3d45978a0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/portfolio/PortfolioConstraintsPanel.tsx:128", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/portfolio/PortfolioConstraintsPanel.tsx:128"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-561e48726ee1979b", "name": "Privileged port 30 in use", "shortDescription": {"text": "Privileged port 30 in use"}, "fullDescription": {"text": "Port 30 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-91222e281fbc0ff5", "name": "Privileged port 11 in use", "shortDescription": {"text": "Privileged port 11 in use"}, "fullDescription": {"text": "Port 11 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-9f5f893db55e561a", "name": "Privileged port 13 in use", "shortDescription": {"text": "Privileged port 13 in use"}, "fullDescription": {"text": "Port 13 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-5b18ee0bd72f7bdb", "name": "Privileged port 45 in use", "shortDescription": {"text": "Privileged port 45 in use"}, "fullDescription": {"text": "Port 45 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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: 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-e066691601852931", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-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-60427b03771411b6", "name": "Dockerfile runs as root: frontend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: frontend/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-faa134129e5545ff", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "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-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-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c234509587098f76", "name": "Very large file: frontend/app/validation/page.tsx (1500 lines)", "shortDescription": {"text": "Very large file: frontend/app/validation/page.tsx (1500 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-197b25a22f256450", "name": "Very large file: app/services/validation_replay_service.py (1715 lines)", "shortDescription": {"text": "Very large file: app/services/validation_replay_service.py (1715 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-38cf19f1e142735e", "name": "Very large file: app/services/veto_tuning_service.py (1196 lines)", "shortDescription": {"text": "Very large file: app/services/veto_tuning_service.py (1196 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-feeb6ad9868fc092", "name": "Very large file: app/services/calibration_service.py (1373 lines)", "shortDescription": {"text": "Very large file: app/services/calibration_service.py (1373 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-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 324 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 55 placeholder/mock markers across 26 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci. 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-2679282aa1c484b5", "name": "Agent authority lacks a verifier contract: AGENTS.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a622e71c0d4c5807", "name": "Commented-code block (5 lines) in frontend/types/reviewWorkbench.ts:98", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/types/reviewWorkbench.ts:98"}, "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-05e9de4eb7fe50e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/HeSoPanel.tsx:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/HeSoPanel.tsx:61"}, "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-bf13ca1b592f37f5", "name": "Commented-code block (5 lines) in frontend/components/ShareholderAnchorPanel.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/ShareholderAnchorPanel.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-2c1b0bbf92f693fc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ShareholderAnchorPanel.tsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ShareholderAnchorPanel.tsx:69"}, "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-c11d99d8718f20f5", "name": "Commented-code block (5 lines) in frontend/components/PlacedVolumePanel.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/PlacedVolumePanel.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-55baf1eb40d11070", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/PlacedVolumePanel.tsx:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/PlacedVolumePanel.tsx:54"}, "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-c7f35de39b75c95d", "name": "Commented-code block (5 lines) in frontend/components/SectorRotationCard.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/SectorRotationCard.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-75690d9f9580c029", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SectorRotationCard.tsx:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SectorRotationCard.tsx:56"}, "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-8b497bd2df47d0ed", "name": "Commented-code block (5 lines) in frontend/components/BctcCtckPanel.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/components/BctcCtckPanel.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-fd4f61ee1109a7c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/BctcCtckPanel.tsx:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/BctcCtckPanel.tsx:53"}, "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-c11421c8e5379453", "name": "Commented-code block (7 lines) in frontend/components/SubjectInferencePanel.tsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/components/SubjectInferencePanel.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-ebb088eefb7fde63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SubjectInferencePanel.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SubjectInferencePanel.tsx:66"}, "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-d09204cd90b22e45", "name": "Commented-code block (5 lines) in frontend/app/ownership/[ticker]/page.tsx:188", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/ownership/[ticker]/page.tsx:188"}, "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-2252c152081e0429", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/ClusterProgress.tsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/ClusterProgress.tsx:42"}, "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-9db3b8178d52ac43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/page.tsx:242", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/page.tsx:242"}, "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-6c25a46976545796", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/watchlist/page.tsx:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/watchlist/page.tsx:50"}, "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-9776cad2a77655be", "name": "Commented-code block (5 lines) in tests/unit/test_position_history_column_guard.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_position_history_column_guard.py:69"}, "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-494aef6db84c721b", "name": "Commented-code block (5 lines) in tests/unit/test_operator_efficiency.py:455", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_operator_efficiency.py:455"}, "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-6459aaa5a44f71f4", "name": "Commented-code block (6 lines) in tests/unit/test_review_workbench.py:553", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_review_workbench.py:553"}, "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-6c2d3e136914652f", "name": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_cluster_volume_service.py:478", "shortDescription": {"text": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_cluster_volume_service.py:478"}, "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-e083d22be9979d4d", "name": "Commented-code block (5 lines) in tests/unit/test_cluster_volume_service.py:243", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_cluster_volume_service.py:243"}, "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-a38d6820c047eb9a", "name": "Commented-code block (5 lines) in tests/unit/test_veto_tuning_service.py:632", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_veto_tuning_service.py:632"}, "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-d8611d2207bbb1e1", "name": "Commented-code block (6 lines) in tests/unit/test_veto_tuning_domain.py:226", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/test_veto_tuning_domain.py:226"}, "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-43f1ffea95140311", "name": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_order_rate_service.py:464", "shortDescription": {"text": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_order_rate_service.py:464"}, "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-1f9e6b53c5e015dc", "name": "Commented-code block (5 lines) in tests/unit/test_daily_ohlcv_column_guard.py:72", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_daily_ohlcv_column_guard.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-6b0789302609d007", "name": "Commented-code block (5 lines) in tests/unit/test_validation_replay_service.py:228", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/test_validation_replay_service.py:228"}, "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-1baf1dfc879b32d9", "name": "Commented-code block (6 lines) in app/config.py:375", "shortDescription": {"text": "Commented-code block (6 lines) in app/config.py:375"}, "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-55560121306efee7", "name": "Commented-code block (6 lines) in app/scheduler.py:671", "shortDescription": {"text": "Commented-code block (6 lines) in app/scheduler.py:671"}, "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-489646cb36bcc9cc", "name": "Commented-code block (6 lines) in app/main.py:261", "shortDescription": {"text": "Commented-code block (6 lines) in app/main.py:261"}, "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-e90f8d2226595a13", "name": "Network/subprocess call without timeout or try/except \u2014 app/main.py:27", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 app/main.py:27"}, "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-83e5e31b9c18b2bb", "name": "Commented-code block (7 lines) in app/adapters/subject_flow_source.py:133", "shortDescription": {"text": "Commented-code block (7 lines) in app/adapters/subject_flow_source.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-f64a599eb8ddf6ef", "name": "Commented-code block (9 lines) in app/utils/trading_hours.py:26", "shortDescription": {"text": "Commented-code block (9 lines) in app/utils/trading_hours.py: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-7d944094805e8d8d", "name": "Commented-code block (6 lines) in app/services/deception_service.py:271", "shortDescription": {"text": "Commented-code block (6 lines) in app/services/deception_service.py:271"}, "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-cf547415e5e5a6bf", "name": "Commented-code block (7 lines) in app/services/validation_replay_service.py:684", "shortDescription": {"text": "Commented-code block (7 lines) in app/services/validation_replay_service.py:684"}, "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-ef006ed875aed70e", "name": "Commented-code block (7 lines) in app/services/model_chan_cau_service.py:491", "shortDescription": {"text": "Commented-code block (7 lines) in app/services/model_chan_cau_service.py:491"}, "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-080a288f59208cae", "name": "Commented-code block (5 lines) in app/services/model_mu_sat_canh_buom_service.py:316", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/model_mu_sat_canh_buom_service.py:316"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f078d86c3ac43f7", "name": "Commented-code block (5 lines) in app/services/backtest_harness_service.py:136", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/backtest_harness_service.py:136"}, "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-dee3ac025829c731", "name": "Commented-code block (5 lines) in app/services/veto_tuning_service.py:418", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/veto_tuning_service.py:418"}, "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-870410032c4d130e", "name": "Commented-code block (5 lines) in app/services/calibration_service.py:366", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/calibration_service.py:366"}, "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-c3aaa97b092c2f03", "name": "Commented-code block (7 lines) in app/services/he_so_service.py:121", "shortDescription": {"text": "Commented-code block (7 lines) in app/services/he_so_service.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-4109bb82016bb6e9", "name": "Commented-code block (7 lines) in app/services/notification.py:961", "shortDescription": {"text": "Commented-code block (7 lines) in app/services/notification.py:961"}, "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-568cb1e1480f8df1", "name": "Commented-code block (5 lines) in app/services/operator_efficiency_service.py:230", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/operator_efficiency_service.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-27422968f84621df", "name": "Commented-code block (9 lines) in app/services/tactical_labeling_service.py:388", "shortDescription": {"text": "Commented-code block (9 lines) in app/services/tactical_labeling_service.py:388"}, "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-bac7098ed8cc08fa", "name": "Commented-code block (5 lines) in app/services/model_ngua_dut_day_service.py:343", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/model_ngua_dut_day_service.py:343"}, "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-cc0af8f2112fc16b", "name": "Commented-code block (5 lines) in app/services/stock_anatomy_service.py:468", "shortDescription": {"text": "Commented-code block (5 lines) in app/services/stock_anatomy_service.py:468"}, "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-775e80e785c7d95f", "name": "Commented-code block (7 lines) in app/services/model_z_service.py:342", "shortDescription": {"text": "Commented-code block (7 lines) in app/services/model_z_service.py:342"}, "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-3892c9a3a0f74a93", "name": "Commented-code block (5 lines) in app/domain/model_mu_sat_canh_buom.py:65", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/model_mu_sat_canh_buom.py:65"}, "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-3fe59695a5089d8d", "name": "Commented-code block (5 lines) in app/domain/order_rate.py:38", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/order_rate.py:38"}, "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-3784189066cf6fa4", "name": "Commented-code block (5 lines) in app/domain/review_priority.py:253", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/review_priority.py:253"}, "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-e84239fe54f160f2", "name": "Commented-code block (5 lines) in app/domain/cluster_volume.py:47", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/cluster_volume.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-325d8d13152c09f1", "name": "Commented-code block (5 lines) in app/domain/model_dien_ho.py:234", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/model_dien_ho.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-91915c4101342f7f", "name": "Commented-code block (5 lines) in app/domain/divergence.py:230", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/divergence.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-ce335c2cca8cd4a2", "name": "Commented-code block (6 lines) in app/domain/backtest.py:757", "shortDescription": {"text": "Commented-code block (6 lines) in app/domain/backtest.py:757"}, "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-010c19513262e385", "name": "Commented-code block (5 lines) in app/domain/bridge_foot.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/bridge_foot.py:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35d0c7ff7855e9e6", "name": "Commented-code block (6 lines) in app/domain/candle_classifier.py:741", "shortDescription": {"text": "Commented-code block (6 lines) in app/domain/candle_classifier.py:741"}, "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-f4edb65f33d2555c", "name": "Commented-code block (5 lines) in app/domain/veto_tuning.py:57", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/veto_tuning.py:57"}, "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-7103c5673ff358fe", "name": "Commented-code block (9 lines) in app/domain/portfolio_constraints.py:362", "shortDescription": {"text": "Commented-code block (9 lines) in app/domain/portfolio_constraints.py:362"}, "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-e29bf2b5c9c70836", "name": "Commented-code block (7 lines) in app/domain/regime.py:325", "shortDescription": {"text": "Commented-code block (7 lines) in app/domain/regime.py:325"}, "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-58ae6ffd055fbdcd", "name": "Commented-code block (5 lines) in app/domain/anatomy.py:79", "shortDescription": {"text": "Commented-code block (5 lines) in app/domain/anatomy.py:79"}, "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-a7411ac197178286", "name": "Commented-code block (5 lines) in alembic/versions/031_subject_inference.py:51", "shortDescription": {"text": "Commented-code block (5 lines) in alembic/versions/031_subject_inference.py:51"}, "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-5898f50700217818", "name": "Commented-code block (6 lines) in alembic/versions/026_operator_efficiency.py:40", "shortDescription": {"text": "Commented-code block (6 lines) in alembic/versions/026_operator_efficiency.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-c7c52fc1ac313695", "name": "Commented-code block (6 lines) in alembic/versions/010_ownership_radar_phase1a.py:135", "shortDescription": {"text": "Commented-code block (6 lines) in alembic/versions/010_ownership_radar_phase1a.py:135"}, "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-da75622f9f3dc527", "name": "Commented-code block (7 lines) in alembic/versions/037_divergence_radar.py:40", "shortDescription": {"text": "Commented-code block (7 lines) in alembic/versions/037_divergence_radar.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-5cc628fcab746182", "name": "Commented-code block (5 lines) in alembic/versions/025_review_workbench.py:130", "shortDescription": {"text": "Commented-code block (5 lines) in alembic/versions/025_review_workbench.py:130"}, "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-319e66a630e14977", "name": "2 env vars used in code but missing from .env.example", "shortDescription": {"text": "2 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `API_URL`, `NEXT_PUBLIC_API_URL`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "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:\nscripts/probe_fiinquant_fundamentals.py:main, scripts/probe_fiinquant_capabilities.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/run_validation_labeling.py:main, scripts/run_backtest.py:main, scripts/run_calibration.py:main, scripts/run_validation_replay.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a6b62e30ce7ab4", "name": "Near-duplicate function bodies in 6 places", "shortDescription": {"text": "Near-duplicate function bodies in 6 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp/adapters/placed_volume_source.py:get_placed_volume, app/adapters/placed_volume_source.py:get_placed_volume, app/adapters/placed_volume_source.py:get_placed_volume, app/adapters/placed_volume_source.py:get_placed_volume\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-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp/adapters/money_flow_source.py:get_sector_flow, app/adapters/money_flow_source.py:get_sector_flow, app/adapters/money_flow_source.py:get_sector_flow, app/adapters/money_flow_source.py:get_sector_flow\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-524adab0afa061a9", "name": "Near-duplicate function bodies in 31 places", "shortDescription": {"text": "Near-duplicate function bodies in 31 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napp/services/candle_metrics_service.py:inject_deps, app/services/cost_per_holder_service.py:inject_deps, app/services/placed_volume_service.py:inject_deps, app/services/validation_case_service.py:inject_deps\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:\napp/services/notification.py:send_cycle_breakout_email, app/services/notification.py:send_cycle_10day_warning_email, app/services/notification.py:send_cycle_bottom_email\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-c3c68e0a5d508ecd", "name": "FastAPI POST `post_decision` without auth dependency \u2014 app/api/review_workbench.py:110", "shortDescription": {"text": "FastAPI POST `post_decision` without auth dependency \u2014 app/api/review_workbench.py:110"}, "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-ad38733f787aa7c5", "name": "FastAPI POST `post_ai_note` without auth dependency \u2014 app/api/review_workbench.py:131", "shortDescription": {"text": "FastAPI POST `post_ai_note` without auth dependency \u2014 app/api/review_workbench.py:131"}, "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-f63ad37e21b32233", "name": "FastAPI POST `post_escalate` without auth dependency \u2014 app/api/review_workbench.py:150", "shortDescription": {"text": "FastAPI POST `post_escalate` without auth dependency \u2014 app/api/review_workbench.py:150"}, "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-6d50fc7f0ddfa5c6", "name": "FastAPI POST `post_case_from_tactical` without auth dependency \u2014 app/api/review_workbench.py:163", "shortDescription": {"text": "FastAPI POST `post_case_from_tactical` without auth dependency \u2014 app/api/review_workbench.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-80f1b4648e4b8d11", "name": "FastAPI POST `post_case_from_nav_risk` without auth dependency \u2014 app/api/review_workbench.py:172", "shortDescription": {"text": "FastAPI POST `post_case_from_nav_risk` without auth dependency \u2014 app/api/review_workbench.py:172"}, "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-22057859eb6e16ca", "name": "FastAPI PATCH `update_ticker_m3_settings` without auth dependency \u2014 app/api/watchlist.py:71", "shortDescription": {"text": "FastAPI PATCH `update_ticker_m3_settings` without auth dependency \u2014 app/api/watchlist.py:71"}, "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-2b5245c67948b674", "name": "FastAPI POST `evaluate_now` without auth dependency \u2014 app/api/nav_risk.py:92", "shortDescription": {"text": "FastAPI POST `evaluate_now` without auth dependency \u2014 app/api/nav_risk.py:92"}, "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-55ed1501bf19f9b0", "name": "FastAPI POST `create_run` without auth dependency \u2014 app/api/backtest.py:52", "shortDescription": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/backtest.py:52"}, "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-cbad1878465c7fdb", "name": "FastAPI POST `create_run` without auth dependency \u2014 app/api/veto_tuning.py:60", "shortDescription": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/veto_tuning.py:60"}, "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-b455a81c7961b405", "name": "FastAPI POST `create_run` without auth dependency \u2014 app/api/validation_replay.py:48", "shortDescription": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/validation_replay.py:48"}, "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-e5e25645dea25253", "name": "FastAPI PUT `update_thresholds` without auth dependency \u2014 app/api/settings.py:81", "shortDescription": {"text": "FastAPI PUT `update_thresholds` without auth dependency \u2014 app/api/settings.py:81"}, "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-0b7a05fbc6c46443", "name": "FastAPI POST `create_position` without auth dependency \u2014 app/api/portfolio.py:112", "shortDescription": {"text": "FastAPI POST `create_position` without auth dependency \u2014 app/api/portfolio.py:112"}, "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-a18e925c57bab45b", "name": "FastAPI PATCH `patch_position` without auth dependency \u2014 app/api/portfolio.py:133", "shortDescription": {"text": "FastAPI PATCH `patch_position` without auth dependency \u2014 app/api/portfolio.py:133"}, "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-e5fdfecb596c9580", "name": "FastAPI DELETE `close_position` without auth dependency \u2014 app/api/portfolio.py:154", "shortDescription": {"text": "FastAPI DELETE `close_position` without auth dependency \u2014 app/api/portfolio.py:154"}, "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-d0fb5a12f9a0135f", "name": "FastAPI PATCH `patch_cash` without auth dependency \u2014 app/api/portfolio.py:166", "shortDescription": {"text": "FastAPI PATCH `patch_cash` without auth dependency \u2014 app/api/portfolio.py:166"}, "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-2cc51eca9fd711d0", "name": "FastAPI POST `set_nav_baseline` without auth dependency \u2014 app/api/portfolio.py:182", "shortDescription": {"text": "FastAPI POST `set_nav_baseline` without auth dependency \u2014 app/api/portfolio.py:182"}, "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-c897a9f6bb867b4f", "name": "Dangling fetch: GET /api/bctc-ctck${qs} (frontend/components/BctcCtckPanel.tsx:53)", "shortDescription": {"text": "Dangling fetch: GET /api/bctc-ctck${qs} (frontend/components/BctcCtckPanel.tsx:53)"}, "fullDescription": {"text": "`frontend/components/BctcCtckPanel.tsx:53` calls `GET /api/bctc-ctck${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/bctc-ctck/<p>`\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-a436691337284d03", "name": "Unused endpoint: GET /api/v1/health", "shortDescription": {"text": "Unused endpoint: GET /api/v1/health"}, "fullDescription": {"text": "`app/main.py` declares `GET /api/v1/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`app/main.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8774fb080448ede9", "name": "Unused endpoint: GET /api/v1/notifications/review", "shortDescription": {"text": "Unused endpoint: GET /api/v1/notifications/review"}, "fullDescription": {"text": "`app/api/notifications.py` declares `GET /api/v1/notifications/review` 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-4794dfb32536c54b", "name": "Unused endpoint: GET /api/v1/notifications/mutes", "shortDescription": {"text": "Unused endpoint: GET /api/v1/notifications/mutes"}, "fullDescription": {"text": "`app/api/notifications.py` declares `GET /api/v1/notifications/mutes` 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-a5587e929d66bc55", "name": "Unused endpoint: POST /api/v1/notifications/mutes", "shortDescription": {"text": "Unused endpoint: POST /api/v1/notifications/mutes"}, "fullDescription": {"text": "`app/api/notifications.py` declares `POST /api/v1/notifications/mutes` 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-bd10a5f017807c38", "name": "Unused endpoint: DELETE /api/v1/notifications/mutes/{ticker}/{channel}", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/notifications/mutes/{ticker}/{channel}"}, "fullDescription": {"text": "`app/api/notifications.py` declares `DELETE /api/v1/notifications/mutes/{ticker}/{channel}` 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-e95f50cad52d7289", "name": "Unused endpoint: POST /api/he-so/scan", "shortDescription": {"text": "Unused endpoint: POST /api/he-so/scan"}, "fullDescription": {"text": "`app/api/he_so.py` declares `POST /api/he-so/scan` 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-6b29565c9511e783", "name": "Unused endpoint: GET /order-rate/watchlist", "shortDescription": {"text": "Unused endpoint: GET /order-rate/watchlist"}, "fullDescription": {"text": "`app/api/order_rate.py` declares `GET /order-rate/watchlist` 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-c6af3bf87bf0795c", "name": "Unused endpoint: GET /order-rate/{ticker}/series", "shortDescription": {"text": "Unused endpoint: GET /order-rate/{ticker}/series"}, "fullDescription": {"text": "`app/api/order_rate.py` declares `GET /order-rate/{ticker}/series` 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-5b5557fe010b9ce2", "name": "Unused endpoint: GET /order-rate/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /order-rate/{ticker}"}, "fullDescription": {"text": "`app/api/order_rate.py` declares `GET /order-rate/{ticker}` 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-52cb1887250e7eb2", "name": "Unused endpoint: GET /api/v1/cycles/candidates", "shortDescription": {"text": "Unused endpoint: GET /api/v1/cycles/candidates"}, "fullDescription": {"text": "`app/api/cycles.py` declares `GET /api/v1/cycles/candidates` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8907e4cffe3799b0", "name": "Unused endpoint: GET /api/v1/cycles", "shortDescription": {"text": "Unused endpoint: GET /api/v1/cycles"}, "fullDescription": {"text": "`app/api/cycles.py` declares `GET /api/v1/cycles` 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-222a5e3d5f107339", "name": "Unused endpoint: GET /api/v1/cycles/{cycle_id}", "shortDescription": {"text": "Unused endpoint: GET /api/v1/cycles/{cycle_id}"}, "fullDescription": {"text": "`app/api/cycles.py` declares `GET /api/v1/cycles/{cycle_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-ad7fb3966d0e94b6", "name": "Unused endpoint: GET /cases", "shortDescription": {"text": "Unused endpoint: GET /cases"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `GET /cases` 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-2c92dfeb7d445cda", "name": "Unused endpoint: GET /queue", "shortDescription": {"text": "Unused endpoint: GET /queue"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `GET /queue` 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-7c5db0a7627e4e06", "name": "Unused endpoint: GET /cases/{case_id}", "shortDescription": {"text": "Unused endpoint: GET /cases/{case_id}"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `GET /cases/{case_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-50772cd6774119ba", "name": "Unused endpoint: GET /audit/{case_id}", "shortDescription": {"text": "Unused endpoint: GET /audit/{case_id}"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `GET /audit/{case_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-63f25013d8e2a7fa", "name": "Unused endpoint: POST /cases/{case_id}/decision", "shortDescription": {"text": "Unused endpoint: POST /cases/{case_id}/decision"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `POST /cases/{case_id}/decision` 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-2da3df762af6403e", "name": "Unused endpoint: POST /cases/{case_id}/ai-note", "shortDescription": {"text": "Unused endpoint: POST /cases/{case_id}/ai-note"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `POST /cases/{case_id}/ai-note` 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-1a47bf45383d5b1a", "name": "Unused endpoint: POST /cases/{case_id}/escalate", "shortDescription": {"text": "Unused endpoint: POST /cases/{case_id}/escalate"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `POST /cases/{case_id}/escalate` 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-b8a89db8d3690653", "name": "Unused endpoint: POST /cases/from-tactical/{candidate_id}", "shortDescription": {"text": "Unused endpoint: POST /cases/from-tactical/{candidate_id}"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `POST /cases/from-tactical/{candidate_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-b3c0728905f74113", "name": "Unused endpoint: POST /cases/from-nav-risk/{recommendation_id}", "shortDescription": {"text": "Unused endpoint: POST /cases/from-nav-risk/{recommendation_id}"}, "fullDescription": {"text": "`app/api/review_workbench.py` declares `POST /cases/from-nav-risk/{recommendation_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-bf5fa2d4e891e509", "name": "Unused endpoint: GET /{ticker}", "shortDescription": {"text": "Unused endpoint: GET /{ticker}"}, "fullDescription": {"text": "`app/api/stop_monitor.py` declares `GET /{ticker}` 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-e15e015116e87f81", "name": "Unused endpoint: GET /api/v1/stream/alerts", "shortDescription": {"text": "Unused endpoint: GET /api/v1/stream/alerts"}, "fullDescription": {"text": "`app/api/stream.py` declares `GET /api/v1/stream/alerts` 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-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`app/api/cycle_state.py` declares `POST /` 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-bad01ac2222e29f1", "name": "Unused endpoint: GET /{run_id}", "shortDescription": {"text": "Unused endpoint: GET /{run_id}"}, "fullDescription": {"text": "`app/api/cycle_state.py` declares `GET /{run_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-538b03a9b9672696", "name": "Unused endpoint: GET /api/v1/ownership/snapshots", "shortDescription": {"text": "Unused endpoint: GET /api/v1/ownership/snapshots"}, "fullDescription": {"text": "`app/api/ownership_snapshots.py` declares `GET /api/v1/ownership/snapshots` 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-afe7a09b729decac", "name": "Unused endpoint: GET /api/v1/ownership/snapshots/{ticker}", "shortDescription": {"text": "Unused endpoint: GET /api/v1/ownership/snapshots/{ticker}"}, "fullDescription": {"text": "`app/api/ownership_snapshots.py` declares `GET /api/v1/ownership/snapshots/{ticker}` 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-7f4d6c1fb64c1638", "name": "Unused endpoint: POST /api/v1/ownership/proxy-scan", "shortDescription": {"text": "Unused endpoint: POST /api/v1/ownership/proxy-scan"}, "fullDescription": {"text": "`app/api/ownership_snapshots.py` declares `POST /api/v1/ownership/proxy-scan` 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-c65740edb74a195d", "name": "Unused endpoint: GET /api/v1/ownership/review/export.csv", "shortDescription": {"text": "Unused endpoint: GET /api/v1/ownership/review/export.csv"}, "fullDescription": {"text": "`app/api/ownership_snapshots.py` declares `GET /api/v1/ownership/review/export.csv` 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-d41aef6700f89f63", "name": "Unused endpoint: GET /cluster/{ticker}/history", "shortDescription": {"text": "Unused endpoint: GET /cluster/{ticker}/history"}, "fullDescription": {"text": "`app/api/cluster_volume.py` declares `GET /cluster/{ticker}/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44dbd1695cb20ea7", "name": "Unused endpoint: GET /cluster/{ticker}/progress", "shortDescription": {"text": "Unused endpoint: GET /cluster/{ticker}/progress"}, "fullDescription": {"text": "`app/api/cluster_volume.py` declares `GET /cluster/{ticker}/progress` 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-e43f1f0b287c7e8c", "name": "Unused endpoint: GET /hs1-hs2/history", "shortDescription": {"text": "Unused endpoint: GET /hs1-hs2/history"}, "fullDescription": {"text": "`app/api/hs1_hs2.py` declares `GET /hs1-hs2/history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b12c024027602b9", "name": "Unused endpoint: PATCH /{ticker}/m3", "shortDescription": {"text": "Unused endpoint: PATCH /{ticker}/m3"}, "fullDescription": {"text": "`app/api/watchlist.py` declares `PATCH /{ticker}/m3` 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-cd649139794bcb23", "name": "Unused endpoint: GET /{ticker}/summary", "shortDescription": {"text": "Unused endpoint: GET /{ticker}/summary"}, "fullDescription": {"text": "`app/api/watchlist.py` declares `GET /{ticker}/summary` 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-026cec4dd2685a88", "name": "Unused endpoint: GET /api/v1/admin/scan-history", "shortDescription": {"text": "Unused endpoint: GET /api/v1/admin/scan-history"}, "fullDescription": {"text": "`app/api/admin.py` declares `GET /api/v1/admin/scan-history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7438f4c9b48ba28c", "name": "Unused endpoint: GET /api/v1/admin/scan-m1-history", "shortDescription": {"text": "Unused endpoint: GET /api/v1/admin/scan-m1-history"}, "fullDescription": {"text": "`app/api/admin.py` declares `GET /api/v1/admin/scan-m1-history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d35933ea8980850f", "name": "Unused endpoint: POST /api/v1/admin/replay-m1-history", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/replay-m1-history"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/replay-m1-history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b78035b2167ce2a6", "name": "Unused endpoint: POST /api/v1/admin/replay-m3-history", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/replay-m3-history"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/replay-m3-history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3bc1b7f73217ef9", "name": "Unused endpoint: GET /api/v1/admin/replay-runs", "shortDescription": {"text": "Unused endpoint: GET /api/v1/admin/replay-runs"}, "fullDescription": {"text": "`app/api/admin.py` declares `GET /api/v1/admin/replay-runs` 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-e3227a41cdd9fc80", "name": "Unused endpoint: GET /api/v1/admin/replay-runs/{run_id}", "shortDescription": {"text": "Unused endpoint: GET /api/v1/admin/replay-runs/{run_id}"}, "fullDescription": {"text": "`app/api/admin.py` declares `GET /api/v1/admin/replay-runs/{run_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-8ccd9e090f0784ca", "name": "Unused endpoint: POST /api/v1/admin/cleanup-stuck-runs", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/cleanup-stuck-runs"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/cleanup-stuck-runs` 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-7bb3a0c383473332", "name": "Unused endpoint: POST /api/v1/admin/sync-watchlist", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/sync-watchlist"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/sync-watchlist` 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-b99f0018e7073351", "name": "Unused endpoint: POST /api/v1/admin/backfill-daily", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/backfill-daily"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/backfill-daily` 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-2339d7f7d44f8b04", "name": "Unused endpoint: POST /api/v1/admin/backfill-intraday", "shortDescription": {"text": "Unused endpoint: POST /api/v1/admin/backfill-intraday"}, "fullDescription": {"text": "`app/api/admin.py` declares `POST /api/v1/admin/backfill-intraday` 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-afc064028ae39ea9", "name": "Unused endpoint: GET /history", "shortDescription": {"text": "Unused endpoint: GET /history"}, "fullDescription": {"text": "`app/api/nav_risk.py` declares `GET /history` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95f235fd6ce6304d", "name": "Unused endpoint: POST /evaluate", "shortDescription": {"text": "Unused endpoint: POST /evaluate"}, "fullDescription": {"text": "`app/api/nav_risk.py` declares `POST /evaluate` 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-bdd400c72cd771e9", "name": "Unused endpoint: GET /api/divergence/scan", "shortDescription": {"text": "Unused endpoint: GET /api/divergence/scan"}, "fullDescription": {"text": "`app/api/divergence.py` declares `GET /api/divergence/scan` 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-28523cc93436b673", "name": "Unused endpoint: GET /api/divergence/sectors", "shortDescription": {"text": "Unused endpoint: GET /api/divergence/sectors"}, "fullDescription": {"text": "`app/api/divergence.py` declares `GET /api/divergence/sectors` 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-bafcad85e018c02b", "name": "Unused endpoint: GET /api/calibration/runs", "shortDescription": {"text": "Unused endpoint: GET /api/calibration/runs"}, "fullDescription": {"text": "`app/api/calibration.py` declares `GET /api/calibration/runs` 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/21711"}, "properties": {"repository": "tuannguyen-create/fbot", "repoUrl": "https://github.com/tuannguyen-create/fbot", "branch": "main"}, "results": [{"ruleId": "scanner-4d58e334678b488c", "level": "note", "message": {"text": "Possibly dead Python function: to_utc"}, "properties": {"repobilityId": "37c9cd19bad13fd3", "scanner": "scanner-primary", "fingerprint": "4d58e334678b488c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/utils/timezone.py:19"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c3922eaab166ff5", "level": "note", "message": {"text": "Possibly dead Python function: format_time_ict"}, "properties": {"repobilityId": "edbf350f22619edc", "scanner": "scanner-primary", "fingerprint": "9c3922eaab166ff5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/utils/timezone.py:30"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b3ae2bff0aa10ad", "level": "note", "message": {"text": "Possibly dead Python function: is_trading_day_db"}, "properties": {"repobilityId": "0e6cc72ec6c08231", "scanner": "scanner-primary", "fingerprint": "5b3ae2bff0aa10ad", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/market_calendar.py:38"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ca3da99152a72b1f", "level": "note", "message": {"text": "Possibly dead Python function: reset_client"}, "properties": {"repobilityId": "c2af4118719001a5", "scanner": "scanner-primary", "fingerprint": "ca3da99152a72b1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/fiinquant_eod_investor.py:85"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c997996d2885f8d", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "1c997996d2885f8d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/deception_service.py:575"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b4dcdfe9d41fc1e", "level": "note", "message": {"text": "Possibly dead Python function: reset_state"}, "properties": {"repobilityId": "f61639859b48922c", "scanner": "scanner-primary", "fingerprint": "6b4dcdfe9d41fc1e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/nav_monitor.py:38"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ba1bf897f3e483e6", "level": "note", "message": {"text": "Possibly dead Python function: run_monitor_loop"}, "properties": {"repobilityId": "adc8ace08e0ff608", "scanner": "scanner-primary", "fingerprint": "ba1bf897f3e483e6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/nav_monitor.py:92"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b2a879b0a2051635", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "b2a879b0a2051635", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/model_chan_cau_service.py:620"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b169e8bfed1c5269", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "b169e8bfed1c5269", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/model_mu_sat_canh_buom_service.py:541"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc079a5aec78ecd6", "level": "note", "message": {"text": "Possibly dead Python function: classify_ownership"}, "properties": {"repobilityId": "a923d4937565bece", "scanner": "scanner-primary", "fingerprint": "fc079a5aec78ecd6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/notification_governance.py:253"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b171e235be00730", "level": "note", "message": {"text": "Possibly dead Python function: process_minute_batch"}, "properties": {"repobilityId": "c103089554aada4f", "scanner": "scanner-primary", "fingerprint": "9b171e235be00730", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/holder_minute_service.py:206"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f23e784560f5193", "level": "note", "message": {"text": "Possibly dead Python function: fetch_intraday_bars_blocking"}, "properties": {"repobilityId": "775fe870743194b8", "scanner": "scanner-primary", "fingerprint": "5f23e784560f5193", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/fiinquant_rest.py:395"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-654b9eeca2ed4857", "level": "note", "message": {"text": "Possibly dead Python function: key"}, "properties": {"repobilityId": "82ad9f64418e6fec", "scanner": "scanner-primary", "fingerprint": "654b9eeca2ed4857", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/operator_efficiency_service.py:360"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11f8db53508e283b", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "11f8db53508e283b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/model_ngua_dut_day_service.py:514"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ff4a88b1e27d075", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "4ff4a88b1e27d075", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/model_z_service.py:519"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4539b6b4b124b3ea", "level": "note", "message": {"text": "Possibly dead Python function: run_eod"}, "properties": {"repobilityId": "afb3b1bb3072ff7a", "scanner": "scanner-primary", "fingerprint": "4539b6b4b124b3ea", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/services/model_dien_ho_service.py:506"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4a2b073d37f2d09d", "level": "note", "message": {"text": "Possibly dead Python function: is_individual_drawdown_eligible"}, "properties": {"repobilityId": "e4d53095e8c4d5c7", "scanner": "scanner-primary", "fingerprint": "4a2b073d37f2d09d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/domain/bridge_foot.py:245"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d8e574abe203651e", "level": "note", "message": {"text": "Possibly dead Python function: regime_policy"}, "properties": {"repobilityId": "2f5c24bc0562afce", "scanner": "scanner-primary", "fingerprint": "d8e574abe203651e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/domain/regime.py:546"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e492a8a1a7e91004", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "e492a8a1a7e91004", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "alembic/versions/021_stop_monitor_eval.py:71"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1a13c0b6d38b8bc3", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "1a13c0b6d38b8bc3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "alembic/versions/022_portfolio_constraint_eval.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2cd7c1691aa3ed96", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "2cd7c1691aa3ed96", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "alembic/versions/002_add_indexes.py:34"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c1aad2a50f5a45b", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "9c1aad2a50f5a45b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "alembic/versions/020_phase3_nav_risk.py:76"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-734335c3c78204ed", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "734335c3c78204ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "alembic/versions/001_initial_schema.py:180"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-83d750117d23f0ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/alerts/[id]/page.tsx:219"}, "properties": {"repobilityId": "f538788925cb7a88", "scanner": "scanner-primary", "fingerprint": "83d750117d23f0ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-193f481cb74739ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/watchlist/page.tsx:110"}, "properties": {"repobilityId": "de679a8fbb7a64d0", "scanner": "scanner-primary", "fingerprint": "193f481cb74739ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41dc37c3d45978a0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/portfolio/PortfolioConstraintsPanel.tsx:128"}, "properties": {"repobilityId": "f55332c64699aee7", "scanner": "scanner-primary", "fingerprint": "41dc37c3d45978a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-561e48726ee1979b", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "561e48726ee1979b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/he_so_config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-91222e281fbc0ff5", "level": "warning", "message": {"text": "Privileged port 11 in use"}, "properties": {"repobilityId": "5b3038c67fabb4c8", "scanner": "scanner-primary", "fingerprint": "91222e281fbc0ff5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/he_so_config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f5f893db55e561a", "level": "warning", "message": {"text": "Privileged port 13 in use"}, "properties": {"repobilityId": "79d721e4d6f64798", "scanner": "scanner-primary", "fingerprint": "9f5f893db55e561a", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/he_so_config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5b18ee0bd72f7bdb", "level": "warning", "message": {"text": "Privileged port 45 in use"}, "properties": {"repobilityId": "73cf64d92574d41c", "scanner": "scanner-primary", "fingerprint": "5b18ee0bd72f7bdb", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "config/he_so_config.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-e066691601852931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "f391052c9bfd7e8b", "scanner": "scanner-primary", "fingerprint": "e066691601852931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-60427b03771411b6", "level": "warning", "message": {"text": "Dockerfile runs as root: frontend/Dockerfile"}, "properties": {"repobilityId": "735c01d8531dfd2c", "scanner": "scanner-primary", "fingerprint": "60427b03771411b6", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "3e90d440e1f9ece1", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faa134129e5545ff", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "2766e829334747c5", "scanner": "scanner-primary", "fingerprint": "faa134129e5545ff", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 7}}}]}, {"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-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-c234509587098f76", "level": "note", "message": {"text": "Very large file: frontend/app/validation/page.tsx (1500 lines)"}, "properties": {"repobilityId": "a29adaf81e0683c2", "scanner": "scanner-primary", "fingerprint": "c234509587098f76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-197b25a22f256450", "level": "note", "message": {"text": "Very large file: app/services/validation_replay_service.py (1715 lines)"}, "properties": {"repobilityId": "7a9570cd2e1523b3", "scanner": "scanner-primary", "fingerprint": "197b25a22f256450", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-38cf19f1e142735e", "level": "note", "message": {"text": "Very large file: app/services/veto_tuning_service.py (1196 lines)"}, "properties": {"repobilityId": "8a6a18e8c488a5fc", "scanner": "scanner-primary", "fingerprint": "38cf19f1e142735e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-feeb6ad9868fc092", "level": "note", "message": {"text": "Very large file: app/services/calibration_service.py (1373 lines)"}, "properties": {"repobilityId": "dc32c1f61093b2fd", "scanner": "scanner-primary", "fingerprint": "feeb6ad9868fc092", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f3ef024c1e87553a", "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": "f815129525845004", "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": "eb8761d1bfd4ff1c", "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": "810fc0801b257945", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "de2875ea86006ebf", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "2a2e9292aa22c8b5", "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": "2c7ac27750a85620", "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": "2ffc7883525d614d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2679282aa1c484b5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: AGENTS.md"}, "properties": {"repobilityId": "27d579812e6be614", "scanner": "scanner-primary", "fingerprint": "2679282aa1c484b5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "agents_md"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "AGENTS.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a622e71c0d4c5807", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/types/reviewWorkbench.ts:98"}, "properties": {"repobilityId": "230b507c6a751a45", "scanner": "scanner-primary", "fingerprint": "a622e71c0d4c5807", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05e9de4eb7fe50e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/HeSoPanel.tsx:61"}, "properties": {"repobilityId": "e0bddb1b3e825508", "scanner": "scanner-primary", "fingerprint": "05e9de4eb7fe50e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf13ca1b592f37f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/ShareholderAnchorPanel.tsx:5"}, "properties": {"repobilityId": "192699831bb2127d", "scanner": "scanner-primary", "fingerprint": "bf13ca1b592f37f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c1b0bbf92f693fc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ShareholderAnchorPanel.tsx:69"}, "properties": {"repobilityId": "8412f6e0405a36cb", "scanner": "scanner-primary", "fingerprint": "2c1b0bbf92f693fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c11d99d8718f20f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/PlacedVolumePanel.tsx:5"}, "properties": {"repobilityId": "b4fa429e7855744e", "scanner": "scanner-primary", "fingerprint": "c11d99d8718f20f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55baf1eb40d11070", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/PlacedVolumePanel.tsx:54"}, "properties": {"repobilityId": "b2096dcc56025481", "scanner": "scanner-primary", "fingerprint": "55baf1eb40d11070", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7f35de39b75c95d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/SectorRotationCard.tsx:5"}, "properties": {"repobilityId": "fffaabc568900f91", "scanner": "scanner-primary", "fingerprint": "c7f35de39b75c95d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75690d9f9580c029", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SectorRotationCard.tsx:56"}, "properties": {"repobilityId": "28c4a5575d999645", "scanner": "scanner-primary", "fingerprint": "75690d9f9580c029", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8b497bd2df47d0ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/components/BctcCtckPanel.tsx:5"}, "properties": {"repobilityId": "8072a0e63ae54d03", "scanner": "scanner-primary", "fingerprint": "8b497bd2df47d0ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd4f61ee1109a7c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/BctcCtckPanel.tsx:53"}, "properties": {"repobilityId": "c56b4de2d48c32c2", "scanner": "scanner-primary", "fingerprint": "fd4f61ee1109a7c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c11421c8e5379453", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/components/SubjectInferencePanel.tsx:5"}, "properties": {"repobilityId": "1a5d2554b8a71534", "scanner": "scanner-primary", "fingerprint": "c11421c8e5379453", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebb088eefb7fde63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/SubjectInferencePanel.tsx:66"}, "properties": {"repobilityId": "8e1a183bdec2d630", "scanner": "scanner-primary", "fingerprint": "ebb088eefb7fde63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d09204cd90b22e45", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/ownership/[ticker]/page.tsx:188"}, "properties": {"repobilityId": "bb4d20a4dc61cf09", "scanner": "scanner-primary", "fingerprint": "d09204cd90b22e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2252c152081e0429", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/ClusterProgress.tsx:42"}, "properties": {"repobilityId": "d27936c3be02e957", "scanner": "scanner-primary", "fingerprint": "2252c152081e0429", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9db3b8178d52ac43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/stock/[ticker]/page.tsx:242"}, "properties": {"repobilityId": "25b658582f925f7d", "scanner": "scanner-primary", "fingerprint": "9db3b8178d52ac43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c25a46976545796", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/watchlist/page.tsx:50"}, "properties": {"repobilityId": "07f99c5d9ef88543", "scanner": "scanner-primary", "fingerprint": "6c25a46976545796", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9776cad2a77655be", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_position_history_column_guard.py:69"}, "properties": {"repobilityId": "af3705d28db648ec", "scanner": "scanner-primary", "fingerprint": "9776cad2a77655be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-494aef6db84c721b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_operator_efficiency.py:455"}, "properties": {"repobilityId": "71ae6812af8cf4f2", "scanner": "scanner-primary", "fingerprint": "494aef6db84c721b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6459aaa5a44f71f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_review_workbench.py:553"}, "properties": {"repobilityId": "a83e2c56969458f0", "scanner": "scanner-primary", "fingerprint": "6459aaa5a44f71f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c2d3e136914652f", "level": "note", "message": {"text": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_cluster_volume_service.py:478"}, "properties": {"repobilityId": "1e15623f3be55769", "scanner": "scanner-primary", "fingerprint": "6c2d3e136914652f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e083d22be9979d4d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_cluster_volume_service.py:243"}, "properties": {"repobilityId": "4ea44586aa3b5ec4", "scanner": "scanner-primary", "fingerprint": "e083d22be9979d4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a38d6820c047eb9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_veto_tuning_service.py:632"}, "properties": {"repobilityId": "ca4c456685af134d", "scanner": "scanner-primary", "fingerprint": "a38d6820c047eb9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8611d2207bbb1e1", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/test_veto_tuning_domain.py:226"}, "properties": {"repobilityId": "8a768432f0f5bafd", "scanner": "scanner-primary", "fingerprint": "d8611d2207bbb1e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43f1ffea95140311", "level": "note", "message": {"text": "Legacy-named symbol `test_api_has_503_and_404_copy` in tests/unit/test_order_rate_service.py:464"}, "properties": {"repobilityId": "eab7896636aa23e7", "scanner": "scanner-primary", "fingerprint": "43f1ffea95140311", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1f9e6b53c5e015dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_daily_ohlcv_column_guard.py:72"}, "properties": {"repobilityId": "4171aeb48f44ea86", "scanner": "scanner-primary", "fingerprint": "1f9e6b53c5e015dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b0789302609d007", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/test_validation_replay_service.py:228"}, "properties": {"repobilityId": "ce672a65d45ebf62", "scanner": "scanner-primary", "fingerprint": "6b0789302609d007", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1baf1dfc879b32d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/config.py:375"}, "properties": {"repobilityId": "aec158d655e18294", "scanner": "scanner-primary", "fingerprint": "1baf1dfc879b32d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55560121306efee7", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/scheduler.py:671"}, "properties": {"repobilityId": "e5aa0eabae46e20a", "scanner": "scanner-primary", "fingerprint": "55560121306efee7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-489646cb36bcc9cc", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/main.py:261"}, "properties": {"repobilityId": "6dcc9c222c9ac765", "scanner": "scanner-primary", "fingerprint": "489646cb36bcc9cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e90f8d2226595a13", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 app/main.py:27"}, "properties": {"repobilityId": "6b00ec58fd222dfd", "scanner": "scanner-primary", "fingerprint": "e90f8d2226595a13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83e5e31b9c18b2bb", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/adapters/subject_flow_source.py:133"}, "properties": {"repobilityId": "345e4d8bbd7e486c", "scanner": "scanner-primary", "fingerprint": "83e5e31b9c18b2bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f64a599eb8ddf6ef", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/utils/trading_hours.py:26"}, "properties": {"repobilityId": "a2d218b46335c941", "scanner": "scanner-primary", "fingerprint": "f64a599eb8ddf6ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d944094805e8d8d", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/services/deception_service.py:271"}, "properties": {"repobilityId": "56974a8b1873ffdc", "scanner": "scanner-primary", "fingerprint": "7d944094805e8d8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf547415e5e5a6bf", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/services/validation_replay_service.py:684"}, "properties": {"repobilityId": "b0adbc7c0e552d8d", "scanner": "scanner-primary", "fingerprint": "cf547415e5e5a6bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef006ed875aed70e", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/services/model_chan_cau_service.py:491"}, "properties": {"repobilityId": "0af485d745fe387a", "scanner": "scanner-primary", "fingerprint": "ef006ed875aed70e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-080a288f59208cae", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/model_mu_sat_canh_buom_service.py:316"}, "properties": {"repobilityId": "a9b3dc408add33c4", "scanner": "scanner-primary", "fingerprint": "080a288f59208cae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f078d86c3ac43f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/backtest_harness_service.py:136"}, "properties": {"repobilityId": "689ed59ec67dbfcb", "scanner": "scanner-primary", "fingerprint": "5f078d86c3ac43f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dee3ac025829c731", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/veto_tuning_service.py:418"}, "properties": {"repobilityId": "166dc135170b5234", "scanner": "scanner-primary", "fingerprint": "dee3ac025829c731", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-870410032c4d130e", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/calibration_service.py:366"}, "properties": {"repobilityId": "abefbf3d8f3975dd", "scanner": "scanner-primary", "fingerprint": "870410032c4d130e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3aaa97b092c2f03", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/services/he_so_service.py:121"}, "properties": {"repobilityId": "bc370cdd3adbaa9d", "scanner": "scanner-primary", "fingerprint": "c3aaa97b092c2f03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4109bb82016bb6e9", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/services/notification.py:961"}, "properties": {"repobilityId": "ee7eb197f4f0c17d", "scanner": "scanner-primary", "fingerprint": "4109bb82016bb6e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-568cb1e1480f8df1", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/operator_efficiency_service.py:230"}, "properties": {"repobilityId": "a770c133199176e2", "scanner": "scanner-primary", "fingerprint": "568cb1e1480f8df1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-27422968f84621df", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/services/tactical_labeling_service.py:388"}, "properties": {"repobilityId": "2cb7ceb0df49ced3", "scanner": "scanner-primary", "fingerprint": "27422968f84621df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bac7098ed8cc08fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/model_ngua_dut_day_service.py:343"}, "properties": {"repobilityId": "c334e6f463b3fccc", "scanner": "scanner-primary", "fingerprint": "bac7098ed8cc08fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc0af8f2112fc16b", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/services/stock_anatomy_service.py:468"}, "properties": {"repobilityId": "606a0399f3d1ef01", "scanner": "scanner-primary", "fingerprint": "cc0af8f2112fc16b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-775e80e785c7d95f", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/services/model_z_service.py:342"}, "properties": {"repobilityId": "deed1db4a1403de3", "scanner": "scanner-primary", "fingerprint": "775e80e785c7d95f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3892c9a3a0f74a93", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/model_mu_sat_canh_buom.py:65"}, "properties": {"repobilityId": "6551a9b9aabed7e6", "scanner": "scanner-primary", "fingerprint": "3892c9a3a0f74a93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fe59695a5089d8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/order_rate.py:38"}, "properties": {"repobilityId": "61d849a14ce5d375", "scanner": "scanner-primary", "fingerprint": "3fe59695a5089d8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3784189066cf6fa4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/review_priority.py:253"}, "properties": {"repobilityId": "c149b96538e73bc8", "scanner": "scanner-primary", "fingerprint": "3784189066cf6fa4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e84239fe54f160f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/cluster_volume.py:47"}, "properties": {"repobilityId": "fda2b782c32d6fd6", "scanner": "scanner-primary", "fingerprint": "e84239fe54f160f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-325d8d13152c09f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/model_dien_ho.py:234"}, "properties": {"repobilityId": "2bb4aeaaa56fa74e", "scanner": "scanner-primary", "fingerprint": "325d8d13152c09f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91915c4101342f7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/divergence.py:230"}, "properties": {"repobilityId": "94e78656f41c05aa", "scanner": "scanner-primary", "fingerprint": "91915c4101342f7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce335c2cca8cd4a2", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/domain/backtest.py:757"}, "properties": {"repobilityId": "b0ac31e82c94828a", "scanner": "scanner-primary", "fingerprint": "ce335c2cca8cd4a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-010c19513262e385", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/bridge_foot.py:23"}, "properties": {"repobilityId": "feeebad1c5bdaa50", "scanner": "scanner-primary", "fingerprint": "010c19513262e385", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35d0c7ff7855e9e6", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/domain/candle_classifier.py:741"}, "properties": {"repobilityId": "d36c20eea0e61cf1", "scanner": "scanner-primary", "fingerprint": "35d0c7ff7855e9e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4edb65f33d2555c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/veto_tuning.py:57"}, "properties": {"repobilityId": "7c7a58b8e01d123b", "scanner": "scanner-primary", "fingerprint": "f4edb65f33d2555c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7103c5673ff358fe", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/domain/portfolio_constraints.py:362"}, "properties": {"repobilityId": "ad7ad811defd2f3b", "scanner": "scanner-primary", "fingerprint": "7103c5673ff358fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e29bf2b5c9c70836", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/domain/regime.py:325"}, "properties": {"repobilityId": "228c5083d863dbe8", "scanner": "scanner-primary", "fingerprint": "e29bf2b5c9c70836", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58ae6ffd055fbdcd", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/domain/anatomy.py:79"}, "properties": {"repobilityId": "0fae0019021e0499", "scanner": "scanner-primary", "fingerprint": "58ae6ffd055fbdcd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7411ac197178286", "level": "none", "message": {"text": "Commented-code block (5 lines) in alembic/versions/031_subject_inference.py:51"}, "properties": {"repobilityId": "61501e7367ea7e19", "scanner": "scanner-primary", "fingerprint": "a7411ac197178286", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5898f50700217818", "level": "none", "message": {"text": "Commented-code block (6 lines) in alembic/versions/026_operator_efficiency.py:40"}, "properties": {"repobilityId": "334e32aeb8ca1ee8", "scanner": "scanner-primary", "fingerprint": "5898f50700217818", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7c52fc1ac313695", "level": "none", "message": {"text": "Commented-code block (6 lines) in alembic/versions/010_ownership_radar_phase1a.py:135"}, "properties": {"repobilityId": "7772c1175c010b45", "scanner": "scanner-primary", "fingerprint": "c7c52fc1ac313695", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da75622f9f3dc527", "level": "none", "message": {"text": "Commented-code block (7 lines) in alembic/versions/037_divergence_radar.py:40"}, "properties": {"repobilityId": "73df9fc7854daaf5", "scanner": "scanner-primary", "fingerprint": "da75622f9f3dc527", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cc628fcab746182", "level": "none", "message": {"text": "Commented-code block (5 lines) in alembic/versions/025_review_workbench.py:130"}, "properties": {"repobilityId": "5d1fe68c879958e1", "scanner": "scanner-primary", "fingerprint": "5cc628fcab746182", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-319e66a630e14977", "level": "none", "message": {"text": "2 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d838d1fc5d8231c9", "scanner": "scanner-primary", "fingerprint": "319e66a630e14977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "345e46e6b0a1ca51", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "45340014983d22fc", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "6f7b2b91b2cfa1ef", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "72640c60c021d7ff", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "833fd54f89636499", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "7c592e726f65b69b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "ead51dd6734abc92", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "4235477311066a9c", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "4e328564dd9fe5e3", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "daadd487e7af9caa", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "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": "5d5b9589849239df", "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": "79f6fb1a1c288192", "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": "5c94670a4e21e526", "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": "bc0479aa6f5d4849", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-524adab0afa061a9", "level": "note", "message": {"text": "Near-duplicate function bodies in 31 places"}, "properties": {"repobilityId": "b630eb86b45326c3", "scanner": "scanner-primary", "fingerprint": "524adab0afa061a9", "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": "db6fc23f88182132", "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": "f3840a2661e97e2d", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "6bb78f50f7c75a1e", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "5aa9f424b595ce51", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "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": "258c5fc08e138a18", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-c3c68e0a5d508ecd", "level": "error", "message": {"text": "FastAPI POST `post_decision` without auth dependency \u2014 app/api/review_workbench.py:110"}, "properties": {"repobilityId": "97cdf079ebcf803b", "scanner": "scanner-primary", "fingerprint": "c3c68e0a5d508ecd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/review_workbench.py"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-ad38733f787aa7c5", "level": "error", "message": {"text": "FastAPI POST `post_ai_note` without auth dependency \u2014 app/api/review_workbench.py:131"}, "properties": {"repobilityId": "79e3b5f1bee10229", "scanner": "scanner-primary", "fingerprint": "ad38733f787aa7c5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/review_workbench.py"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-f63ad37e21b32233", "level": "error", "message": {"text": "FastAPI POST `post_escalate` without auth dependency \u2014 app/api/review_workbench.py:150"}, "properties": {"repobilityId": "304c9e5e758f0780", "scanner": "scanner-primary", "fingerprint": "f63ad37e21b32233", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/review_workbench.py"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-6d50fc7f0ddfa5c6", "level": "error", "message": {"text": "FastAPI POST `post_case_from_tactical` without auth dependency \u2014 app/api/review_workbench.py:163"}, "properties": {"repobilityId": "2dfed61eefb27e2d", "scanner": "scanner-primary", "fingerprint": "6d50fc7f0ddfa5c6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/review_workbench.py"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-80f1b4648e4b8d11", "level": "error", "message": {"text": "FastAPI POST `post_case_from_nav_risk` without auth dependency \u2014 app/api/review_workbench.py:172"}, "properties": {"repobilityId": "e84fb88bfe30470e", "scanner": "scanner-primary", "fingerprint": "80f1b4648e4b8d11", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/review_workbench.py"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-22057859eb6e16ca", "level": "error", "message": {"text": "FastAPI PATCH `update_ticker_m3_settings` without auth dependency \u2014 app/api/watchlist.py:71"}, "properties": {"repobilityId": "49b3784bca6135f6", "scanner": "scanner-primary", "fingerprint": "22057859eb6e16ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/watchlist.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-2b5245c67948b674", "level": "error", "message": {"text": "FastAPI POST `evaluate_now` without auth dependency \u2014 app/api/nav_risk.py:92"}, "properties": {"repobilityId": "2cb96a586e575ced", "scanner": "scanner-primary", "fingerprint": "2b5245c67948b674", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/nav_risk.py"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-55ed1501bf19f9b0", "level": "error", "message": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/backtest.py:52"}, "properties": {"repobilityId": "52fac3757853f880", "scanner": "scanner-primary", "fingerprint": "55ed1501bf19f9b0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/backtest.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-cbad1878465c7fdb", "level": "error", "message": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/veto_tuning.py:60"}, "properties": {"repobilityId": "d2bb6566afb0c4f1", "scanner": "scanner-primary", "fingerprint": "cbad1878465c7fdb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/veto_tuning.py"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-b455a81c7961b405", "level": "error", "message": {"text": "FastAPI POST `create_run` without auth dependency \u2014 app/api/validation_replay.py:48"}, "properties": {"repobilityId": "a1a3c3b787f75b80", "scanner": "scanner-primary", "fingerprint": "b455a81c7961b405", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/validation_replay.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-e5e25645dea25253", "level": "error", "message": {"text": "FastAPI PUT `update_thresholds` without auth dependency \u2014 app/api/settings.py:81"}, "properties": {"repobilityId": "340c6e86077f9a8c", "scanner": "scanner-primary", "fingerprint": "e5e25645dea25253", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/settings.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-0b7a05fbc6c46443", "level": "error", "message": {"text": "FastAPI POST `create_position` without auth dependency \u2014 app/api/portfolio.py:112"}, "properties": {"repobilityId": "c6376fb71a0aec71", "scanner": "scanner-primary", "fingerprint": "0b7a05fbc6c46443", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/portfolio.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-a18e925c57bab45b", "level": "error", "message": {"text": "FastAPI PATCH `patch_position` without auth dependency \u2014 app/api/portfolio.py:133"}, "properties": {"repobilityId": "7e6eb4dd0cf3aa4c", "scanner": "scanner-primary", "fingerprint": "a18e925c57bab45b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/portfolio.py"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-e5fdfecb596c9580", "level": "error", "message": {"text": "FastAPI DELETE `close_position` without auth dependency \u2014 app/api/portfolio.py:154"}, "properties": {"repobilityId": "292ff4554b389b47", "scanner": "scanner-primary", "fingerprint": "e5fdfecb596c9580", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/portfolio.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-d0fb5a12f9a0135f", "level": "error", "message": {"text": "FastAPI PATCH `patch_cash` without auth dependency \u2014 app/api/portfolio.py:166"}, "properties": {"repobilityId": "b477ee96f00b8741", "scanner": "scanner-primary", "fingerprint": "d0fb5a12f9a0135f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/portfolio.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-2cc51eca9fd711d0", "level": "error", "message": {"text": "FastAPI POST `set_nav_baseline` without auth dependency \u2014 app/api/portfolio.py:182"}, "properties": {"repobilityId": "4ea78d0593b54475", "scanner": "scanner-primary", "fingerprint": "2cc51eca9fd711d0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/api/portfolio.py"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-c897a9f6bb867b4f", "level": "error", "message": {"text": "Dangling fetch: GET /api/bctc-ctck${qs} (frontend/components/BctcCtckPanel.tsx:53)"}, "properties": {"repobilityId": "52971a79605467b5", "scanner": "scanner-primary", "fingerprint": "c897a9f6bb867b4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a436691337284d03", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/health"}, "properties": {"repobilityId": "cdfed82e71d1fb0a", "scanner": "scanner-primary", "fingerprint": "a436691337284d03", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "d8721f71fae1e2af", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8774fb080448ede9", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/notifications/review"}, "properties": {"repobilityId": "97acf1635782af50", "scanner": "scanner-primary", "fingerprint": "8774fb080448ede9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4794dfb32536c54b", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/notifications/mutes"}, "properties": {"repobilityId": "3dbbbdb47d541fdd", "scanner": "scanner-primary", "fingerprint": "4794dfb32536c54b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5587e929d66bc55", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/notifications/mutes"}, "properties": {"repobilityId": "0137018294e77ed1", "scanner": "scanner-primary", "fingerprint": "a5587e929d66bc55", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd10a5f017807c38", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/notifications/mutes/{ticker}/{channel}"}, "properties": {"repobilityId": "d21bf30bad2cb39b", "scanner": "scanner-primary", "fingerprint": "bd10a5f017807c38", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e95f50cad52d7289", "level": "note", "message": {"text": "Unused endpoint: POST /api/he-so/scan"}, "properties": {"repobilityId": "58b04e1dfbd38edb", "scanner": "scanner-primary", "fingerprint": "e95f50cad52d7289", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6b29565c9511e783", "level": "note", "message": {"text": "Unused endpoint: GET /order-rate/watchlist"}, "properties": {"repobilityId": "c4a4c9d71ad549b4", "scanner": "scanner-primary", "fingerprint": "6b29565c9511e783", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6af3bf87bf0795c", "level": "note", "message": {"text": "Unused endpoint: GET /order-rate/{ticker}/series"}, "properties": {"repobilityId": "d35ad8724fd54a49", "scanner": "scanner-primary", "fingerprint": "c6af3bf87bf0795c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b5557fe010b9ce2", "level": "note", "message": {"text": "Unused endpoint: GET /order-rate/{ticker}"}, "properties": {"repobilityId": "89328e5f3a2ef6ec", "scanner": "scanner-primary", "fingerprint": "5b5557fe010b9ce2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52cb1887250e7eb2", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/cycles/candidates"}, "properties": {"repobilityId": "a8963e07cbb38551", "scanner": "scanner-primary", "fingerprint": "52cb1887250e7eb2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8907e4cffe3799b0", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/cycles"}, "properties": {"repobilityId": "2f8ceaf8035e75cc", "scanner": "scanner-primary", "fingerprint": "8907e4cffe3799b0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-222a5e3d5f107339", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/cycles/{cycle_id}"}, "properties": {"repobilityId": "7898dee67c4a052f", "scanner": "scanner-primary", "fingerprint": "222a5e3d5f107339", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ad7fb3966d0e94b6", "level": "note", "message": {"text": "Unused endpoint: GET /cases"}, "properties": {"repobilityId": "e55397cc87ebc9da", "scanner": "scanner-primary", "fingerprint": "ad7fb3966d0e94b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c92dfeb7d445cda", "level": "note", "message": {"text": "Unused endpoint: GET /queue"}, "properties": {"repobilityId": "27023166aa13521f", "scanner": "scanner-primary", "fingerprint": "2c92dfeb7d445cda", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7c5db0a7627e4e06", "level": "note", "message": {"text": "Unused endpoint: GET /cases/{case_id}"}, "properties": {"repobilityId": "9d54f9b4cc63fab6", "scanner": "scanner-primary", "fingerprint": "7c5db0a7627e4e06", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50772cd6774119ba", "level": "note", "message": {"text": "Unused endpoint: GET /audit/{case_id}"}, "properties": {"repobilityId": "6f9c99d8092141d8", "scanner": "scanner-primary", "fingerprint": "50772cd6774119ba", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63f25013d8e2a7fa", "level": "note", "message": {"text": "Unused endpoint: POST /cases/{case_id}/decision"}, "properties": {"repobilityId": "ca985e63ac00f705", "scanner": "scanner-primary", "fingerprint": "63f25013d8e2a7fa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2da3df762af6403e", "level": "note", "message": {"text": "Unused endpoint: POST /cases/{case_id}/ai-note"}, "properties": {"repobilityId": "8ee1f31b23846cba", "scanner": "scanner-primary", "fingerprint": "2da3df762af6403e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1a47bf45383d5b1a", "level": "note", "message": {"text": "Unused endpoint: POST /cases/{case_id}/escalate"}, "properties": {"repobilityId": "31ec5f88202c0cf0", "scanner": "scanner-primary", "fingerprint": "1a47bf45383d5b1a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8a89db8d3690653", "level": "note", "message": {"text": "Unused endpoint: POST /cases/from-tactical/{candidate_id}"}, "properties": {"repobilityId": "83fd1eb1a019f33d", "scanner": "scanner-primary", "fingerprint": "b8a89db8d3690653", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b3c0728905f74113", "level": "note", "message": {"text": "Unused endpoint: POST /cases/from-nav-risk/{recommendation_id}"}, "properties": {"repobilityId": "4f58731f3071f160", "scanner": "scanner-primary", "fingerprint": "b3c0728905f74113", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf5fa2d4e891e509", "level": "note", "message": {"text": "Unused endpoint: GET /{ticker}"}, "properties": {"repobilityId": "745c96770dfff40e", "scanner": "scanner-primary", "fingerprint": "bf5fa2d4e891e509", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e15e015116e87f81", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/stream/alerts"}, "properties": {"repobilityId": "3fef208d10043550", "scanner": "scanner-primary", "fingerprint": "e15e015116e87f81", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "828697ff15042078", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bad01ac2222e29f1", "level": "note", "message": {"text": "Unused endpoint: GET /{run_id}"}, "properties": {"repobilityId": "6f4910f1e40ba72e", "scanner": "scanner-primary", "fingerprint": "bad01ac2222e29f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-538b03a9b9672696", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/ownership/snapshots"}, "properties": {"repobilityId": "360ac644608ee91a", "scanner": "scanner-primary", "fingerprint": "538b03a9b9672696", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afe7a09b729decac", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/ownership/snapshots/{ticker}"}, "properties": {"repobilityId": "19dd953802c98195", "scanner": "scanner-primary", "fingerprint": "afe7a09b729decac", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7f4d6c1fb64c1638", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/ownership/proxy-scan"}, "properties": {"repobilityId": "b8302e1d89f6902a", "scanner": "scanner-primary", "fingerprint": "7f4d6c1fb64c1638", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c65740edb74a195d", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/ownership/review/export.csv"}, "properties": {"repobilityId": "8bc25dff058fc4b8", "scanner": "scanner-primary", "fingerprint": "c65740edb74a195d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d41aef6700f89f63", "level": "note", "message": {"text": "Unused endpoint: GET /cluster/{ticker}/history"}, "properties": {"repobilityId": "ab468a0867ba0bf7", "scanner": "scanner-primary", "fingerprint": "d41aef6700f89f63", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-44dbd1695cb20ea7", "level": "note", "message": {"text": "Unused endpoint: GET /cluster/{ticker}/progress"}, "properties": {"repobilityId": "d45c263f810ad0c8", "scanner": "scanner-primary", "fingerprint": "44dbd1695cb20ea7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e43f1f0b287c7e8c", "level": "note", "message": {"text": "Unused endpoint: GET /hs1-hs2/history"}, "properties": {"repobilityId": "609d619b299adaa4", "scanner": "scanner-primary", "fingerprint": "e43f1f0b287c7e8c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b12c024027602b9", "level": "note", "message": {"text": "Unused endpoint: PATCH /{ticker}/m3"}, "properties": {"repobilityId": "961cd9a04930458d", "scanner": "scanner-primary", "fingerprint": "5b12c024027602b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cd649139794bcb23", "level": "note", "message": {"text": "Unused endpoint: GET /{ticker}/summary"}, "properties": {"repobilityId": "e6ebd5a063f03b03", "scanner": "scanner-primary", "fingerprint": "cd649139794bcb23", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-026cec4dd2685a88", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/admin/scan-history"}, "properties": {"repobilityId": "5e7d5f68f5f06cea", "scanner": "scanner-primary", "fingerprint": "026cec4dd2685a88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7438f4c9b48ba28c", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/admin/scan-m1-history"}, "properties": {"repobilityId": "66564124e54358f8", "scanner": "scanner-primary", "fingerprint": "7438f4c9b48ba28c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d35933ea8980850f", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/replay-m1-history"}, "properties": {"repobilityId": "7b985ba5697b9a50", "scanner": "scanner-primary", "fingerprint": "d35933ea8980850f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b78035b2167ce2a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/replay-m3-history"}, "properties": {"repobilityId": "128423f230afa30a", "scanner": "scanner-primary", "fingerprint": "b78035b2167ce2a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b3bc1b7f73217ef9", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/admin/replay-runs"}, "properties": {"repobilityId": "6522b15ac336cf47", "scanner": "scanner-primary", "fingerprint": "b3bc1b7f73217ef9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3227a41cdd9fc80", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/admin/replay-runs/{run_id}"}, "properties": {"repobilityId": "ce35a721e24b0b4d", "scanner": "scanner-primary", "fingerprint": "e3227a41cdd9fc80", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8ccd9e090f0784ca", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/cleanup-stuck-runs"}, "properties": {"repobilityId": "874c64b9ee602382", "scanner": "scanner-primary", "fingerprint": "8ccd9e090f0784ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7bb3a0c383473332", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/sync-watchlist"}, "properties": {"repobilityId": "ec37334bc9d3024b", "scanner": "scanner-primary", "fingerprint": "7bb3a0c383473332", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b99f0018e7073351", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/backfill-daily"}, "properties": {"repobilityId": "aabe788a05f9e177", "scanner": "scanner-primary", "fingerprint": "b99f0018e7073351", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2339d7f7d44f8b04", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/admin/backfill-intraday"}, "properties": {"repobilityId": "9eff6b14c7562d2c", "scanner": "scanner-primary", "fingerprint": "2339d7f7d44f8b04", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afc064028ae39ea9", "level": "note", "message": {"text": "Unused endpoint: GET /history"}, "properties": {"repobilityId": "2a887eb48cdadbe7", "scanner": "scanner-primary", "fingerprint": "afc064028ae39ea9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-95f235fd6ce6304d", "level": "note", "message": {"text": "Unused endpoint: POST /evaluate"}, "properties": {"repobilityId": "04a716a18df23f32", "scanner": "scanner-primary", "fingerprint": "95f235fd6ce6304d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bdd400c72cd771e9", "level": "note", "message": {"text": "Unused endpoint: GET /api/divergence/scan"}, "properties": {"repobilityId": "c303c0adeae6cf2a", "scanner": "scanner-primary", "fingerprint": "bdd400c72cd771e9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-28523cc93436b673", "level": "note", "message": {"text": "Unused endpoint: GET /api/divergence/sectors"}, "properties": {"repobilityId": "67d0930c35af963a", "scanner": "scanner-primary", "fingerprint": "28523cc93436b673", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bafcad85e018c02b", "level": "note", "message": {"text": "Unused endpoint: GET /api/calibration/runs"}, "properties": {"repobilityId": "72348fe4a2daf0e0", "scanner": "scanner-primary", "fingerprint": "bafcad85e018c02b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}