{"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-8bba0733d73b1c49", "name": "Possibly dead Python function: is_in_trading_hours", "shortDescription": {"text": "Possibly dead Python function: is_in_trading_hours"}, "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-18156562f03f6cc6", "name": "Possibly dead Python function: minutes_into_session", "shortDescription": {"text": "Possibly dead Python function: minutes_into_session"}, "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-e8ae045df5604944", "name": "Possibly dead Python function: next_session_open", "shortDescription": {"text": "Possibly dead Python function: next_session_open"}, "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-27f2b9fd4aaeff5e", "name": "Possibly dead Python function: setup_logging", "shortDescription": {"text": "Possibly dead Python function: setup_logging"}, "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-091da72372ecf1c4", "name": "Possibly dead Python function: stream", "shortDescription": {"text": "Possibly dead Python function: stream"}, "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-b4491facaec698df", "name": "Possibly dead Python function: recent_df", "shortDescription": {"text": "Possibly dead Python function: recent_df"}, "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-bb971f2bf7de7250", "name": "Possibly dead Python function: session_df", "shortDescription": {"text": "Possibly dead Python function: session_df"}, "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-841dd3ac4210f0c7", "name": "Possibly dead Python function: enqueue", "shortDescription": {"text": "Possibly dead Python function: enqueue"}, "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-a7ca0ae0da90b83d", "name": "Possibly dead Python function: init_pool", "shortDescription": {"text": "Possibly dead Python function: init_pool"}, "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-0c5b43e80348064c", "name": "Possibly dead Python function: close_pool", "shortDescription": {"text": "Possibly dead Python function: close_pool"}, "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-dbf213757c83fd02", "name": "Possibly dead Python function: insert_tick", "shortDescription": {"text": "Possibly dead Python function: insert_tick"}, "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-8e11da3f7b58622e", "name": "Possibly dead Python function: recent_ticks", "shortDescription": {"text": "Possibly dead Python function: recent_ticks"}, "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-31bdffc16c618361", "name": "Possibly dead Python function: session_ticks", "shortDescription": {"text": "Possibly dead Python function: session_ticks"}, "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-7c8b920b400c1737", "name": "Possibly dead Python function: insert_order", "shortDescription": {"text": "Possibly dead Python function: insert_order"}, "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-6dcccb067076fecd", "name": "Possibly dead Python function: insert_position", "shortDescription": {"text": "Possibly dead Python function: insert_position"}, "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-7d13957d2baf4de4", "name": "Possibly dead Python function: close_position", "shortDescription": {"text": "Possibly dead Python function: close_position"}, "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-f94e8b47854005ac", "name": "Possibly dead Python function: upsert_daily_pnl", "shortDescription": {"text": "Possibly dead Python function: upsert_daily_pnl"}, "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-3aa346bfb7aa4ab3", "name": "Possibly dead Python function: insert_run", "shortDescription": {"text": "Possibly dead Python function: insert_run"}, "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-471a3300d84b13c1", "name": "Possibly dead Python function: compute_mp_state", "shortDescription": {"text": "Possibly dead Python function: compute_mp_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-095f874add713147", "name": "Possibly dead Python function: compute_session_mp", "shortDescription": {"text": "Possibly dead Python function: compute_session_mp"}, "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-25bd607fba36ec58", "name": "Possibly dead Python function: serve_layout", "shortDescription": {"text": "Possibly dead Python function: serve_layout"}, "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-5ca28cba5acaad7a", "name": "Possibly dead Python function: fit_isotonic", "shortDescription": {"text": "Possibly dead Python function: fit_isotonic"}, "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-d18907db52904c05", "name": "Possibly dead Python function: brier_skill", "shortDescription": {"text": "Possibly dead Python function: brier_skill"}, "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-7a719a8206f57aa0", "name": "Possibly dead Python function: load_calibrator", "shortDescription": {"text": "Possibly dead Python function: load_calibrator"}, "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-9ec6d8102b7f3ead", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/Sidebar.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/Sidebar.tsx:158"}, "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-9a3204c450f7fea2", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/gann-tp-delta/GannTPDeltaWorkspace.tsx:322", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/gann-tp-delta/GannTPDeltaWorkspace.tsx:322"}, "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-c7da233c64baae92", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/strategy/desk-helpers.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/strategy/desk-helpers.tsx:225"}, "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-04a6f08cff4a08ba", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fractal-market-profile/FractalMarketProfile", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fractal-market-profile/FractalMarketProfileWorkspace.tsx:1302"}, "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-3b8853d0fc66fe19", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/orderflow/OrderflowWorkbench.tsx:340", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/orderflow/OrderflowWorkbench.tsx:340"}, "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-79f4b3cf7959e4a7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx:251"}, "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-d503643e771a38eb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/system/SystemHealthBoard.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/system/SystemHealthBoard.tsx:122"}, "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-292c5805b603efbe", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceWor", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceWorkspace.tsx:1214"}, "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-b0c2fe5a9597ff5b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceOpe", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceOperatorView.tsx:975"}, "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-cc535345846cd72c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/macro-research/MacroResearchWorkspace.tsx:6", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/macro-research/MacroResearchWorkspace.tsx:617"}, "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-0516e3d0099a7358", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/settings/page.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/settings/page.tsx:79"}, "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-93c868812b8898a5", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/commodity/live/page.tsx:895", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/commodity/live/page.tsx:895"}, "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-d90da184aec5826e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/analysis/page.tsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/analysis/page.tsx:283"}, "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-7d210d0f6df79cd3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/market/page.tsx:523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/market/page.tsx:523"}, "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-df78b816fd0dbe79", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/settings/SettingsPanel.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/settings/SettingsPanel.tsx:178"}, "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-0f63be4dcdab9d6a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/layout/Sidebar.tsx:227", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/layout/Sidebar.tsx:227"}, "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-a31a14ed22255daa", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-gann-tp-delta/GannTPDeltaWorkspace.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-gann-tp-delta/GannTPDeltaWorkspace.tsx:322"}, "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-ad6d234928e92aef", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-macro-research/MacroResearchWorkspace", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-macro-research/MacroResearchWorkspace.tsx:617"}, "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-c0848d20c5b8e849", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/agent/AgentMonitor.tsx:524", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/agent/AgentMonitor.tsx:524"}, "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-8a3a7becb1c56105", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx:340", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx:340"}, "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-8e1de86ed80f2558", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboa", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboard.tsx:251"}, "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-3b0664de1231d301", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-strategy/desk-helpers.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-strategy/desk-helpers.tsx:225"}, "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-86861bc280d4cdf0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-fractal-market-profile/FractalMarketP", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-fractal-market-profile/FractalMarketProfileWorkspace.tsx:1264"}, "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-0cc0549252b17dd1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/ServiceHealthBoard.tsx:140", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/ServiceHealthBoard.tsx:140"}, "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-eb3b94de661f5b2b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/UpstoxBudgetCard.tsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/UpstoxBudgetCard.tsx:261"}, "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-4f3a56484778ed38", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-layout/Sidebar.tsx:156", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-layout/Sidebar.tsx:156"}, "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-0630dab5238d5473", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-system/SystemHealthBoard.tsx:122", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-system/SystemHealthBoard.tsx:122"}, "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-4ff637012e9c3f13", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/sector/SectorDesk.tsx:450", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/sector/SectorDesk.tsx:450"}, "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-3d647c93eb4b7aa1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/overview/LaneSummaryCard.tsx:", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/overview/LaneSummaryCard.tsx:90"}, "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-88f37bef8de88ecf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/research-monitor/ResearchMonitorBoard.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/research-monitor/ResearchMonitorBoard.tsx:379"}, "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-be4b9de80d8fbfdd", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntellige", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceWorkspace.tsx:1214"}, "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-1df5049affc21656", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntellige", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceOperatorView.tsx:975"}, "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-15d81ff714deae3c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/trading/ExecutionDesk.tsx:416", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/trading/ExecutionDesk.tsx:416"}, "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-805a24be7da22cfb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend-v2/src/app/layout.tsx:21", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend-v2/src/app/layout.tsx:21"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe9289d011391f2e", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/market/page.tsx:523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/market/page.tsx:523"}, "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-b332506ae334cd8f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/strategies/commodity/live/page.tsx:891", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/strategies/commodity/live/page.tsx:891"}, "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-70c00624464c9039", "name": "Privileged port 8 in use", "shortDescription": {"text": "Privileged port 8 in use"}, "fullDescription": {"text": "Port 8 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-2317cb2abdafed43", "name": "Privileged port 50 in use", "shortDescription": {"text": "Privileged port 50 in use"}, "fullDescription": {"text": "Port 50 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-8909d6f7ee23ee69", "name": "Privileged port 9 in use", "shortDescription": {"text": "Privileged port 9 in use"}, "fullDescription": {"text": "Port 9 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-f4c5f70db6ba4b0c", "name": "Privileged port 15 in use", "shortDescription": {"text": "Privileged port 15 in use"}, "fullDescription": {"text": "Port 15 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-e6f201d217912b69", "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-b81b62f4b4b9c979", "name": "Privileged port 23 in use", "shortDescription": {"text": "Privileged port 23 in use"}, "fullDescription": {"text": "Port 23 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-fc79f95c223076c5", "name": "Privileged port 20 in use", "shortDescription": {"text": "Privileged port 20 in use"}, "fullDescription": {"text": "Port 20 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-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-03a0fc354b5f6ad9", "name": "Dockerfile runs as root: frontend-v2/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: frontend-v2/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-70c67acc3f3189b8", "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-1f66ad88286ca30a", "name": "Dockerfile runs as root: backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: backend/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-8cd20d539467d2c5", "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-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-6e3bcf67d9c408e4", "name": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/AppTokenGate.tsx:35", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/AppTokenGate.tsx:35"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd4a364dd890547d", "name": "Insecure pattern 'local_storage_auth_token' in frontend-v2/src/components/v1-auth/AppTokenGate.tsx:35", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend-v2/src/components/v1-auth/AppTokenGate.tsx:35"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c858a9a20c6b1457", "name": "Insecure pattern 'dangerous_innerhtml' in frontend-v2/src/app/layout.tsx:21", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend-v2/src/app/layout.tsx:21"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5b119e7338f41d1a", "name": "Very large file: frontend/src/components/fractal-market-profile/FractalMarketProfileWorkspace.tsx (2795 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/fractal-market-profile/FractalMarketProfileWorkspace.tsx (2795 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-905fc09cc571444d", "name": "Very large file: frontend/src/components/orderflow/OrderflowWorkbench.tsx (1194 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/orderflow/OrderflowWorkbench.tsx (1194 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-a41b9cce7f80b145", "name": "Very large file: frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx (1777 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx (1777 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-44147a39f3eb10f3", "name": "Very large file: frontend/src/components/sector-interaction/SectorInteractionWorkspace.tsx (1852 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/sector-interaction/SectorInteractionWorkspace.tsx (1852 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-296f012280671a60", "name": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 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-b7ddef252f81e230", "name": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 lines)", "shortDescription": {"text": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 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-54022dcbe68bff4d", "name": "Very large file: frontend/src/app/settings/page.tsx (1532 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/settings/page.tsx (1532 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-67c4677051ede597", "name": "Very large file: frontend/src/app/commodity/live/page.tsx (3486 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/commodity/live/page.tsx (3486 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-083168a5fccd0737", "name": "Very large file: frontend/src/app/analysis/page.tsx (1841 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/analysis/page.tsx (1841 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-6cde9d419e5a4172", "name": "Very large file: frontend/src/app/market/page.tsx (2478 lines)", "shortDescription": {"text": "Very large file: frontend/src/app/market/page.tsx (2478 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-0bf811db09559a37", "name": "Very large file: frontend-v2/src/components/settings/SettingsPanel.tsx (1685 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/settings/SettingsPanel.tsx (1685 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-b1dde4444c8d1b8b", "name": "Very large file: frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx (1194 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx (1194 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-763422a276f20b4d", "name": "Very large file: frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboard.tsx (1777 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboard.tsx (1777 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-c1d6a7a825564d73", "name": "Very large file: frontend-v2/src/components/v1-fractal-market-profile/FractalMarketProfileWorkspace.tsx (2736 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-fractal-market-profile/FractalMarketProfileWorkspace.tsx (2736 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-ff4c8670b83adbf3", "name": "Very large file: frontend-v2/src/components/research-monitor/ResearchMonitorBoard.tsx (1560 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/research-monitor/ResearchMonitorBoard.tsx (1560 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-83aef90a7832ff53", "name": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 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-a572cc6feca37feb", "name": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 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-ebc1e8781265b2e1", "name": "Very large file: frontend-v2/src/components/v1-sector-interaction/SectorInteractionWorkspace.tsx (1852 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/components/v1-sector-interaction/SectorInteractionWorkspace.tsx (1852 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-181e50798f01aa8e", "name": "Very large file: frontend-v2/src/app/market/page.tsx (2478 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/app/market/page.tsx (2478 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-d57ca387402eb738", "name": "Very large file: frontend-v2/src/app/strategies/commodity/live/page.tsx (3455 lines)", "shortDescription": {"text": "Very large file: frontend-v2/src/app/strategies/commodity/live/page.tsx (3455 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-9aeec2e225da0251", "name": "Very large file: backend/tests/test_fractal_market_profile.py (1481 lines)", "shortDescription": {"text": "Very large file: backend/tests/test_fractal_market_profile.py (1481 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-1f7c942d9fa34e87", "name": "Very large file: backend/tests/test_paper_strategy_agent.py (1612 lines)", "shortDescription": {"text": "Very large file: backend/tests/test_paper_strategy_agent.py (1612 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-7b9976b9e661fcda", "name": "Very large file: backend/tests/test_commodity_strategy_agent.py (2030 lines)", "shortDescription": {"text": "Very large file: backend/tests/test_commodity_strategy_agent.py (2030 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-5af4b2c7e04a937e", "name": "Very large file: backend/tests/test_auction_intelligence.py (3273 lines)", "shortDescription": {"text": "Very large file: backend/tests/test_auction_intelligence.py (3273 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-dd801543241fe066", "name": "Very large file: backend/api/routers/auction_intelligence.py (2787 lines)", "shortDescription": {"text": "Very large file: backend/api/routers/auction_intelligence.py (2787 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-8b70c2fce35eef61", "name": "Very large file: backend/api/routers/auth.py (2047 lines)", "shortDescription": {"text": "Very large file: backend/api/routers/auth.py (2047 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-fac535ad97a14569", "name": "Very large file: backend/api/routers/strategy.py (1308 lines)", "shortDescription": {"text": "Very large file: backend/api/routers/strategy.py (1308 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-68a191075856f00e", "name": "Very large file: backend/api/routers/market.py (1332 lines)", "shortDescription": {"text": "Very large file: backend/api/routers/market.py (1332 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-dc76856a9c230549", "name": "Very large file: backend/api/routers/analysis.py (1529 lines)", "shortDescription": {"text": "Very large file: backend/api/routers/analysis.py (1529 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-63af94a45ce00596", "name": "Very large file: backend/paper_engine/commodity_strategy_agent.py (3323 lines)", "shortDescription": {"text": "Very large file: backend/paper_engine/commodity_strategy_agent.py (3323 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-d71bf55e844ce870", "name": "Very large file: backend/paper_engine/strategy_agent_entries.py (1242 lines)", "shortDescription": {"text": "Very large file: backend/paper_engine/strategy_agent_entries.py (1242 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-3b57fd7a3b361712", "name": "Very large file: backend/paper_engine/strategy_agent.py (5278 lines)", "shortDescription": {"text": "Very large file: backend/paper_engine/strategy_agent.py (5278 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-ddafa0ccb2f867d4", "name": "Very large file: backend/sector_interaction/india_live.py (1160 lines)", "shortDescription": {"text": "Very large file: backend/sector_interaction/india_live.py (1160 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-0917b261d6d0bd5f", "name": "Very large file: backend/sector_interaction/service.py (1381 lines)", "shortDescription": {"text": "Very large file: backend/sector_interaction/service.py (1381 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-ac59fdac38db6052", "name": "Very large file: backend/analysis/expansion_analysis.py (1255 lines)", "shortDescription": {"text": "Very large file: backend/analysis/expansion_analysis.py (1255 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-9a1dd9d595ee82d1", "name": "Very large file: backend/analysis/backtest.py (1540 lines)", "shortDescription": {"text": "Very large file: backend/analysis/backtest.py (1540 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-268578c88bcea5f9", "name": "Very large file: backend/fractal_market_profile/service.py (2426 lines)", "shortDescription": {"text": "Very large file: backend/fractal_market_profile/service.py (2426 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-dead6950029bf952", "name": "Very large file: backend/auction_intelligence/live.py (1725 lines)", "shortDescription": {"text": "Very large file: backend/auction_intelligence/live.py (1725 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-1bdc4336e47b1cec", "name": "Very large file: backend/market_data/atm_watchlist.py (3035 lines)", "shortDescription": {"text": "Very large file: backend/market_data/atm_watchlist.py (3035 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-b42b2de08194b947", "name": "Very large file: backend/market_data/fno_analytics.py (1333 lines)", "shortDescription": {"text": "Very large file: backend/market_data/fno_analytics.py (1333 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-206c170fddc00cc0", "name": "Very large file: backend/market_data/commodity_atm_watchlist.py (1331 lines)", "shortDescription": {"text": "Very large file: backend/market_data/commodity_atm_watchlist.py (1331 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1604a7dce965a0a", "name": "Very large file: backend/market_data/market_intelligence_runtime.py (1261 lines)", "shortDescription": {"text": "Very large file: backend/market_data/market_intelligence_runtime.py (1261 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-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "81 tests / 645 src (ratio 0.13)."}, "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 933 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 160 placeholder/mock markers across 33 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebb113311e28db42", "name": "Commented-code block (5 lines) in frontend/src/components/charts/ChartsWorkbench.tsx:87", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/charts/ChartsWorkbench.tsx:87"}, "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-52e216ebe195ec56", "name": "Commented-code block (5 lines) in frontend/src/components/trading/StrategyDashboard.tsx:390", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/trading/StrategyDashboard.tsx:390"}, "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-4d81e5f882e92f9a", "name": "Commented-code block (5 lines) in frontend/src/app/commodity/live/page.tsx:913", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/app/commodity/live/page.tsx:913"}, "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-06aeab6df94f50b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/reports-ledger.ts:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/reports-ledger.ts:145"}, "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-1db965a6bc0f27bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/websocket.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/websocket.ts: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-cca5fad870c664aa", "name": "Commented-code block (5 lines) in frontend-v2/next.config.js:23", "shortDescription": {"text": "Commented-code block (5 lines) in frontend-v2/next.config.js: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-e3b89a635aa80439", "name": "Commented-code block (5 lines) in frontend-v2/src/components/v1-charts/ChartsWorkbench.tsx:87", "shortDescription": {"text": "Commented-code block (5 lines) in frontend-v2/src/components/v1-charts/ChartsWorkbench.tsx:87"}, "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-b751c5df41c77430", "name": "Commented-code block (5 lines) in frontend-v2/src/components/strategies/nse/NseDesk.tsx:306", "shortDescription": {"text": "Commented-code block (5 lines) in frontend-v2/src/components/strategies/nse/NseDesk.tsx:306"}, "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-01961c229533ba5f", "name": "Commented-code block (5 lines) in frontend-v2/src/app/strategies/commodity/live/page.tsx:909", "shortDescription": {"text": "Commented-code block (5 lines) in frontend-v2/src/app/strategies/commodity/live/page.tsx:909"}, "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-b77794e8072130af", "name": "Commented-code block (12 lines) in frontend-v2/src/lib/runtime-url.ts:29", "shortDescription": {"text": "Commented-code block (12 lines) in frontend-v2/src/lib/runtime-url.ts:29"}, "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-c944850de6191fc2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/reports-ledger.ts:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/reports-ledger.ts:145"}, "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-13bc35dc7fb4aeb4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/websocket.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/websocket.ts: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-3956675b3fa2769f", "name": "Commented-code block (5 lines) in backend/main.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in backend/main.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-db3b1c8a2e8e2304", "name": "Commented-code block (7 lines) in backend/directional_options/config.py:49", "shortDescription": {"text": "Commented-code block (7 lines) in backend/directional_options/config.py:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2f290d745bd4e17", "name": "Commented-code block (5 lines) in backend/directional_options/selector.py:627", "shortDescription": {"text": "Commented-code block (5 lines) in backend/directional_options/selector.py:627"}, "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-05cc4cad3c26990f", "name": "Legacy-named symbol `S_inv_old` in backend/directional_options/policy.py:305", "shortDescription": {"text": "Legacy-named symbol `S_inv_old` in backend/directional_options/policy.py:305"}, "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-c8908dc4ffba10db", "name": "Commented-code block (7 lines) in backend/directional_options/policy.py:119", "shortDescription": {"text": "Commented-code block (7 lines) in backend/directional_options/policy.py:119"}, "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-1cb0bd071795e20a", "name": "Commented-code block (8 lines) in backend/directional_options/signals.py:32", "shortDescription": {"text": "Commented-code block (8 lines) in backend/directional_options/signals.py:32"}, "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-0bed8a8bb4db2ec7", "name": "Commented-code block (7 lines) in backend/directional_options/chain_analytics.py:39", "shortDescription": {"text": "Commented-code block (7 lines) in backend/directional_options/chain_analytics.py:39"}, "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-13dd4659523d583c", "name": "Commented-code block (5 lines) in backend/directional_options/paper.py:128", "shortDescription": {"text": "Commented-code block (5 lines) in backend/directional_options/paper.py:128"}, "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-84f9b7eb69e00650", "name": "Commented-code block (6 lines) in backend/directional_options/regime.py:66", "shortDescription": {"text": "Commented-code block (6 lines) in backend/directional_options/regime.py:66"}, "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-55acca9f3efd81d9", "name": "Commented-code block (7 lines) in backend/directional_options/service.py:298", "shortDescription": {"text": "Commented-code block (7 lines) in backend/directional_options/service.py:298"}, "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-d93bb61d1ee87b97", "name": "Commented-code block (7 lines) in backend/gann_tp_delta/config.py:78", "shortDescription": {"text": "Commented-code block (7 lines) in backend/gann_tp_delta/config.py:78"}, "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-38ca190b62c3be15", "name": "Commented-code block (6 lines) in backend/gann_tp_delta/data.py:31", "shortDescription": {"text": "Commented-code block (6 lines) in backend/gann_tp_delta/data.py:31"}, "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-2765d58bb56b4f5b", "name": "Legacy-named symbol `_dir_summary_test_unused` in backend/tests/test_directional_summary_realized.py:36", "shortDescription": {"text": "Legacy-named symbol `_dir_summary_test_unused` in backend/tests/test_directional_summary_realized.py:36"}, "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-937de0c2112d06e6", "name": "Legacy-named symbol `_ai_discipline_test_unused` in backend/tests/test_auction_position_discipline.py:14", "shortDescription": {"text": "Legacy-named symbol `_ai_discipline_test_unused` in backend/tests/test_auction_position_discipline.py:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa2454e4de75208a", "name": "Commented-code block (6 lines) in backend/analytics/sector.py:594", "shortDescription": {"text": "Commented-code block (6 lines) in backend/analytics/sector.py:594"}, "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-cf6d3849cd29d18c", "name": "Commented-code block (5 lines) in backend/api/websockets/ticks.py:417", "shortDescription": {"text": "Commented-code block (5 lines) in backend/api/websockets/ticks.py:417"}, "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-d383c23316696629", "name": "Commented-code block (6 lines) in backend/api/routers/auth.py:1197", "shortDescription": {"text": "Commented-code block (6 lines) in backend/api/routers/auth.py:1197"}, "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-98c6b94e1a7383f4", "name": "Commented-code block (5 lines) in backend/api/routers/strategy.py:738", "shortDescription": {"text": "Commented-code block (5 lines) in backend/api/routers/strategy.py:738"}, "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-17ff62624d8cca53", "name": "Commented-code block (5 lines) in backend/api/routers/orderflow.py:687", "shortDescription": {"text": "Commented-code block (5 lines) in backend/api/routers/orderflow.py:687"}, "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-0c534d19c9ffc9c1", "name": "Commented-code block (6 lines) in backend/api/routers/charts.py:32", "shortDescription": {"text": "Commented-code block (6 lines) in backend/api/routers/charts.py:32"}, "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-17b10ad199fc8f7d", "name": "Commented-code block (5 lines) in backend/audits/replay.py:26", "shortDescription": {"text": "Commented-code block (5 lines) in backend/audits/replay.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-ebf45f7f91fb57ae", "name": "Commented-code block (7 lines) in backend/audits/lanes/s1_atm_30m_macd.py:127", "shortDescription": {"text": "Commented-code block (7 lines) in backend/audits/lanes/s1_atm_30m_macd.py:127"}, "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-e44652114696eab2", "name": "Commented-code block (6 lines) in backend/scripts/research_nifty_atm_renko_sequential.py:230", "shortDescription": {"text": "Commented-code block (6 lines) in backend/scripts/research_nifty_atm_renko_sequential.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-6e4bc71457387b2f", "name": "Legacy-named symbol `research_nifty_per_option_renko_v2` in backend/scripts/research_nifty_per_option_renko_v2.py:17", "shortDescription": {"text": "Legacy-named symbol `research_nifty_per_option_renko_v2` in backend/scripts/research_nifty_per_option_renko_v2.py:17"}, "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-9e5a70edb1919f14", "name": "Commented-code block (5 lines) in backend/agent/trading_agent.py:65", "shortDescription": {"text": "Commented-code block (5 lines) in backend/agent/trading_agent.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-83472e2d48d7f456", "name": "Commented-code block (10 lines) in backend/agent/strategy_config.py:29", "shortDescription": {"text": "Commented-code block (10 lines) in backend/agent/strategy_config.py:29"}, "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-1202af486a71dab8", "name": "Commented-code block (7 lines) in backend/paper_engine/commodity_strategy_agent.py:92", "shortDescription": {"text": "Commented-code block (7 lines) in backend/paper_engine/commodity_strategy_agent.py:92"}, "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-41ee319810695188", "name": "Commented-code block (7 lines) in backend/paper_engine/strategy_agent_entries.py:478", "shortDescription": {"text": "Commented-code block (7 lines) in backend/paper_engine/strategy_agent_entries.py:478"}, "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-3a5b6c134f41bb60", "name": "Commented-code block (6 lines) in backend/paper_engine/strategy2_mp_of.py:78", "shortDescription": {"text": "Commented-code block (6 lines) in backend/paper_engine/strategy2_mp_of.py:78"}, "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-e5e216dcf621bd0c", "name": "Commented-code block (8 lines) in backend/paper_engine/portfolio.py:437", "shortDescription": {"text": "Commented-code block (8 lines) in backend/paper_engine/portfolio.py:437"}, "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-65278bbcdfc0cfb8", "name": "Commented-code block (14 lines) in backend/paper_engine/strategy_agent.py:167", "shortDescription": {"text": "Commented-code block (14 lines) in backend/paper_engine/strategy_agent.py:167"}, "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-7383445db8db1798", "name": "Commented-code block (21 lines) in backend/paper_engine/strategy_agent_exits.py:9", "shortDescription": {"text": "Commented-code block (21 lines) in backend/paper_engine/strategy_agent_exits.py:9"}, "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-e44ccc6c7b289546", "name": "Legacy-named symbol `sector_interaction_ingestion_v1` in backend/sector_interaction/ingestion.py:16", "shortDescription": {"text": "Legacy-named symbol `sector_interaction_ingestion_v1` in backend/sector_interaction/ingestion.py:16"}, "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-fabddb6e8e463ad5", "name": "Commented-code block (5 lines) in backend/sector_interaction/india_live.py:397", "shortDescription": {"text": "Commented-code block (5 lines) in backend/sector_interaction/india_live.py:397"}, "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-6622b6eac003e211", "name": "Legacy-named symbol `sector_interaction_nse_constituents_v1` in backend/sector_interaction/nse_constituents.py:18", "shortDescription": {"text": "Legacy-named symbol `sector_interaction_nse_constituents_v1` in backend/sector_interaction/nse_constituents.py:18"}, "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-e9dcf4f68fe21419", "name": "Commented-code block (6 lines) in backend/analysis/safe_candles.py:100", "shortDescription": {"text": "Commented-code block (6 lines) in backend/analysis/safe_candles.py:100"}, "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-c758fe134a7dbbb5", "name": "Commented-code block (6 lines) in backend/analysis/_commodity_wf_driver.py:87", "shortDescription": {"text": "Commented-code block (6 lines) in backend/analysis/_commodity_wf_driver.py:87"}, "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-5b664b6845ed523f", "name": "Commented-code block (5 lines) in backend/analysis/s1_filter_synth.py:23", "shortDescription": {"text": "Commented-code block (5 lines) in backend/analysis/s1_filter_synth.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-17a5e173479aa96d", "name": "Legacy-named symbol `get_historical_data_v2` in backend/analysis/backtest.py:879", "shortDescription": {"text": "Legacy-named symbol `get_historical_data_v2` in backend/analysis/backtest.py:879"}, "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-685760d23adb826d", "name": "Commented-code block (7 lines) in backend/analysis/backtest.py:684", "shortDescription": {"text": "Commented-code block (7 lines) in backend/analysis/backtest.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-33cf15bad961856d", "name": "Commented-code block (5 lines) in backend/analysis/instruments.py:248", "shortDescription": {"text": "Commented-code block (5 lines) in backend/analysis/instruments.py:248"}, "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-c72350ea65ce4195", "name": "Commented-code block (7 lines) in backend/analysis/walk_forward.py:26", "shortDescription": {"text": "Commented-code block (7 lines) in backend/analysis/walk_forward.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-f8e9c7b11b4ef71b", "name": "Commented-code block (8 lines) in backend/fractal_market_profile/paper.py:158", "shortDescription": {"text": "Commented-code block (8 lines) in backend/fractal_market_profile/paper.py:158"}, "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-946637fe5d8e37c0", "name": "Commented-code block (5 lines) in backend/fractal_market_profile/service.py:980", "shortDescription": {"text": "Commented-code block (5 lines) in backend/fractal_market_profile/service.py:980"}, "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-c7f17af8553b41e0", "name": "Commented-code block (10 lines) in backend/db/database.py:11", "shortDescription": {"text": "Commented-code block (10 lines) in backend/db/database.py:11"}, "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-8f27f8a573d38668", "name": "Commented-code block (5 lines) in backend/core/config.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in backend/core/config.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-7e6f8fef460b0bbf", "name": "Commented-code block (6 lines) in backend/auction_intelligence/live.py:531", "shortDescription": {"text": "Commented-code block (6 lines) in backend/auction_intelligence/live.py:531"}, "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-1212c6e55ad1a714", "name": "Commented-code block (9 lines) in backend/auction_intelligence/automation.py:179", "shortDescription": {"text": "Commented-code block (9 lines) in backend/auction_intelligence/automation.py:179"}, "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-714bbf7ed9a3346f", "name": "Commented-code block (5 lines) in backend/auction_intelligence/service.py:169", "shortDescription": {"text": "Commented-code block (5 lines) in backend/auction_intelligence/service.py:169"}, "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-31c46353e95dcbf5", "name": "Commented-code block (7 lines) in backend/auction_intelligence/risk/governor.py:47", "shortDescription": {"text": "Commented-code block (7 lines) in backend/auction_intelligence/risk/governor.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-2c723bcbfd60af19", "name": "Commented-code block (5 lines) in backend/auction_intelligence/agents/base.py:9", "shortDescription": {"text": "Commented-code block (5 lines) in backend/auction_intelligence/agents/base.py:9"}, "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-0bf144245e4884c6", "name": "Commented-code block (8 lines) in backend/auction_intelligence/agents/positional.py:54", "shortDescription": {"text": "Commented-code block (8 lines) in backend/auction_intelligence/agents/positional.py:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b30fd3cc4735175c", "name": "Commented-code block (6 lines) in backend/auction_intelligence/paper/book.py:19", "shortDescription": {"text": "Commented-code block (6 lines) in backend/auction_intelligence/paper/book.py:19"}, "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-71c7c934061e41a9", "name": "Legacy-named symbol `q_old` in backend/auction_intelligence/rl/policy.py:213", "shortDescription": {"text": "Legacy-named symbol `q_old` in backend/auction_intelligence/rl/policy.py:213"}, "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-e18a828b3a91f3a1", "name": "Commented-code block (9 lines) in backend/brokers/fyers.py:651", "shortDescription": {"text": "Commented-code block (9 lines) in backend/brokers/fyers.py:651"}, "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-41c2cac7bbec3434", "name": "Commented-code block (6 lines) in backend/brokers/upstox.py:339", "shortDescription": {"text": "Commented-code block (6 lines) in backend/brokers/upstox.py:339"}, "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-e4da87712350cd2e", "name": "Legacy-named symbol `get_historical_data_v2` in backend/brokers/icici_breeze.py:11", "shortDescription": {"text": "Legacy-named symbol `get_historical_data_v2` in backend/brokers/icici_breeze.py:11"}, "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-2f45a22c686d8c8d", "name": "Commented-code block (6 lines) in backend/brokers/icici_breeze.py:108", "shortDescription": {"text": "Commented-code block (6 lines) in backend/brokers/icici_breeze.py:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67424ef3282c04c6", "name": "Legacy-named symbol `forward_leaning_v1` in backend/cbe_scanner/asset_rotation.py:540", "shortDescription": {"text": "Legacy-named symbol `forward_leaning_v1` in backend/cbe_scanner/asset_rotation.py:540"}, "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-d2190898764e31b3", "name": "Commented-code block (5 lines) in backend/cbe_scanner/asset_rotation.py:501", "shortDescription": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/asset_rotation.py:501"}, "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-75a6aa97d227c821", "name": "Stub function `get_spread_history` (body is just `pass`/`return`) \u2014 backend/cbe_scanner/project_provider.py:97", "shortDescription": {"text": "Stub function `get_spread_history` (body is just `pass`/`return`) \u2014 backend/cbe_scanner/project_provider.py:97"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e256ed5afe3e8c1", "name": "Commented-code block (5 lines) in backend/cbe_scanner/alpha_engine.py:70", "shortDescription": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/alpha_engine.py:70"}, "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-609cd24bd2596ebb", "name": "Commented-code block (7 lines) in backend/cbe_scanner/features.py:630", "shortDescription": {"text": "Commented-code block (7 lines) in backend/cbe_scanner/features.py:630"}, "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-a1cbe3b0ae963a63", "name": "Commented-code block (5 lines) in backend/cbe_scanner/paper.py:132", "shortDescription": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/paper.py:132"}, "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-83597fe104e65747", "name": "Commented-code block (5 lines) in backend/market_data/live_marks.py:47", "shortDescription": {"text": "Commented-code block (5 lines) in backend/market_data/live_marks.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-8607618225940ceb", "name": "Commented-code block (6 lines) in backend/market_data/option_subscription_manager.py:107", "shortDescription": {"text": "Commented-code block (6 lines) in backend/market_data/option_subscription_manager.py:107"}, "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-3fa2b5601a4010ec", "name": "Commented-code block (5 lines) in backend/market_data/data_router.py:45", "shortDescription": {"text": "Commented-code block (5 lines) in backend/market_data/data_router.py:45"}, "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-c30ce209dbdd2be8", "name": "Commented-code block (7 lines) in backend/market_data/option_history.py:179", "shortDescription": {"text": "Commented-code block (7 lines) in backend/market_data/option_history.py:179"}, "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-1d1f5cb557ad4b9d", "name": "Commented-code block (5 lines) in backend/market_data/atm_watchlist.py:59", "shortDescription": {"text": "Commented-code block (5 lines) in backend/market_data/atm_watchlist.py:59"}, "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-e0998a09b2d4f236", "name": "Commented-code block (7 lines) in backend/market_data/live_candle_store.py:70", "shortDescription": {"text": "Commented-code block (7 lines) in backend/market_data/live_candle_store.py:70"}, "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-10d27335af5096c1", "name": "Legacy-named symbol `commodity_atm_watchlist_cache_v1` in backend/market_data/commodity_atm_watchlist.py:184", "shortDescription": {"text": "Legacy-named symbol `commodity_atm_watchlist_cache_v1` in backend/market_data/commodity_atm_watchlist.py:184"}, "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-7e9c7900f7e343fe", "name": "Commented-code block (5 lines) in backend/market_data/commodity_atm_watchlist.py:1053", "shortDescription": {"text": "Commented-code block (5 lines) in backend/market_data/commodity_atm_watchlist.py:1053"}, "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-f4a588ac25bd2d81", "name": "Commented-code block (7 lines) in backend/market_data/data_quality_agent.py:109", "shortDescription": {"text": "Commented-code block (7 lines) in backend/market_data/data_quality_agent.py:109"}, "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-89469f7aa8abab37", "name": "Commented-code block (6 lines) in backend/market_data/option_chain.py:138", "shortDescription": {"text": "Commented-code block (6 lines) in backend/market_data/option_chain.py:138"}, "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-7d2eee66ff1a243f", "name": "Commented-code block (6 lines) in backend/market_data/market_intelligence_runtime.py:184", "shortDescription": {"text": "Commented-code block (6 lines) in backend/market_data/market_intelligence_runtime.py:184"}, "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-7c7a225a463e99e2", "name": "Commented-code block (6 lines) in backend/market_data/market_profile.py:306", "shortDescription": {"text": "Commented-code block (6 lines) in backend/market_data/market_profile.py:306"}, "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-0c9d02364e09e13c", "name": "55 env vars used in code but missing from .env.example", "shortDescription": {"text": "55 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_INITIAL_CAPITAL`, `AI_IS_DAYS`, `AI_OOS_DAYS`, `AI_OUT`, `AI_STRIDE_DAYS`, `ALPACA_DIR`, `API_URL`, `AUDIT_DSN` + 47 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nsniper-paper/src/sniper_paper/common/settings.py:load, sniper-paper/src/sniper_paper/common/settings.py:load\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:\ntools/generate_nse_cache_validation_report.py:classify, tools/generate_nse_cache_validation_report.py:classify, tools/generate_nse_cache_validation_report.py:classify, backend/analysis/validation_live.py:classify\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/directional_options/service.py:workspace, backend/directional_options/service.py:live_snapshot, backend/directional_options/service.py:record_paper_snapshot\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-380b7cb95b387b9c", "name": "Near-duplicate function bodies in 11 places", "shortDescription": {"text": "Near-duplicate function bodies in 11 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/api/websockets/ticks.py:payload_factory, backend/api/websockets/ticks.py:payload_factory, backend/api/websockets/ticks.py:payload_factory, backend/api/websockets/ticks.py:payload_factory\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:\nbackend/api/routers/gann_tp_delta.py:workspace, backend/api/routers/gann_tp_delta.py:live_snapshot, backend/api/routers/gann_tp_delta.py:backtest, backend/api/routers/gann_tp_delta.py:paper_proposal\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-93e23c2b69cb5ae0", "name": "FastAPI POST `fire_telegram_heartbeat` without auth dependency \u2014 backend/api/routers/notifications.py:25", "shortDescription": {"text": "FastAPI POST `fire_telegram_heartbeat` without auth dependency \u2014 backend/api/routers/notifications.py:25"}, "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-1ae58d9efa68daa4", "name": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/directional_options.py:44", "shortDescription": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/directional_options.py:44"}, "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-91ea186028ce91e3", "name": "FastAPI POST `reset_paper_account` without auth dependency \u2014 backend/api/routers/directional_options.py:76", "shortDescription": {"text": "FastAPI POST `reset_paper_account` without auth dependency \u2014 backend/api/routers/directional_options.py:76"}, "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-10d5df7baf643f30", "name": "FastAPI POST `scan_cbe` without auth dependency \u2014 backend/api/routers/cbe.py:67", "shortDescription": {"text": "FastAPI POST `scan_cbe` without auth dependency \u2014 backend/api/routers/cbe.py:67"}, "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-75fac79902920a18", "name": "FastAPI POST `cbe_reset_paper` without auth dependency \u2014 backend/api/routers/cbe.py:140", "shortDescription": {"text": "FastAPI POST `cbe_reset_paper` without auth dependency \u2014 backend/api/routers/cbe.py:140"}, "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-bbb67ad5b11a3fbf", "name": "FastAPI POST `ingest_sniper_signal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:81", "shortDescription": {"text": "FastAPI POST `ingest_sniper_signal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:81"}, "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-8d487ba64348ac52", "name": "FastAPI POST `shadow_record_live` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:400", "shortDescription": {"text": "FastAPI POST `shadow_record_live` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:400"}, "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-8ebf8cf92cd3d6e5", "name": "FastAPI POST `shadow_backfill` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:424", "shortDescription": {"text": "FastAPI POST `shadow_backfill` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:424"}, "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-22811e6183c7236f", "name": "FastAPI POST `paper_run_once` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:541", "shortDescription": {"text": "FastAPI POST `paper_run_once` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:541"}, "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-61ce74c8be90ce8e", "name": "FastAPI POST `analyze` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:552", "shortDescription": {"text": "FastAPI POST `analyze` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:552"}, "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-289b23674e97158d", "name": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:568", "shortDescription": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:568"}, "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-f02b6d3346972ae4", "name": "FastAPI POST `validate_gate_a` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:598", "shortDescription": {"text": "FastAPI POST `validate_gate_a` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:598"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a03ecd9ac11460d", "name": "FastAPI POST `rl_train` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:799", "shortDescription": {"text": "FastAPI POST `rl_train` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:799"}, "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-7bf8d4b4b3a9bcb4", "name": "FastAPI POST `rl_cycle` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:822", "shortDescription": {"text": "FastAPI POST `rl_cycle` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:822"}, "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-9d55da17b2f7f1c0", "name": "FastAPI DELETE `rl_reset` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:856", "shortDescription": {"text": "FastAPI DELETE `rl_reset` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:856"}, "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-134c6f2a55d05300", "name": "FastAPI POST `save_credentials` without auth dependency \u2014 backend/api/routers/auth.py:1358", "shortDescription": {"text": "FastAPI POST `save_credentials` without auth dependency \u2014 backend/api/routers/auth.py:1358"}, "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-4e60bbceb5545951", "name": "FastAPI POST `telegram_discover_chats` without auth dependency \u2014 backend/api/routers/auth.py:1486", "shortDescription": {"text": "FastAPI POST `telegram_discover_chats` without auth dependency \u2014 backend/api/routers/auth.py:1486"}, "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-111ee13a5eb6eda1", "name": "FastAPI POST `save_telegram_settings` without auth dependency \u2014 backend/api/routers/auth.py:1537", "shortDescription": {"text": "FastAPI POST `save_telegram_settings` without auth dependency \u2014 backend/api/routers/auth.py:1537"}, "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-d5eb12fe1de18ebe", "name": "FastAPI POST `send_telegram_test` without auth dependency \u2014 backend/api/routers/auth.py:1564", "shortDescription": {"text": "FastAPI POST `send_telegram_test` without auth dependency \u2014 backend/api/routers/auth.py:1564"}, "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-515e3cc1202f42a0", "name": "FastAPI POST `connect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1603", "shortDescription": {"text": "FastAPI POST `connect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1603"}, "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-d3bcff043d085e25", "name": "FastAPI POST `disconnect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1634", "shortDescription": {"text": "FastAPI POST `disconnect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1634"}, "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-98216c2a57a27c0d", "name": "FastAPI POST `upstox_connect_manual` without auth dependency \u2014 backend/api/routers/auth.py:1764", "shortDescription": {"text": "FastAPI POST `upstox_connect_manual` without auth dependency \u2014 backend/api/routers/auth.py:1764"}, "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-987334b2bcaa716c", "name": "FastAPI POST `icici_breeze_connect` without auth dependency \u2014 backend/api/routers/auth.py:1858", "shortDescription": {"text": "FastAPI POST `icici_breeze_connect` without auth dependency \u2014 backend/api/routers/auth.py:1858"}, "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-759286815540e5ea", "name": "FastAPI POST `fivepaisa_connect` without auth dependency \u2014 backend/api/routers/auth.py:1886", "shortDescription": {"text": "FastAPI POST `fivepaisa_connect` without auth dependency \u2014 backend/api/routers/auth.py:1886"}, "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-895983ec6883fc85", "name": "FastAPI POST `refresh_learning_scores` without auth dependency \u2014 backend/api/routers/strategy.py:1303", "shortDescription": {"text": "FastAPI POST `refresh_learning_scores` without auth dependency \u2014 backend/api/routers/strategy.py:1303"}, "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-3a70b4f19894bef9", "name": "FastAPI POST `fractal_market_profile_paper_proposal` without auth dependency \u2014 backend/api/routers/fractal_market_profil", "shortDescription": {"text": "FastAPI POST `fractal_market_profile_paper_proposal` without auth dependency \u2014 backend/api/routers/fractal_market_profile.py:35"}, "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-fd746c8a915d2df7", "name": "FastAPI POST `run_backtest_csv` without auth dependency \u2014 backend/api/routers/backtester.py:96", "shortDescription": {"text": "FastAPI POST `run_backtest_csv` without auth dependency \u2014 backend/api/routers/backtester.py:96"}, "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-f7c1f42c753e68dd", "name": "FastAPI POST `run_backtest_json` without auth dependency \u2014 backend/api/routers/backtester.py:129", "shortDescription": {"text": "FastAPI POST `run_backtest_json` without auth dependency \u2014 backend/api/routers/backtester.py:129"}, "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-5cb76fb2429b23b8", "name": "FastAPI POST `run_backtest_breeze` without auth dependency \u2014 backend/api/routers/backtester.py:168", "shortDescription": {"text": "FastAPI POST `run_backtest_breeze` without auth dependency \u2014 backend/api/routers/backtester.py:168"}, "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-4582aafca0adecc5", "name": "FastAPI POST `walk_forward_optimize` without auth dependency \u2014 backend/api/routers/backtester.py:223", "shortDescription": {"text": "FastAPI POST `walk_forward_optimize` without auth dependency \u2014 backend/api/routers/backtester.py:223"}, "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-d832cb1a1747a79b", "name": "FastAPI POST `parameter_sensitivity` without auth dependency \u2014 backend/api/routers/backtester.py:252", "shortDescription": {"text": "FastAPI POST `parameter_sensitivity` without auth dependency \u2014 backend/api/routers/backtester.py:252"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be3fa49f4dbc95b5", "name": "FastAPI POST `reset_commodity_paper_account` without auth dependency \u2014 backend/api/routers/commodity.py:95", "shortDescription": {"text": "FastAPI POST `reset_commodity_paper_account` without auth dependency \u2014 backend/api/routers/commodity.py:95"}, "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-a54f290aa40f7246", "name": "FastAPI POST `start_commodity_strategy_agent` without auth dependency \u2014 backend/api/routers/commodity.py:125", "shortDescription": {"text": "FastAPI POST `start_commodity_strategy_agent` without auth dependency \u2014 backend/api/routers/commodity.py:125"}, "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-4e5f5bd4f4700a02", "name": "FastAPI POST `run_commodity_strategy_once` without auth dependency \u2014 backend/api/routers/commodity.py:130", "shortDescription": {"text": "FastAPI POST `run_commodity_strategy_once` without auth dependency \u2014 backend/api/routers/commodity.py:130"}, "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-767aef6452bf3750", "name": "FastAPI PUT `update_commodity_strategy_config` without auth dependency \u2014 backend/api/routers/commodity.py:135", "shortDescription": {"text": "FastAPI PUT `update_commodity_strategy_config` without auth dependency \u2014 backend/api/routers/commodity.py:135"}, "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-acd7ab738bc9dd88", "name": "FastAPI PUT `update_commodity_kill_switch` without auth dependency \u2014 backend/api/routers/commodity.py:154", "shortDescription": {"text": "FastAPI PUT `update_commodity_kill_switch` without auth dependency \u2014 backend/api/routers/commodity.py:154"}, "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-1d51d74c64bc68f3", "name": "FastAPI POST `start_download` without auth dependency \u2014 backend/api/routers/fo_data.py:176", "shortDescription": {"text": "FastAPI POST `start_download` without auth dependency \u2014 backend/api/routers/fo_data.py:176"}, "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-595a7ee8c501c746", "name": "FastAPI POST `start_index_analytics_download` without auth dependency \u2014 backend/api/routers/fo_data.py:207", "shortDescription": {"text": "FastAPI POST `start_index_analytics_download` without auth dependency \u2014 backend/api/routers/fo_data.py:207"}, "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-be27fb120c292284", "name": "FastAPI DELETE `cancel_task` without auth dependency \u2014 backend/api/routers/fo_data.py:318", "shortDescription": {"text": "FastAPI DELETE `cancel_task` without auth dependency \u2014 backend/api/routers/fo_data.py:318"}, "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-e67dcbf316998eb4", "name": "FastAPI DELETE `delete_index_analytics_task` without auth dependency \u2014 backend/api/routers/fo_data.py:326", "shortDescription": {"text": "FastAPI DELETE `delete_index_analytics_task` without auth dependency \u2014 backend/api/routers/fo_data.py:326"}, "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-6d5469f9ac51e28e", "name": "FastAPI POST `sync_nse_constituents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:37", "shortDescription": {"text": "FastAPI POST `sync_nse_constituents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:37"}, "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-c0b55ee5ea6487b9", "name": "FastAPI POST `run_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:161", "shortDescription": {"text": "FastAPI POST `run_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:161"}, "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-6b8f6a21a07a2830", "name": "FastAPI POST `run_india_live_market_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:178", "shortDescription": {"text": "FastAPI POST `run_india_live_market_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:178"}, "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-90b0dbf48d5496af", "name": "FastAPI POST `seed_rag_documents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:203", "shortDescription": {"text": "FastAPI POST `seed_rag_documents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:203"}, "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-c350faaa9896ebe8", "name": "FastAPI POST `approve_proposal` without auth dependency \u2014 backend/api/routers/agent.py:30", "shortDescription": {"text": "FastAPI POST `approve_proposal` without auth dependency \u2014 backend/api/routers/agent.py:30"}, "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-b5122fd55e82a187", "name": "FastAPI POST `reject_proposal` without auth dependency \u2014 backend/api/routers/agent.py:38", "shortDescription": {"text": "FastAPI POST `reject_proposal` without auth dependency \u2014 backend/api/routers/agent.py:38"}, "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-ce1c21e1741dd565", "name": "FastAPI POST `run_scan` without auth dependency \u2014 backend/api/routers/agent.py:46", "shortDescription": {"text": "FastAPI POST `run_scan` without auth dependency \u2014 backend/api/routers/agent.py:46"}, "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-593b7c08e038c481", "name": "FastAPI POST `chat` without auth dependency \u2014 backend/api/routers/agent.py:68", "shortDescription": {"text": "FastAPI POST `chat` without auth dependency \u2014 backend/api/routers/agent.py:68"}, "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-e8c003bbf92b25c7", "name": "FastAPI POST `toggle_rule` without auth dependency \u2014 backend/api/routers/agent.py:79", "shortDescription": {"text": "FastAPI POST `toggle_rule` without auth dependency \u2014 backend/api/routers/agent.py:79"}, "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-eadae7f3266cbb5c", "name": "FastAPI POST `set_agent_mode` without auth dependency \u2014 backend/api/routers/agent.py:85", "shortDescription": {"text": "FastAPI POST `set_agent_mode` without auth dependency \u2014 backend/api/routers/agent.py:85"}, "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-0272ebe6c8e02c17", "name": "FastAPI POST `fo_risk_refresh` without auth dependency \u2014 backend/api/routers/market.py:537", "shortDescription": {"text": "FastAPI POST `fo_risk_refresh` without auth dependency \u2014 backend/api/routers/market.py:537"}, "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-54e5a942e86887ee", "name": "FastAPI POST `get_ltp` without auth dependency \u2014 backend/api/routers/market.py:1174", "shortDescription": {"text": "FastAPI POST `get_ltp` without auth dependency \u2014 backend/api/routers/market.py:1174"}, "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-53fd249562134008", "name": "FastAPI POST `get_latest_ticks` without auth dependency \u2014 backend/api/routers/market.py:1229", "shortDescription": {"text": "FastAPI POST `get_latest_ticks` without auth dependency \u2014 backend/api/routers/market.py:1229"}, "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-4e284fba8e94f426", "name": "FastAPI POST `set_mode` without auth dependency \u2014 backend/api/routers/trading.py:270", "shortDescription": {"text": "FastAPI POST `set_mode` without auth dependency \u2014 backend/api/routers/trading.py:270"}, "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-4f1ad89fd89390d9", "name": "FastAPI POST `place_order` without auth dependency \u2014 backend/api/routers/trading.py:305", "shortDescription": {"text": "FastAPI POST `place_order` without auth dependency \u2014 backend/api/routers/trading.py:305"}, "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-97cbda940e70a0c4", "name": "FastAPI PUT `modify_order` without auth dependency \u2014 backend/api/routers/trading.py:394", "shortDescription": {"text": "FastAPI PUT `modify_order` without auth dependency \u2014 backend/api/routers/trading.py:394"}, "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-f7a309421798d890", "name": "FastAPI DELETE `cancel_order` without auth dependency \u2014 backend/api/routers/trading.py:403", "shortDescription": {"text": "FastAPI DELETE `cancel_order` without auth dependency \u2014 backend/api/routers/trading.py:403"}, "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-8bf1529e64c795ca", "name": "FastAPI POST `kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:442", "shortDescription": {"text": "FastAPI POST `kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:442"}, "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-3e9cbf18010bef2a", "name": "FastAPI PUT `update_kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:469", "shortDescription": {"text": "FastAPI PUT `update_kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:469"}, "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-9be5c9b5865b03af", "name": "FastAPI POST `run_strategy_agent_once` without auth dependency \u2014 backend/api/routers/trading.py:534", "shortDescription": {"text": "FastAPI POST `run_strategy_agent_once` without auth dependency \u2014 backend/api/routers/trading.py:534"}, "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-c23690ab7e0c6468", "name": "FastAPI POST `close_strategy_agent_position` without auth dependency \u2014 backend/api/routers/trading.py:539", "shortDescription": {"text": "FastAPI POST `close_strategy_agent_position` without auth dependency \u2014 backend/api/routers/trading.py:539"}, "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-be38623edf60a931", "name": "FastAPI PUT `set_strategy_agent_auto_run` without auth dependency \u2014 backend/api/routers/trading.py:551", "shortDescription": {"text": "FastAPI PUT `set_strategy_agent_auto_run` without auth dependency \u2014 backend/api/routers/trading.py:551"}, "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-9df51b99841c6464", "name": "FastAPI POST `reset_nse_paper_account` without auth dependency \u2014 backend/api/routers/trading.py:562", "shortDescription": {"text": "FastAPI POST `reset_nse_paper_account` without auth dependency \u2014 backend/api/routers/trading.py:562"}, "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-dc3e99143bd6ea5b", "name": "FastAPI PUT `update_risk_config` without auth dependency \u2014 backend/api/routers/trading.py:585", "shortDescription": {"text": "FastAPI PUT `update_risk_config` without auth dependency \u2014 backend/api/routers/trading.py:585"}, "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-16edcf2ddbd93351", "name": "FastAPI POST `add_document` without auth dependency \u2014 backend/api/routers/rag.py:20", "shortDescription": {"text": "FastAPI POST `add_document` without auth dependency \u2014 backend/api/routers/rag.py:20"}, "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-2c03f8e439924fa0", "name": "FastAPI POST `add_trade_case` without auth dependency \u2014 backend/api/routers/rag.py:26", "shortDescription": {"text": "FastAPI POST `add_trade_case` without auth dependency \u2014 backend/api/routers/rag.py:26"}, "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-d4be13983fad5635", "name": "FastAPI POST `search` without auth dependency \u2014 backend/api/routers/rag.py:32", "shortDescription": {"text": "FastAPI POST `search` without auth dependency \u2014 backend/api/routers/rag.py:32"}, "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-c414763b1aa647f1", "name": "FastAPI POST `context_gate` without auth dependency \u2014 backend/api/routers/rag.py:69", "shortDescription": {"text": "FastAPI POST `context_gate` without auth dependency \u2014 backend/api/routers/rag.py:69"}, "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-a4eaeef1a4b284d6", "name": "FastAPI POST `start_backtest` without auth dependency \u2014 backend/api/routers/analysis.py:1379", "shortDescription": {"text": "FastAPI POST `start_backtest` without auth dependency \u2014 backend/api/routers/analysis.py:1379"}, "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-8e0fdd1c40171e71", "name": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:76", "shortDescription": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:76"}, "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-0713f12c49e0eed1", "name": "FastAPI POST `paper_agent_run_once` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:108", "shortDescription": {"text": "FastAPI POST `paper_agent_run_once` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:108"}, "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-0b05cf67864662da", "name": "FastAPI PUT `update_trading_calendar` without auth dependency \u2014 backend/api/routers/system.py:543", "shortDescription": {"text": "FastAPI PUT `update_trading_calendar` without auth dependency \u2014 backend/api/routers/system.py:543"}, "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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`backend/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-5575539e392fa8e2", "name": "Unused endpoint: POST /telegram/heartbeat", "shortDescription": {"text": "Unused endpoint: POST /telegram/heartbeat"}, "fullDescription": {"text": "`backend/api/routers/notifications.py` declares `POST /telegram/heartbeat` 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-e1b7bee247ffc801", "name": "Unused endpoint: GET /summary", "shortDescription": {"text": "Unused endpoint: GET /summary"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /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-9faede0f90ece4bf", "name": "Unused endpoint: GET /workspace", "shortDescription": {"text": "Unused endpoint: GET /workspace"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /workspace` 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-a0655036e1d936ea", "name": "Unused endpoint: GET /live-snapshot", "shortDescription": {"text": "Unused endpoint: GET /live-snapshot"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /live-snapshot` 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-5993c0400dc9dcf7", "name": "Unused endpoint: POST /paper-proposal", "shortDescription": {"text": "Unused endpoint: POST /paper-proposal"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `POST /paper-proposal` 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-270e8bf2b3747a88", "name": "Unused endpoint: GET /paper-journal", "shortDescription": {"text": "Unused endpoint: GET /paper-journal"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /paper-journal` 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-afcd381e2d5e3925", "name": "Unused endpoint: GET /paper-positions", "shortDescription": {"text": "Unused endpoint: GET /paper-positions"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /paper-positions` 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-571e6a1b7e6bd91f", "name": "Unused endpoint: GET /paper-summary", "shortDescription": {"text": "Unused endpoint: GET /paper-summary"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /paper-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-254bd83c4c96436c", "name": "Unused endpoint: POST /reset-paper", "shortDescription": {"text": "Unused endpoint: POST /reset-paper"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `POST /reset-paper` 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-6ac4cd38d033e815", "name": "Unused endpoint: GET /backtest", "shortDescription": {"text": "Unused endpoint: GET /backtest"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /backtest` 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-b8d4db614ca17cc1", "name": "Unused endpoint: GET /chain-analytics", "shortDescription": {"text": "Unused endpoint: GET /chain-analytics"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /chain-analytics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-332b8419a22fdcd5", "name": "Unused endpoint: GET /policy", "shortDescription": {"text": "Unused endpoint: GET /policy"}, "fullDescription": {"text": "`backend/api/routers/directional_options.py` declares `GET /policy` 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-a6f48e60c30777ab", "name": "Unused endpoint: GET /config", "shortDescription": {"text": "Unused endpoint: GET /config"}, "fullDescription": {"text": "`backend/api/routers/cbe.py` declares `GET /config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3b6384509689b6e", "name": "Unused endpoint: GET /universe", "shortDescription": {"text": "Unused endpoint: GET /universe"}, "fullDescription": {"text": "`backend/api/routers/cbe.py` declares `GET /universe` 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-195fb029bb695346", "name": "Unused endpoint: POST /scan", "shortDescription": {"text": "Unused endpoint: POST /scan"}, "fullDescription": {"text": "`backend/api/routers/cbe.py` declares `POST /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-37157900d71c21d3", "name": "Unused endpoint: GET /latest", "shortDescription": {"text": "Unused endpoint: GET /latest"}, "fullDescription": {"text": "`backend/api/routers/cbe.py` declares `GET /latest` 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-87f6ea1dbe593d7b", "name": "Unused endpoint: GET /instruments/{symbol}/analytics", "shortDescription": {"text": "Unused endpoint: GET /instruments/{symbol}/analytics"}, "fullDescription": {"text": "`backend/api/routers/cbe.py` declares `GET /instruments/{symbol}/analytics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c085d1b690941f8", "name": "Unused endpoint: GET /snapshot", "shortDescription": {"text": "Unused endpoint: GET /snapshot"}, "fullDescription": {"text": "`backend/api/routers/data_quality.py` declares `GET /snapshot` 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-bbe13268113402f0", "name": "Unused endpoint: GET /candle-gaps", "shortDescription": {"text": "Unused endpoint: GET /candle-gaps"}, "fullDescription": {"text": "`backend/api/routers/data_quality.py` declares `GET /candle-gaps` 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-52e63745468f7cd5", "name": "Unused endpoint: POST /sniper-signal", "shortDescription": {"text": "Unused endpoint: POST /sniper-signal"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /sniper-signal` 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-2a1e31b0ba86ad35", "name": "Unused endpoint: GET /sniper-signal", "shortDescription": {"text": "Unused endpoint: GET /sniper-signal"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /sniper-signal` 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-bab3ed1efc48a57f", "name": "Unused endpoint: GET /default-config", "shortDescription": {"text": "Unused endpoint: GET /default-config"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /default-config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-96a5149ac044c9df", "name": "Unused endpoint: GET /demo-scenario", "shortDescription": {"text": "Unused endpoint: GET /demo-scenario"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /demo-scenario` 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-f40fe50aacf329b1", "name": "Unused endpoint: POST /shadow-record-live", "shortDescription": {"text": "Unused endpoint: POST /shadow-record-live"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /shadow-record-live` 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-16ad51247db17509", "name": "Unused endpoint: POST /shadow-backfill", "shortDescription": {"text": "Unused endpoint: POST /shadow-backfill"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /shadow-backfill` 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-6857257e8f056872", "name": "Unused endpoint: GET /shadow-records", "shortDescription": {"text": "Unused endpoint: GET /shadow-records"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /shadow-records` 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-ee7fa478387cf80a", "name": "Unused endpoint: GET /paper-status", "shortDescription": {"text": "Unused endpoint: GET /paper-status"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /paper-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-053b2c9b3e6e2f5c", "name": "Unused endpoint: POST /paper-run-once", "shortDescription": {"text": "Unused endpoint: POST /paper-run-once"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /paper-run-once` 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-fca11d494725d7c3", "name": "Unused endpoint: POST /analyze", "shortDescription": {"text": "Unused endpoint: POST /analyze"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /analyze` 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-78917fe6748eb861", "name": "Unused endpoint: POST /validate-gate-a", "shortDescription": {"text": "Unused endpoint: POST /validate-gate-a"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /validate-gate-a` 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-dcc5c3fa831467e9", "name": "Unused endpoint: GET /validate-gate-b", "shortDescription": {"text": "Unused endpoint: GET /validate-gate-b"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /validate-gate-b` 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-a58538a9a01b93d6", "name": "Unused endpoint: GET /validate-gate-c", "shortDescription": {"text": "Unused endpoint: GET /validate-gate-c"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /validate-gate-c` 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-f0c7e872db46ca5f", "name": "Unused endpoint: GET /canary-readiness", "shortDescription": {"text": "Unused endpoint: GET /canary-readiness"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /canary-readiness` 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-8fd8250ace5dce02", "name": "Unused endpoint: GET /validation-runs/latest", "shortDescription": {"text": "Unused endpoint: GET /validation-runs/latest"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /validation-runs/latest` 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-6e6caee87b975dd6", "name": "Unused endpoint: GET /validation-runs/{run_id}/artifacts", "shortDescription": {"text": "Unused endpoint: GET /validation-runs/{run_id}/artifacts"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /validation-runs/{run_id}/artifacts` 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-59705d3c151e0a4e", "name": "Unused endpoint: GET /rl-policy", "shortDescription": {"text": "Unused endpoint: GET /rl-policy"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /rl-policy` 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-bba9eb761191c240", "name": "Unused endpoint: POST /rl-train", "shortDescription": {"text": "Unused endpoint: POST /rl-train"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /rl-train` 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-82bc4f6797e0e10b", "name": "Unused endpoint: POST /rl-cycle", "shortDescription": {"text": "Unused endpoint: POST /rl-cycle"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `POST /rl-cycle` 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-47e8b95e873c305e", "name": "Unused endpoint: GET /rl-versions", "shortDescription": {"text": "Unused endpoint: GET /rl-versions"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /rl-versions` 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-71afa5d02d29af26", "name": "Unused endpoint: DELETE /rl-reset", "shortDescription": {"text": "Unused endpoint: DELETE /rl-reset"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `DELETE /rl-reset` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ce56e3557769f7d", "name": "Unused endpoint: GET /mp-data-status", "shortDescription": {"text": "Unused endpoint: GET /mp-data-status"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-data-status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1549bdb6dace4105", "name": "Unused endpoint: GET /mp-signals", "shortDescription": {"text": "Unused endpoint: GET /mp-signals"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-signals` 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-957990d655abb6b2", "name": "Unused endpoint: GET /mp-open-signal", "shortDescription": {"text": "Unused endpoint: GET /mp-open-signal"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-open-signal` 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-0b3cc1bdbf6036ae", "name": "Unused endpoint: GET /mp-agent-context", "shortDescription": {"text": "Unused endpoint: GET /mp-agent-context"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-agent-context` 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-86ccc1965c770d13", "name": "Unused endpoint: GET /mp-dashboard", "shortDescription": {"text": "Unused endpoint: GET /mp-dashboard"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-dashboard` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5702ad396060327", "name": "Unused endpoint: GET /mp-analytics", "shortDescription": {"text": "Unused endpoint: GET /mp-analytics"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-analytics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59cb72451343edea", "name": "Unused endpoint: GET /mp-multi-tf-profile", "shortDescription": {"text": "Unused endpoint: GET /mp-multi-tf-profile"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-multi-tf-profile` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1953be23a672cbdd", "name": "Unused endpoint: GET /mp-regime-history", "shortDescription": {"text": "Unused endpoint: GET /mp-regime-history"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-regime-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-661568b60c0563d8", "name": "Unused endpoint: GET /mp-setup-performance", "shortDescription": {"text": "Unused endpoint: GET /mp-setup-performance"}, "fullDescription": {"text": "`backend/api/routers/auction_intelligence.py` declares `GET /mp-setup-performance` 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/17837"}, "properties": {"repository": "ramc2012/TradeBot", "repoUrl": "https://github.com/ramc2012/TradeBot", "branch": "main"}, "results": [{"ruleId": "scanner-8bba0733d73b1c49", "level": "note", "message": {"text": "Possibly dead Python function: is_in_trading_hours"}, "properties": {"repobilityId": "2682f7357603ee62", "scanner": "scanner-primary", "fingerprint": "8bba0733d73b1c49", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/common/time.py:29"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-18156562f03f6cc6", "level": "note", "message": {"text": "Possibly dead Python function: minutes_into_session"}, "properties": {"repobilityId": "79a26be75b3e1a1a", "scanner": "scanner-primary", "fingerprint": "18156562f03f6cc6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/common/time.py:36"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e8ae045df5604944", "level": "note", "message": {"text": "Possibly dead Python function: next_session_open"}, "properties": {"repobilityId": "ee453ec87729f344", "scanner": "scanner-primary", "fingerprint": "e8ae045df5604944", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/common/time.py:43"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27f2b9fd4aaeff5e", "level": "note", "message": {"text": "Possibly dead Python function: setup_logging"}, "properties": {"repobilityId": "e79074b18f293f2b", "scanner": "scanner-primary", "fingerprint": "27f2b9fd4aaeff5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/common/logging.py:7"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-091da72372ecf1c4", "level": "note", "message": {"text": "Possibly dead Python function: stream"}, "properties": {"repobilityId": "cd6b0a7c292eb1e8", "scanner": "scanner-primary", "fingerprint": "091da72372ecf1c4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/ingest/fyers_ws.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4491facaec698df", "level": "note", "message": {"text": "Possibly dead Python function: recent_df"}, "properties": {"repobilityId": "65871fd9ed16b66e", "scanner": "scanner-primary", "fingerprint": "b4491facaec698df", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/ingest/tick_buffer.py:20"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bb971f2bf7de7250", "level": "note", "message": {"text": "Possibly dead Python function: session_df"}, "properties": {"repobilityId": "e086b6800c5d008b", "scanner": "scanner-primary", "fingerprint": "bb971f2bf7de7250", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/ingest/tick_buffer.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-841dd3ac4210f0c7", "level": "note", "message": {"text": "Possibly dead Python function: enqueue"}, "properties": {"repobilityId": "53fcaa68966bb018", "scanner": "scanner-primary", "fingerprint": "841dd3ac4210f0c7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/ingest/tick_writer.py:24"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a7ca0ae0da90b83d", "level": "note", "message": {"text": "Possibly dead Python function: init_pool"}, "properties": {"repobilityId": "0ec896e1da06e568", "scanner": "scanner-primary", "fingerprint": "a7ca0ae0da90b83d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/db.py:11"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0c5b43e80348064c", "level": "note", "message": {"text": "Possibly dead Python function: close_pool"}, "properties": {"repobilityId": "7bf289453edf35a6", "scanner": "scanner-primary", "fingerprint": "0c5b43e80348064c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/db.py:30"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbf213757c83fd02", "level": "note", "message": {"text": "Possibly dead Python function: insert_tick"}, "properties": {"repobilityId": "23545fc9895b904a", "scanner": "scanner-primary", "fingerprint": "dbf213757c83fd02", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:13"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e11da3f7b58622e", "level": "note", "message": {"text": "Possibly dead Python function: recent_ticks"}, "properties": {"repobilityId": "06b0097894686c66", "scanner": "scanner-primary", "fingerprint": "8e11da3f7b58622e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:46"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-31bdffc16c618361", "level": "note", "message": {"text": "Possibly dead Python function: session_ticks"}, "properties": {"repobilityId": "a7b073085032e68c", "scanner": "scanner-primary", "fingerprint": "31bdffc16c618361", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c8b920b400c1737", "level": "note", "message": {"text": "Possibly dead Python function: insert_order"}, "properties": {"repobilityId": "1db879817ab16046", "scanner": "scanner-primary", "fingerprint": "7c8b920b400c1737", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:97"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6dcccb067076fecd", "level": "note", "message": {"text": "Possibly dead Python function: insert_position"}, "properties": {"repobilityId": "e771c44581656197", "scanner": "scanner-primary", "fingerprint": "6dcccb067076fecd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7d13957d2baf4de4", "level": "note", "message": {"text": "Possibly dead Python function: close_position"}, "properties": {"repobilityId": "8ff14179eb0d5e3c", "scanner": "scanner-primary", "fingerprint": "7d13957d2baf4de4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:128"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f94e8b47854005ac", "level": "note", "message": {"text": "Possibly dead Python function: upsert_daily_pnl"}, "properties": {"repobilityId": "25b7bd1ad23cfa72", "scanner": "scanner-primary", "fingerprint": "f94e8b47854005ac", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:149"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3aa346bfb7aa4ab3", "level": "note", "message": {"text": "Possibly dead Python function: insert_run"}, "properties": {"repobilityId": "1670ca4136c57da5", "scanner": "scanner-primary", "fingerprint": "3aa346bfb7aa4ab3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/persistence/repository.py:177"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-471a3300d84b13c1", "level": "note", "message": {"text": "Possibly dead Python function: compute_mp_state"}, "properties": {"repobilityId": "4d75aeae28af162c", "scanner": "scanner-primary", "fingerprint": "471a3300d84b13c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/features/mp_state.py:77"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-095f874add713147", "level": "note", "message": {"text": "Possibly dead Python function: compute_session_mp"}, "properties": {"repobilityId": "50c5c998d04d7aad", "scanner": "scanner-primary", "fingerprint": "095f874add713147", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/src/sniper_paper/features/mp_state.py:110"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-25bd607fba36ec58", "level": "note", "message": {"text": "Possibly dead Python function: serve_layout"}, "properties": {"repobilityId": "32c36fde3c457e79", "scanner": "scanner-primary", "fingerprint": "25bd607fba36ec58", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/directional_options/dashboard.py:41"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5ca28cba5acaad7a", "level": "note", "message": {"text": "Possibly dead Python function: fit_isotonic"}, "properties": {"repobilityId": "84d623dfab6a5f40", "scanner": "scanner-primary", "fingerprint": "5ca28cba5acaad7a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/directional_options/calibration.py:111"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d18907db52904c05", "level": "note", "message": {"text": "Possibly dead Python function: brier_skill"}, "properties": {"repobilityId": "0bcf86890289d967", "scanner": "scanner-primary", "fingerprint": "d18907db52904c05", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/directional_options/calibration.py:162"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a719a8206f57aa0", "level": "note", "message": {"text": "Possibly dead Python function: load_calibrator"}, "properties": {"repobilityId": "f254b0c510b34397", "scanner": "scanner-primary", "fingerprint": "7a719a8206f57aa0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/directional_options/calibration.py:185"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ec6d8102b7f3ead", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/layout/Sidebar.tsx:158"}, "properties": {"repobilityId": "4fbed5d8e51dbbe4", "scanner": "scanner-primary", "fingerprint": "9ec6d8102b7f3ead", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9a3204c450f7fea2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/gann-tp-delta/GannTPDeltaWorkspace.tsx:322"}, "properties": {"repobilityId": "b774097604451dd9", "scanner": "scanner-primary", "fingerprint": "9a3204c450f7fea2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c7da233c64baae92", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/strategy/desk-helpers.tsx:225"}, "properties": {"repobilityId": "7bdff95399bf5eb1", "scanner": "scanner-primary", "fingerprint": "c7da233c64baae92", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-04a6f08cff4a08ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/fractal-market-profile/FractalMarketProfileWorkspace.tsx:1302"}, "properties": {"repobilityId": "3e2327863e8130b6", "scanner": "scanner-primary", "fingerprint": "04a6f08cff4a08ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3b8853d0fc66fe19", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/orderflow/OrderflowWorkbench.tsx:340"}, "properties": {"repobilityId": "8e05a03a8d3f024b", "scanner": "scanner-primary", "fingerprint": "3b8853d0fc66fe19", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-79f4b3cf7959e4a7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx:251"}, "properties": {"repobilityId": "97d53a444bc0463c", "scanner": "scanner-primary", "fingerprint": "79f4b3cf7959e4a7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d503643e771a38eb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/system/SystemHealthBoard.tsx:122"}, "properties": {"repobilityId": "69c50ed74dc57197", "scanner": "scanner-primary", "fingerprint": "d503643e771a38eb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-292c5805b603efbe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceWorkspace.tsx:1214"}, "properties": {"repobilityId": "c67315783c2972c9", "scanner": "scanner-primary", "fingerprint": "292c5805b603efbe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b0c2fe5a9597ff5b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/auction-intelligence/AuctionIntelligenceOperatorView.tsx:975"}, "properties": {"repobilityId": "16df0f05480d57e5", "scanner": "scanner-primary", "fingerprint": "b0c2fe5a9597ff5b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc535345846cd72c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/macro-research/MacroResearchWorkspace.tsx:617"}, "properties": {"repobilityId": "a06e29d6b925e213", "scanner": "scanner-primary", "fingerprint": "cc535345846cd72c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0516e3d0099a7358", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/settings/page.tsx:79"}, "properties": {"repobilityId": "c0859116246e2c1e", "scanner": "scanner-primary", "fingerprint": "0516e3d0099a7358", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-93c868812b8898a5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/commodity/live/page.tsx:895"}, "properties": {"repobilityId": "aa154752c0c5d646", "scanner": "scanner-primary", "fingerprint": "93c868812b8898a5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d90da184aec5826e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/analysis/page.tsx:283"}, "properties": {"repobilityId": "37f48779a3acbf19", "scanner": "scanner-primary", "fingerprint": "d90da184aec5826e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7d210d0f6df79cd3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/app/market/page.tsx:523"}, "properties": {"repobilityId": "c5d3aec43a04b6a5", "scanner": "scanner-primary", "fingerprint": "7d210d0f6df79cd3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-df78b816fd0dbe79", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/settings/SettingsPanel.tsx:178"}, "properties": {"repobilityId": "def2a61d74a4be79", "scanner": "scanner-primary", "fingerprint": "df78b816fd0dbe79", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f63be4dcdab9d6a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/layout/Sidebar.tsx:227"}, "properties": {"repobilityId": "ebf2cf36165aa705", "scanner": "scanner-primary", "fingerprint": "0f63be4dcdab9d6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a31a14ed22255daa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-gann-tp-delta/GannTPDeltaWorkspace.tsx:322"}, "properties": {"repobilityId": "e2ed3dab709b166b", "scanner": "scanner-primary", "fingerprint": "a31a14ed22255daa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ad6d234928e92aef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-macro-research/MacroResearchWorkspace.tsx:617"}, "properties": {"repobilityId": "da80df440b739b44", "scanner": "scanner-primary", "fingerprint": "ad6d234928e92aef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c0848d20c5b8e849", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/agent/AgentMonitor.tsx:524"}, "properties": {"repobilityId": "d04663efee948291", "scanner": "scanner-primary", "fingerprint": "c0848d20c5b8e849", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a3a7becb1c56105", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx:340"}, "properties": {"repobilityId": "73631a8c7d69340b", "scanner": "scanner-primary", "fingerprint": "8a3a7becb1c56105", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8e1de86ed80f2558", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboard.tsx:251"}, "properties": {"repobilityId": "2b066989f384693c", "scanner": "scanner-primary", "fingerprint": "8e1de86ed80f2558", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3b0664de1231d301", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-strategy/desk-helpers.tsx:225"}, "properties": {"repobilityId": "ce26e1a2b8f7a395", "scanner": "scanner-primary", "fingerprint": "3b0664de1231d301", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-86861bc280d4cdf0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-fractal-market-profile/FractalMarketProfileWorkspace.tsx:1264"}, "properties": {"repobilityId": "9337f7ef9fc11780", "scanner": "scanner-primary", "fingerprint": "86861bc280d4cdf0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0cc0549252b17dd1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/ServiceHealthBoard.tsx:140"}, "properties": {"repobilityId": "81f868960859750b", "scanner": "scanner-primary", "fingerprint": "0cc0549252b17dd1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb3b94de661f5b2b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/system/UpstoxBudgetCard.tsx:261"}, "properties": {"repobilityId": "5324af4215c2430c", "scanner": "scanner-primary", "fingerprint": "eb3b94de661f5b2b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4f3a56484778ed38", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-layout/Sidebar.tsx:156"}, "properties": {"repobilityId": "76ebfc5d2ff9eac5", "scanner": "scanner-primary", "fingerprint": "4f3a56484778ed38", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0630dab5238d5473", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-system/SystemHealthBoard.tsx:122"}, "properties": {"repobilityId": "665a06f668771310", "scanner": "scanner-primary", "fingerprint": "0630dab5238d5473", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ff637012e9c3f13", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/sector/SectorDesk.tsx:450"}, "properties": {"repobilityId": "f90722bc3ed932ee", "scanner": "scanner-primary", "fingerprint": "4ff637012e9c3f13", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3d647c93eb4b7aa1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/strategies/overview/LaneSummaryCard.tsx:90"}, "properties": {"repobilityId": "d02d2b610d51cb3f", "scanner": "scanner-primary", "fingerprint": "3d647c93eb4b7aa1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88f37bef8de88ecf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/research-monitor/ResearchMonitorBoard.tsx:379"}, "properties": {"repobilityId": "de832af625d40f18", "scanner": "scanner-primary", "fingerprint": "88f37bef8de88ecf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-be4b9de80d8fbfdd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceWorkspace.tsx:1214"}, "properties": {"repobilityId": "096d70f62dbebfe8", "scanner": "scanner-primary", "fingerprint": "be4b9de80d8fbfdd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1df5049affc21656", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceOperatorView.tsx:975"}, "properties": {"repobilityId": "0faa68c5d4ac3aa0", "scanner": "scanner-primary", "fingerprint": "1df5049affc21656", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15d81ff714deae3c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/components/trading/ExecutionDesk.tsx:416"}, "properties": {"repobilityId": "d8adbbecb2ea7806", "scanner": "scanner-primary", "fingerprint": "15d81ff714deae3c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-805a24be7da22cfb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend-v2/src/app/layout.tsx:21"}, "properties": {"repobilityId": "da1ebe626cdcd1d2", "scanner": "scanner-primary", "fingerprint": "805a24be7da22cfb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-fe9289d011391f2e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/market/page.tsx:523"}, "properties": {"repobilityId": "3fcc00ab752420bc", "scanner": "scanner-primary", "fingerprint": "fe9289d011391f2e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b332506ae334cd8f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend-v2/src/app/strategies/commodity/live/page.tsx:891"}, "properties": {"repobilityId": "a813500442690fa9", "scanner": "scanner-primary", "fingerprint": "b332506ae334cd8f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-70c00624464c9039", "level": "warning", "message": {"text": "Privileged port 8 in use"}, "properties": {"repobilityId": "8e03f5632e703751", "scanner": "scanner-primary", "fingerprint": "70c00624464c9039", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2317cb2abdafed43", "level": "warning", "message": {"text": "Privileged port 50 in use"}, "properties": {"repobilityId": "da61f654c07ea7a9", "scanner": "scanner-primary", "fingerprint": "2317cb2abdafed43", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8909d6f7ee23ee69", "level": "warning", "message": {"text": "Privileged port 9 in use"}, "properties": {"repobilityId": "31590a6ba3409390", "scanner": "scanner-primary", "fingerprint": "8909d6f7ee23ee69", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f4c5f70db6ba4b0c", "level": "warning", "message": {"text": "Privileged port 15 in use"}, "properties": {"repobilityId": "3340f9a170f285cd", "scanner": "scanner-primary", "fingerprint": "f4c5f70db6ba4b0c", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e6f201d217912b69", "level": "warning", "message": {"text": "Privileged port 30 in use"}, "properties": {"repobilityId": "54f172e7d16fc662", "scanner": "scanner-primary", "fingerprint": "e6f201d217912b69", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b81b62f4b4b9c979", "level": "warning", "message": {"text": "Privileged port 23 in use"}, "properties": {"repobilityId": "a1230e3dfc4becfa", "scanner": "scanner-primary", "fingerprint": "b81b62f4b4b9c979", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-paper/configs/paper.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc79f95c223076c5", "level": "warning", "message": {"text": "Privileged port 20 in use"}, "properties": {"repobilityId": "a59f3e53d617e0f8", "scanner": "scanner-primary", "fingerprint": "fc79f95c223076c5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sniper-phase0/configs/features.yaml"}, "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-03a0fc354b5f6ad9", "level": "warning", "message": {"text": "Dockerfile runs as root: frontend-v2/Dockerfile"}, "properties": {"repobilityId": "3015a84d516bb2ac", "scanner": "scanner-primary", "fingerprint": "03a0fc354b5f6ad9", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-70c67acc3f3189b8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "bdddf23a076fd01e", "scanner": "scanner-primary", "fingerprint": "70c67acc3f3189b8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend-v2/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f66ad88286ca30a", "level": "warning", "message": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "properties": {"repobilityId": "7afd2b0e8a8c9eeb", "scanner": "scanner-primary", "fingerprint": "1f66ad88286ca30a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-8cd20d539467d2c5", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "06b87ac9439092d6", "scanner": "scanner-primary", "fingerprint": "8cd20d539467d2c5", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-6e3bcf67d9c408e4", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/src/components/auth/AppTokenGate.tsx:35"}, "properties": {"repobilityId": "096a5b1841bb98df", "scanner": "scanner-primary", "fingerprint": "6e3bcf67d9c408e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/components/auth/AppTokenGate.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-cd4a364dd890547d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend-v2/src/components/v1-auth/AppTokenGate.tsx:35"}, "properties": {"repobilityId": "c33000e0a8a4f580", "scanner": "scanner-primary", "fingerprint": "cd4a364dd890547d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend-v2/src/components/v1-auth/AppTokenGate.tsx"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-c858a9a20c6b1457", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend-v2/src/app/layout.tsx:21"}, "properties": {"repobilityId": "0b188d37bdb2b33e", "scanner": "scanner-primary", "fingerprint": "c858a9a20c6b1457", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend-v2/src/app/layout.tsx"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-5b119e7338f41d1a", "level": "note", "message": {"text": "Very large file: frontend/src/components/fractal-market-profile/FractalMarketProfileWorkspace.tsx (2795 lines)"}, "properties": {"repobilityId": "b80df9f9f74082c8", "scanner": "scanner-primary", "fingerprint": "5b119e7338f41d1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-905fc09cc571444d", "level": "note", "message": {"text": "Very large file: frontend/src/components/orderflow/OrderflowWorkbench.tsx (1194 lines)"}, "properties": {"repobilityId": "4bdb2fed9f7b413b", "scanner": "scanner-primary", "fingerprint": "905fc09cc571444d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a41b9cce7f80b145", "level": "note", "message": {"text": "Very large file: frontend/src/components/mp-intelligence/MPIntelligenceDashboard.tsx (1777 lines)"}, "properties": {"repobilityId": "df31984e8ce57550", "scanner": "scanner-primary", "fingerprint": "a41b9cce7f80b145", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-44147a39f3eb10f3", "level": "note", "message": {"text": "Very large file: frontend/src/components/sector-interaction/SectorInteractionWorkspace.tsx (1852 lines)"}, "properties": {"repobilityId": "518f128b04467315", "scanner": "scanner-primary", "fingerprint": "44147a39f3eb10f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-296f012280671a60", "level": "note", "message": {"text": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 lines)"}, "properties": {"repobilityId": "c3669c2c6bed00c8", "scanner": "scanner-primary", "fingerprint": "296f012280671a60", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b7ddef252f81e230", "level": "note", "message": {"text": "Very large file: frontend/src/components/auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 lines)"}, "properties": {"repobilityId": "71ef7e07b0a0d90e", "scanner": "scanner-primary", "fingerprint": "b7ddef252f81e230", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-54022dcbe68bff4d", "level": "note", "message": {"text": "Very large file: frontend/src/app/settings/page.tsx (1532 lines)"}, "properties": {"repobilityId": "2b2cfb98cbdad376", "scanner": "scanner-primary", "fingerprint": "54022dcbe68bff4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67c4677051ede597", "level": "note", "message": {"text": "Very large file: frontend/src/app/commodity/live/page.tsx (3486 lines)"}, "properties": {"repobilityId": "d615df1a5a10feb8", "scanner": "scanner-primary", "fingerprint": "67c4677051ede597", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-083168a5fccd0737", "level": "note", "message": {"text": "Very large file: frontend/src/app/analysis/page.tsx (1841 lines)"}, "properties": {"repobilityId": "4617de0510ea761f", "scanner": "scanner-primary", "fingerprint": "083168a5fccd0737", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6cde9d419e5a4172", "level": "note", "message": {"text": "Very large file: frontend/src/app/market/page.tsx (2478 lines)"}, "properties": {"repobilityId": "350f7ac2e2db7925", "scanner": "scanner-primary", "fingerprint": "6cde9d419e5a4172", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0bf811db09559a37", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/settings/SettingsPanel.tsx (1685 lines)"}, "properties": {"repobilityId": "320f59118dd37743", "scanner": "scanner-primary", "fingerprint": "0bf811db09559a37", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1dde4444c8d1b8b", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-orderflow/OrderflowWorkbench.tsx (1194 lines)"}, "properties": {"repobilityId": "fb6209a20bd83354", "scanner": "scanner-primary", "fingerprint": "b1dde4444c8d1b8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-763422a276f20b4d", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-mp-intelligence/MPIntelligenceDashboard.tsx (1777 lines)"}, "properties": {"repobilityId": "0ab821201d255770", "scanner": "scanner-primary", "fingerprint": "763422a276f20b4d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c1d6a7a825564d73", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-fractal-market-profile/FractalMarketProfileWorkspace.tsx (2736 lines)"}, "properties": {"repobilityId": "5b95c121c276675f", "scanner": "scanner-primary", "fingerprint": "c1d6a7a825564d73", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff4c8670b83adbf3", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/research-monitor/ResearchMonitorBoard.tsx (1560 lines)"}, "properties": {"repobilityId": "0f1642d8001acab8", "scanner": "scanner-primary", "fingerprint": "ff4c8670b83adbf3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-83aef90a7832ff53", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceWorkspace.tsx (3049 lines)"}, "properties": {"repobilityId": "0fc2456605a8a867", "scanner": "scanner-primary", "fingerprint": "83aef90a7832ff53", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a572cc6feca37feb", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-auction-intelligence/AuctionIntelligenceOperatorView.tsx (2543 lines)"}, "properties": {"repobilityId": "0e9589d40b28afcb", "scanner": "scanner-primary", "fingerprint": "a572cc6feca37feb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ebc1e8781265b2e1", "level": "note", "message": {"text": "Very large file: frontend-v2/src/components/v1-sector-interaction/SectorInteractionWorkspace.tsx (1852 lines)"}, "properties": {"repobilityId": "c59b1ebbe08430c2", "scanner": "scanner-primary", "fingerprint": "ebc1e8781265b2e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-181e50798f01aa8e", "level": "note", "message": {"text": "Very large file: frontend-v2/src/app/market/page.tsx (2478 lines)"}, "properties": {"repobilityId": "b33c1ff7d1f5c999", "scanner": "scanner-primary", "fingerprint": "181e50798f01aa8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d57ca387402eb738", "level": "note", "message": {"text": "Very large file: frontend-v2/src/app/strategies/commodity/live/page.tsx (3455 lines)"}, "properties": {"repobilityId": "e349b9d5d55c2454", "scanner": "scanner-primary", "fingerprint": "d57ca387402eb738", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9aeec2e225da0251", "level": "note", "message": {"text": "Very large file: backend/tests/test_fractal_market_profile.py (1481 lines)"}, "properties": {"repobilityId": "97436000c69c5b43", "scanner": "scanner-primary", "fingerprint": "9aeec2e225da0251", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f7c942d9fa34e87", "level": "note", "message": {"text": "Very large file: backend/tests/test_paper_strategy_agent.py (1612 lines)"}, "properties": {"repobilityId": "14e1ed39f0027a24", "scanner": "scanner-primary", "fingerprint": "1f7c942d9fa34e87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7b9976b9e661fcda", "level": "note", "message": {"text": "Very large file: backend/tests/test_commodity_strategy_agent.py (2030 lines)"}, "properties": {"repobilityId": "034634aa1bc31932", "scanner": "scanner-primary", "fingerprint": "7b9976b9e661fcda", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5af4b2c7e04a937e", "level": "note", "message": {"text": "Very large file: backend/tests/test_auction_intelligence.py (3273 lines)"}, "properties": {"repobilityId": "3ec325c1e0837833", "scanner": "scanner-primary", "fingerprint": "5af4b2c7e04a937e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dd801543241fe066", "level": "note", "message": {"text": "Very large file: backend/api/routers/auction_intelligence.py (2787 lines)"}, "properties": {"repobilityId": "04842feb8896a3ff", "scanner": "scanner-primary", "fingerprint": "dd801543241fe066", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8b70c2fce35eef61", "level": "note", "message": {"text": "Very large file: backend/api/routers/auth.py (2047 lines)"}, "properties": {"repobilityId": "ea20dc3152da7c74", "scanner": "scanner-primary", "fingerprint": "8b70c2fce35eef61", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fac535ad97a14569", "level": "note", "message": {"text": "Very large file: backend/api/routers/strategy.py (1308 lines)"}, "properties": {"repobilityId": "3afb51bd4419f908", "scanner": "scanner-primary", "fingerprint": "fac535ad97a14569", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-68a191075856f00e", "level": "note", "message": {"text": "Very large file: backend/api/routers/market.py (1332 lines)"}, "properties": {"repobilityId": "2f184bbe720fc826", "scanner": "scanner-primary", "fingerprint": "68a191075856f00e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dc76856a9c230549", "level": "note", "message": {"text": "Very large file: backend/api/routers/analysis.py (1529 lines)"}, "properties": {"repobilityId": "9976ccf10c834c0b", "scanner": "scanner-primary", "fingerprint": "dc76856a9c230549", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-63af94a45ce00596", "level": "note", "message": {"text": "Very large file: backend/paper_engine/commodity_strategy_agent.py (3323 lines)"}, "properties": {"repobilityId": "eae8c677ae0151b2", "scanner": "scanner-primary", "fingerprint": "63af94a45ce00596", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d71bf55e844ce870", "level": "note", "message": {"text": "Very large file: backend/paper_engine/strategy_agent_entries.py (1242 lines)"}, "properties": {"repobilityId": "c4fe276d6e4ca8a6", "scanner": "scanner-primary", "fingerprint": "d71bf55e844ce870", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b57fd7a3b361712", "level": "note", "message": {"text": "Very large file: backend/paper_engine/strategy_agent.py (5278 lines)"}, "properties": {"repobilityId": "817d610bfe8feacd", "scanner": "scanner-primary", "fingerprint": "3b57fd7a3b361712", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ddafa0ccb2f867d4", "level": "note", "message": {"text": "Very large file: backend/sector_interaction/india_live.py (1160 lines)"}, "properties": {"repobilityId": "bbf5b40c4cf5a0f0", "scanner": "scanner-primary", "fingerprint": "ddafa0ccb2f867d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0917b261d6d0bd5f", "level": "note", "message": {"text": "Very large file: backend/sector_interaction/service.py (1381 lines)"}, "properties": {"repobilityId": "e3a1625bb63b5bb6", "scanner": "scanner-primary", "fingerprint": "0917b261d6d0bd5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac59fdac38db6052", "level": "note", "message": {"text": "Very large file: backend/analysis/expansion_analysis.py (1255 lines)"}, "properties": {"repobilityId": "1459f9281c2f3882", "scanner": "scanner-primary", "fingerprint": "ac59fdac38db6052", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9a1dd9d595ee82d1", "level": "note", "message": {"text": "Very large file: backend/analysis/backtest.py (1540 lines)"}, "properties": {"repobilityId": "6450bf4e340c5b44", "scanner": "scanner-primary", "fingerprint": "9a1dd9d595ee82d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-268578c88bcea5f9", "level": "note", "message": {"text": "Very large file: backend/fractal_market_profile/service.py (2426 lines)"}, "properties": {"repobilityId": "bbb4df8374add4b2", "scanner": "scanner-primary", "fingerprint": "268578c88bcea5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-dead6950029bf952", "level": "note", "message": {"text": "Very large file: backend/auction_intelligence/live.py (1725 lines)"}, "properties": {"repobilityId": "d7523c4251dcbdf9", "scanner": "scanner-primary", "fingerprint": "dead6950029bf952", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1bdc4336e47b1cec", "level": "note", "message": {"text": "Very large file: backend/market_data/atm_watchlist.py (3035 lines)"}, "properties": {"repobilityId": "eb77fb5ffbe64dff", "scanner": "scanner-primary", "fingerprint": "1bdc4336e47b1cec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b42b2de08194b947", "level": "note", "message": {"text": "Very large file: backend/market_data/fno_analytics.py (1333 lines)"}, "properties": {"repobilityId": "edc8d933febcc68f", "scanner": "scanner-primary", "fingerprint": "b42b2de08194b947", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-206c170fddc00cc0", "level": "note", "message": {"text": "Very large file: backend/market_data/commodity_atm_watchlist.py (1331 lines)"}, "properties": {"repobilityId": "68bf7ae40ef059cf", "scanner": "scanner-primary", "fingerprint": "206c170fddc00cc0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d1604a7dce965a0a", "level": "note", "message": {"text": "Very large file: backend/market_data/market_intelligence_runtime.py (1261 lines)"}, "properties": {"repobilityId": "114a570aa54e07a4", "scanner": "scanner-primary", "fingerprint": "d1604a7dce965a0a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "f6bf5b85ad0e2e89", "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": "2a0cc2402b721c97", "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": "3fede814e151d415", "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": "bf16495b39b7fcbb", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "79c16303d8735eb9", "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": "b99be39ee37cd841", "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": "d543f09ab8534df2", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ebb113311e28db42", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/charts/ChartsWorkbench.tsx:87"}, "properties": {"repobilityId": "6baa53d24a542aac", "scanner": "scanner-primary", "fingerprint": "ebb113311e28db42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52e216ebe195ec56", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/trading/StrategyDashboard.tsx:390"}, "properties": {"repobilityId": "1f031933261bb880", "scanner": "scanner-primary", "fingerprint": "52e216ebe195ec56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d81e5f882e92f9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/app/commodity/live/page.tsx:913"}, "properties": {"repobilityId": "43ac9111d9512bfd", "scanner": "scanner-primary", "fingerprint": "4d81e5f882e92f9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06aeab6df94f50b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/reports-ledger.ts:145"}, "properties": {"repobilityId": "b6bae271c47c40f9", "scanner": "scanner-primary", "fingerprint": "06aeab6df94f50b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1db965a6bc0f27bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/lib/websocket.ts:50"}, "properties": {"repobilityId": "a99ee1f12329b97f", "scanner": "scanner-primary", "fingerprint": "1db965a6bc0f27bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cca5fad870c664aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend-v2/next.config.js:23"}, "properties": {"repobilityId": "1f48cb4c15d91976", "scanner": "scanner-primary", "fingerprint": "cca5fad870c664aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3b89a635aa80439", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend-v2/src/components/v1-charts/ChartsWorkbench.tsx:87"}, "properties": {"repobilityId": "2ccd5eb00e3a2c7e", "scanner": "scanner-primary", "fingerprint": "e3b89a635aa80439", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b751c5df41c77430", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend-v2/src/components/strategies/nse/NseDesk.tsx:306"}, "properties": {"repobilityId": "8486d9e457ec62ea", "scanner": "scanner-primary", "fingerprint": "b751c5df41c77430", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01961c229533ba5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend-v2/src/app/strategies/commodity/live/page.tsx:909"}, "properties": {"repobilityId": "f3ca340913e0bc82", "scanner": "scanner-primary", "fingerprint": "01961c229533ba5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b77794e8072130af", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend-v2/src/lib/runtime-url.ts:29"}, "properties": {"repobilityId": "5c5d228f9cda5f54", "scanner": "scanner-primary", "fingerprint": "b77794e8072130af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c944850de6191fc2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/reports-ledger.ts:145"}, "properties": {"repobilityId": "755c9faba655bf83", "scanner": "scanner-primary", "fingerprint": "c944850de6191fc2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13bc35dc7fb4aeb4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend-v2/src/lib/websocket.ts:50"}, "properties": {"repobilityId": "267b9aef73a27931", "scanner": "scanner-primary", "fingerprint": "13bc35dc7fb4aeb4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3956675b3fa2769f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/main.py:69"}, "properties": {"repobilityId": "b964ab45e1697824", "scanner": "scanner-primary", "fingerprint": "3956675b3fa2769f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db3b1c8a2e8e2304", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/directional_options/config.py:49"}, "properties": {"repobilityId": "58450261c6a9cea5", "scanner": "scanner-primary", "fingerprint": "db3b1c8a2e8e2304", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2f290d745bd4e17", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/directional_options/selector.py:627"}, "properties": {"repobilityId": "acba2372df88177e", "scanner": "scanner-primary", "fingerprint": "c2f290d745bd4e17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05cc4cad3c26990f", "level": "note", "message": {"text": "Legacy-named symbol `S_inv_old` in backend/directional_options/policy.py:305"}, "properties": {"repobilityId": "6c7caf2cdfe57634", "scanner": "scanner-primary", "fingerprint": "05cc4cad3c26990f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c8908dc4ffba10db", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/directional_options/policy.py:119"}, "properties": {"repobilityId": "c5516de6f5b2347e", "scanner": "scanner-primary", "fingerprint": "c8908dc4ffba10db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cb0bd071795e20a", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/directional_options/signals.py:32"}, "properties": {"repobilityId": "ec57110f98364a12", "scanner": "scanner-primary", "fingerprint": "1cb0bd071795e20a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bed8a8bb4db2ec7", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/directional_options/chain_analytics.py:39"}, "properties": {"repobilityId": "7ad2ef108d0cef71", "scanner": "scanner-primary", "fingerprint": "0bed8a8bb4db2ec7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13dd4659523d583c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/directional_options/paper.py:128"}, "properties": {"repobilityId": "46606050f3106bd6", "scanner": "scanner-primary", "fingerprint": "13dd4659523d583c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84f9b7eb69e00650", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/directional_options/regime.py:66"}, "properties": {"repobilityId": "d1c3e56e9a860d52", "scanner": "scanner-primary", "fingerprint": "84f9b7eb69e00650", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55acca9f3efd81d9", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/directional_options/service.py:298"}, "properties": {"repobilityId": "6b5ef5e1be34f822", "scanner": "scanner-primary", "fingerprint": "55acca9f3efd81d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d93bb61d1ee87b97", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/gann_tp_delta/config.py:78"}, "properties": {"repobilityId": "48a6ea424bfd9a51", "scanner": "scanner-primary", "fingerprint": "d93bb61d1ee87b97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38ca190b62c3be15", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/gann_tp_delta/data.py:31"}, "properties": {"repobilityId": "547054a37263d11a", "scanner": "scanner-primary", "fingerprint": "38ca190b62c3be15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2765d58bb56b4f5b", "level": "note", "message": {"text": "Legacy-named symbol `_dir_summary_test_unused` in backend/tests/test_directional_summary_realized.py:36"}, "properties": {"repobilityId": "1efbc106e11db312", "scanner": "scanner-primary", "fingerprint": "2765d58bb56b4f5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-937de0c2112d06e6", "level": "note", "message": {"text": "Legacy-named symbol `_ai_discipline_test_unused` in backend/tests/test_auction_position_discipline.py:14"}, "properties": {"repobilityId": "a9f47530299a2ca1", "scanner": "scanner-primary", "fingerprint": "937de0c2112d06e6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa2454e4de75208a", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/analytics/sector.py:594"}, "properties": {"repobilityId": "e18a790a5dddfc21", "scanner": "scanner-primary", "fingerprint": "aa2454e4de75208a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf6d3849cd29d18c", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/api/websockets/ticks.py:417"}, "properties": {"repobilityId": "2d91d5be13690e2d", "scanner": "scanner-primary", "fingerprint": "cf6d3849cd29d18c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d383c23316696629", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/api/routers/auth.py:1197"}, "properties": {"repobilityId": "431c06de6b6b8aba", "scanner": "scanner-primary", "fingerprint": "d383c23316696629", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98c6b94e1a7383f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/api/routers/strategy.py:738"}, "properties": {"repobilityId": "02666e0d2004c7f8", "scanner": "scanner-primary", "fingerprint": "98c6b94e1a7383f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17ff62624d8cca53", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/api/routers/orderflow.py:687"}, "properties": {"repobilityId": "0714e2e5443233f0", "scanner": "scanner-primary", "fingerprint": "17ff62624d8cca53", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c534d19c9ffc9c1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/api/routers/charts.py:32"}, "properties": {"repobilityId": "0ac283bb735550f7", "scanner": "scanner-primary", "fingerprint": "0c534d19c9ffc9c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17b10ad199fc8f7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/audits/replay.py:26"}, "properties": {"repobilityId": "8a1badcbb143e273", "scanner": "scanner-primary", "fingerprint": "17b10ad199fc8f7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebf45f7f91fb57ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/audits/lanes/s1_atm_30m_macd.py:127"}, "properties": {"repobilityId": "5f0f587ae6a30c7d", "scanner": "scanner-primary", "fingerprint": "ebf45f7f91fb57ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e44652114696eab2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/scripts/research_nifty_atm_renko_sequential.py:230"}, "properties": {"repobilityId": "0c6983e9e52bcb2f", "scanner": "scanner-primary", "fingerprint": "e44652114696eab2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e4bc71457387b2f", "level": "note", "message": {"text": "Legacy-named symbol `research_nifty_per_option_renko_v2` in backend/scripts/research_nifty_per_option_renko_v2.py:17"}, "properties": {"repobilityId": "990967e363ace593", "scanner": "scanner-primary", "fingerprint": "6e4bc71457387b2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9e5a70edb1919f14", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/agent/trading_agent.py:65"}, "properties": {"repobilityId": "e0e5c19252135424", "scanner": "scanner-primary", "fingerprint": "9e5a70edb1919f14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83472e2d48d7f456", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/agent/strategy_config.py:29"}, "properties": {"repobilityId": "253e9760bfc6b53d", "scanner": "scanner-primary", "fingerprint": "83472e2d48d7f456", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1202af486a71dab8", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/paper_engine/commodity_strategy_agent.py:92"}, "properties": {"repobilityId": "5bd3f560421c305f", "scanner": "scanner-primary", "fingerprint": "1202af486a71dab8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41ee319810695188", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/paper_engine/strategy_agent_entries.py:478"}, "properties": {"repobilityId": "96369c04516a6773", "scanner": "scanner-primary", "fingerprint": "41ee319810695188", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a5b6c134f41bb60", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/paper_engine/strategy2_mp_of.py:78"}, "properties": {"repobilityId": "010c7af286f30f18", "scanner": "scanner-primary", "fingerprint": "3a5b6c134f41bb60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5e216dcf621bd0c", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/paper_engine/portfolio.py:437"}, "properties": {"repobilityId": "f7c2047cc9b2eed9", "scanner": "scanner-primary", "fingerprint": "e5e216dcf621bd0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65278bbcdfc0cfb8", "level": "none", "message": {"text": "Commented-code block (14 lines) in backend/paper_engine/strategy_agent.py:167"}, "properties": {"repobilityId": "81800c36f6fd28e0", "scanner": "scanner-primary", "fingerprint": "65278bbcdfc0cfb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7383445db8db1798", "level": "none", "message": {"text": "Commented-code block (21 lines) in backend/paper_engine/strategy_agent_exits.py:9"}, "properties": {"repobilityId": "725e2d75df5d6720", "scanner": "scanner-primary", "fingerprint": "7383445db8db1798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e44ccc6c7b289546", "level": "note", "message": {"text": "Legacy-named symbol `sector_interaction_ingestion_v1` in backend/sector_interaction/ingestion.py:16"}, "properties": {"repobilityId": "b4399141f124436e", "scanner": "scanner-primary", "fingerprint": "e44ccc6c7b289546", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fabddb6e8e463ad5", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/sector_interaction/india_live.py:397"}, "properties": {"repobilityId": "28731599cdfd57c4", "scanner": "scanner-primary", "fingerprint": "fabddb6e8e463ad5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6622b6eac003e211", "level": "note", "message": {"text": "Legacy-named symbol `sector_interaction_nse_constituents_v1` in backend/sector_interaction/nse_constituents.py:18"}, "properties": {"repobilityId": "e7b8d29dbfa4911b", "scanner": "scanner-primary", "fingerprint": "6622b6eac003e211", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9dcf4f68fe21419", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/analysis/safe_candles.py:100"}, "properties": {"repobilityId": "cef01efcd1584419", "scanner": "scanner-primary", "fingerprint": "e9dcf4f68fe21419", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c758fe134a7dbbb5", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/analysis/_commodity_wf_driver.py:87"}, "properties": {"repobilityId": "001746bf9a9c9180", "scanner": "scanner-primary", "fingerprint": "c758fe134a7dbbb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b664b6845ed523f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/analysis/s1_filter_synth.py:23"}, "properties": {"repobilityId": "941a51b1e2375682", "scanner": "scanner-primary", "fingerprint": "5b664b6845ed523f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17a5e173479aa96d", "level": "note", "message": {"text": "Legacy-named symbol `get_historical_data_v2` in backend/analysis/backtest.py:879"}, "properties": {"repobilityId": "15885463e546a2d0", "scanner": "scanner-primary", "fingerprint": "17a5e173479aa96d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-685760d23adb826d", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/analysis/backtest.py:684"}, "properties": {"repobilityId": "13afea9ca158c586", "scanner": "scanner-primary", "fingerprint": "685760d23adb826d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33cf15bad961856d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/analysis/instruments.py:248"}, "properties": {"repobilityId": "17a11c2ddddebbc2", "scanner": "scanner-primary", "fingerprint": "33cf15bad961856d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c72350ea65ce4195", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/analysis/walk_forward.py:26"}, "properties": {"repobilityId": "14a7527d56872ed6", "scanner": "scanner-primary", "fingerprint": "c72350ea65ce4195", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8e9c7b11b4ef71b", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/fractal_market_profile/paper.py:158"}, "properties": {"repobilityId": "caaa81b10d3ff694", "scanner": "scanner-primary", "fingerprint": "f8e9c7b11b4ef71b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-946637fe5d8e37c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/fractal_market_profile/service.py:980"}, "properties": {"repobilityId": "bac8c2080d24edea", "scanner": "scanner-primary", "fingerprint": "946637fe5d8e37c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7f17af8553b41e0", "level": "none", "message": {"text": "Commented-code block (10 lines) in backend/db/database.py:11"}, "properties": {"repobilityId": "e0be56f3e1ce03d1", "scanner": "scanner-primary", "fingerprint": "c7f17af8553b41e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f27f8a573d38668", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/core/config.py:69"}, "properties": {"repobilityId": "995294c817371166", "scanner": "scanner-primary", "fingerprint": "8f27f8a573d38668", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e6f8fef460b0bbf", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/auction_intelligence/live.py:531"}, "properties": {"repobilityId": "f56f62ca7aa97140", "scanner": "scanner-primary", "fingerprint": "7e6f8fef460b0bbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1212c6e55ad1a714", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/auction_intelligence/automation.py:179"}, "properties": {"repobilityId": "9e76fd8ee1f9b9f8", "scanner": "scanner-primary", "fingerprint": "1212c6e55ad1a714", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-714bbf7ed9a3346f", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/auction_intelligence/service.py:169"}, "properties": {"repobilityId": "8019b21a855c7724", "scanner": "scanner-primary", "fingerprint": "714bbf7ed9a3346f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31c46353e95dcbf5", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/auction_intelligence/risk/governor.py:47"}, "properties": {"repobilityId": "cf265f1287d5c655", "scanner": "scanner-primary", "fingerprint": "31c46353e95dcbf5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c723bcbfd60af19", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/auction_intelligence/agents/base.py:9"}, "properties": {"repobilityId": "4b52c0726adf030c", "scanner": "scanner-primary", "fingerprint": "2c723bcbfd60af19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bf144245e4884c6", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/auction_intelligence/agents/positional.py:54"}, "properties": {"repobilityId": "9d6f37984951df0d", "scanner": "scanner-primary", "fingerprint": "0bf144245e4884c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b30fd3cc4735175c", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/auction_intelligence/paper/book.py:19"}, "properties": {"repobilityId": "c3f1f15e475beda2", "scanner": "scanner-primary", "fingerprint": "b30fd3cc4735175c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71c7c934061e41a9", "level": "note", "message": {"text": "Legacy-named symbol `q_old` in backend/auction_intelligence/rl/policy.py:213"}, "properties": {"repobilityId": "b81f6420ed00c7d6", "scanner": "scanner-primary", "fingerprint": "71c7c934061e41a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e18a828b3a91f3a1", "level": "none", "message": {"text": "Commented-code block (9 lines) in backend/brokers/fyers.py:651"}, "properties": {"repobilityId": "7313395b76ce9c3f", "scanner": "scanner-primary", "fingerprint": "e18a828b3a91f3a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41c2cac7bbec3434", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/brokers/upstox.py:339"}, "properties": {"repobilityId": "5e261839e843dc34", "scanner": "scanner-primary", "fingerprint": "41c2cac7bbec3434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4da87712350cd2e", "level": "note", "message": {"text": "Legacy-named symbol `get_historical_data_v2` in backend/brokers/icici_breeze.py:11"}, "properties": {"repobilityId": "e0f9a862006c8fe4", "scanner": "scanner-primary", "fingerprint": "e4da87712350cd2e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2f45a22c686d8c8d", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/brokers/icici_breeze.py:108"}, "properties": {"repobilityId": "720e794784a4a7e0", "scanner": "scanner-primary", "fingerprint": "2f45a22c686d8c8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67424ef3282c04c6", "level": "note", "message": {"text": "Legacy-named symbol `forward_leaning_v1` in backend/cbe_scanner/asset_rotation.py:540"}, "properties": {"repobilityId": "fd7aa11988d55357", "scanner": "scanner-primary", "fingerprint": "67424ef3282c04c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2190898764e31b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/asset_rotation.py:501"}, "properties": {"repobilityId": "7653f93d56352177", "scanner": "scanner-primary", "fingerprint": "d2190898764e31b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75a6aa97d227c821", "level": "note", "message": {"text": "Stub function `get_spread_history` (body is just `pass`/`return`) \u2014 backend/cbe_scanner/project_provider.py:97"}, "properties": {"repobilityId": "32c15bf0816ecc9f", "scanner": "scanner-primary", "fingerprint": "75a6aa97d227c821", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-9e256ed5afe3e8c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/alpha_engine.py:70"}, "properties": {"repobilityId": "3a05a9b10487650a", "scanner": "scanner-primary", "fingerprint": "9e256ed5afe3e8c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-609cd24bd2596ebb", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/cbe_scanner/features.py:630"}, "properties": {"repobilityId": "cab6c303596024ac", "scanner": "scanner-primary", "fingerprint": "609cd24bd2596ebb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1cbe3b0ae963a63", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/cbe_scanner/paper.py:132"}, "properties": {"repobilityId": "708fc7ed6c4535a4", "scanner": "scanner-primary", "fingerprint": "a1cbe3b0ae963a63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83597fe104e65747", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/market_data/live_marks.py:47"}, "properties": {"repobilityId": "f12c073fe3322ab1", "scanner": "scanner-primary", "fingerprint": "83597fe104e65747", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8607618225940ceb", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/market_data/option_subscription_manager.py:107"}, "properties": {"repobilityId": "a04c3c09fe2ec788", "scanner": "scanner-primary", "fingerprint": "8607618225940ceb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fa2b5601a4010ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/market_data/data_router.py:45"}, "properties": {"repobilityId": "08122b3c961ea1bc", "scanner": "scanner-primary", "fingerprint": "3fa2b5601a4010ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30ce209dbdd2be8", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/market_data/option_history.py:179"}, "properties": {"repobilityId": "fa38b6aa13800137", "scanner": "scanner-primary", "fingerprint": "c30ce209dbdd2be8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d1f5cb557ad4b9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/market_data/atm_watchlist.py:59"}, "properties": {"repobilityId": "30c615b485f1ebcc", "scanner": "scanner-primary", "fingerprint": "1d1f5cb557ad4b9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0998a09b2d4f236", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/market_data/live_candle_store.py:70"}, "properties": {"repobilityId": "b61eb59c8b5bc3cd", "scanner": "scanner-primary", "fingerprint": "e0998a09b2d4f236", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10d27335af5096c1", "level": "note", "message": {"text": "Legacy-named symbol `commodity_atm_watchlist_cache_v1` in backend/market_data/commodity_atm_watchlist.py:184"}, "properties": {"repobilityId": "78e53c3397da08c8", "scanner": "scanner-primary", "fingerprint": "10d27335af5096c1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7e9c7900f7e343fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/market_data/commodity_atm_watchlist.py:1053"}, "properties": {"repobilityId": "ad5abc1140d15989", "scanner": "scanner-primary", "fingerprint": "7e9c7900f7e343fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4a588ac25bd2d81", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/market_data/data_quality_agent.py:109"}, "properties": {"repobilityId": "b883fa7ba82e2aa5", "scanner": "scanner-primary", "fingerprint": "f4a588ac25bd2d81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89469f7aa8abab37", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/market_data/option_chain.py:138"}, "properties": {"repobilityId": "05490687d68c1deb", "scanner": "scanner-primary", "fingerprint": "89469f7aa8abab37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d2eee66ff1a243f", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/market_data/market_intelligence_runtime.py:184"}, "properties": {"repobilityId": "2e8b9b2e4a00c677", "scanner": "scanner-primary", "fingerprint": "7d2eee66ff1a243f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c7a225a463e99e2", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/market_data/market_profile.py:306"}, "properties": {"repobilityId": "e1c74ee2c7add442", "scanner": "scanner-primary", "fingerprint": "7c7a225a463e99e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c9d02364e09e13c", "level": "note", "message": {"text": "55 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "fc70195b3e64b9a7", "scanner": "scanner-primary", "fingerprint": "0c9d02364e09e13c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "adcbb9dfdea7fe51", "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": "8eca874df2c42120", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-33a6b62e30ce7ab4", "level": "note", "message": {"text": "Near-duplicate function bodies in 6 places"}, "properties": {"repobilityId": "70d74f151a13f9cd", "scanner": "scanner-primary", "fingerprint": "33a6b62e30ce7ab4", "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": "28b03414f6a10bf3", "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": "079bc932e41e25fa", "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": "90e25c21b7515cf3", "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": "aea4cd131116b992", "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": "c425b6442cf11356", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "9b401c6716196065", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f09c7f736e73a190", "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": "58d8e4bdae395c07", "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": "f7a9ad7c2ff0e714", "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": "219ce90f192160fd", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-380b7cb95b387b9c", "level": "note", "message": {"text": "Near-duplicate function bodies in 11 places"}, "properties": {"repobilityId": "dee398b497b58ad0", "scanner": "scanner-primary", "fingerprint": "380b7cb95b387b9c", "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": "ec3b7acbd17978d3", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f3230e73e715660b", "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": "c05e060b5a7d7ec5", "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": "7a4f4cd78173b086", "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": "7d02fa65190460f7", "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": "e3a89742ad4020c3", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-93e23c2b69cb5ae0", "level": "error", "message": {"text": "FastAPI POST `fire_telegram_heartbeat` without auth dependency \u2014 backend/api/routers/notifications.py:25"}, "properties": {"repobilityId": "3b56b72bc128f1ef", "scanner": "scanner-primary", "fingerprint": "93e23c2b69cb5ae0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/notifications.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-1ae58d9efa68daa4", "level": "error", "message": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/directional_options.py:44"}, "properties": {"repobilityId": "e0771194383f3bbf", "scanner": "scanner-primary", "fingerprint": "1ae58d9efa68daa4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/directional_options.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-91ea186028ce91e3", "level": "error", "message": {"text": "FastAPI POST `reset_paper_account` without auth dependency \u2014 backend/api/routers/directional_options.py:76"}, "properties": {"repobilityId": "7183c51fe00949ba", "scanner": "scanner-primary", "fingerprint": "91ea186028ce91e3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/directional_options.py"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-10d5df7baf643f30", "level": "error", "message": {"text": "FastAPI POST `scan_cbe` without auth dependency \u2014 backend/api/routers/cbe.py:67"}, "properties": {"repobilityId": "9911bf37480d031c", "scanner": "scanner-primary", "fingerprint": "10d5df7baf643f30", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/cbe.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-75fac79902920a18", "level": "error", "message": {"text": "FastAPI POST `cbe_reset_paper` without auth dependency \u2014 backend/api/routers/cbe.py:140"}, "properties": {"repobilityId": "e5f3184ec7d5daf2", "scanner": "scanner-primary", "fingerprint": "75fac79902920a18", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/cbe.py"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-bbb67ad5b11a3fbf", "level": "error", "message": {"text": "FastAPI POST `ingest_sniper_signal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:81"}, "properties": {"repobilityId": "4c901235120dfada", "scanner": "scanner-primary", "fingerprint": "bbb67ad5b11a3fbf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-8d487ba64348ac52", "level": "error", "message": {"text": "FastAPI POST `shadow_record_live` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:400"}, "properties": {"repobilityId": "cddfccefb80994f7", "scanner": "scanner-primary", "fingerprint": "8d487ba64348ac52", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 400}}}]}, {"ruleId": "scanner-8ebf8cf92cd3d6e5", "level": "error", "message": {"text": "FastAPI POST `shadow_backfill` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:424"}, "properties": {"repobilityId": "789feb7fd1d8af5c", "scanner": "scanner-primary", "fingerprint": "8ebf8cf92cd3d6e5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-22811e6183c7236f", "level": "error", "message": {"text": "FastAPI POST `paper_run_once` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:541"}, "properties": {"repobilityId": "6a28d07311356788", "scanner": "scanner-primary", "fingerprint": "22811e6183c7236f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 541}}}]}, {"ruleId": "scanner-61ce74c8be90ce8e", "level": "error", "message": {"text": "FastAPI POST `analyze` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:552"}, "properties": {"repobilityId": "28a9f709c68bc88d", "scanner": "scanner-primary", "fingerprint": "61ce74c8be90ce8e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 552}}}]}, {"ruleId": "scanner-289b23674e97158d", "level": "error", "message": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:568"}, "properties": {"repobilityId": "3915b10f0c661d72", "scanner": "scanner-primary", "fingerprint": "289b23674e97158d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 568}}}]}, {"ruleId": "scanner-f02b6d3346972ae4", "level": "error", "message": {"text": "FastAPI POST `validate_gate_a` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:598"}, "properties": {"repobilityId": "e160e4274a712a90", "scanner": "scanner-primary", "fingerprint": "f02b6d3346972ae4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 598}}}]}, {"ruleId": "scanner-2a03ecd9ac11460d", "level": "error", "message": {"text": "FastAPI POST `rl_train` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:799"}, "properties": {"repobilityId": "9f2de4ce33860b52", "scanner": "scanner-primary", "fingerprint": "2a03ecd9ac11460d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 799}}}]}, {"ruleId": "scanner-7bf8d4b4b3a9bcb4", "level": "error", "message": {"text": "FastAPI POST `rl_cycle` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:822"}, "properties": {"repobilityId": "53051c619e6fcf01", "scanner": "scanner-primary", "fingerprint": "7bf8d4b4b3a9bcb4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 822}}}]}, {"ruleId": "scanner-9d55da17b2f7f1c0", "level": "error", "message": {"text": "FastAPI DELETE `rl_reset` without auth dependency \u2014 backend/api/routers/auction_intelligence.py:856"}, "properties": {"repobilityId": "85c4d17608131cae", "scanner": "scanner-primary", "fingerprint": "9d55da17b2f7f1c0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auction_intelligence.py"}, "region": {"startLine": 856}}}]}, {"ruleId": "scanner-134c6f2a55d05300", "level": "error", "message": {"text": "FastAPI POST `save_credentials` without auth dependency \u2014 backend/api/routers/auth.py:1358"}, "properties": {"repobilityId": "54ea7796d02dfa5d", "scanner": "scanner-primary", "fingerprint": "134c6f2a55d05300", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1358}}}]}, {"ruleId": "scanner-4e60bbceb5545951", "level": "error", "message": {"text": "FastAPI POST `telegram_discover_chats` without auth dependency \u2014 backend/api/routers/auth.py:1486"}, "properties": {"repobilityId": "257fbd7fb7182b5e", "scanner": "scanner-primary", "fingerprint": "4e60bbceb5545951", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1486}}}]}, {"ruleId": "scanner-111ee13a5eb6eda1", "level": "error", "message": {"text": "FastAPI POST `save_telegram_settings` without auth dependency \u2014 backend/api/routers/auth.py:1537"}, "properties": {"repobilityId": "1aed7e57fd81175e", "scanner": "scanner-primary", "fingerprint": "111ee13a5eb6eda1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1537}}}]}, {"ruleId": "scanner-d5eb12fe1de18ebe", "level": "error", "message": {"text": "FastAPI POST `send_telegram_test` without auth dependency \u2014 backend/api/routers/auth.py:1564"}, "properties": {"repobilityId": "888f78db57ab16bf", "scanner": "scanner-primary", "fingerprint": "d5eb12fe1de18ebe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1564}}}]}, {"ruleId": "scanner-515e3cc1202f42a0", "level": "error", "message": {"text": "FastAPI POST `connect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1603"}, "properties": {"repobilityId": "70443fc3a4ba16a2", "scanner": "scanner-primary", "fingerprint": "515e3cc1202f42a0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1603}}}]}, {"ruleId": "scanner-d3bcff043d085e25", "level": "error", "message": {"text": "FastAPI POST `disconnect_broker` without auth dependency \u2014 backend/api/routers/auth.py:1634"}, "properties": {"repobilityId": "8a3a29d5c168fd0c", "scanner": "scanner-primary", "fingerprint": "d3bcff043d085e25", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1634}}}]}, {"ruleId": "scanner-98216c2a57a27c0d", "level": "error", "message": {"text": "FastAPI POST `upstox_connect_manual` without auth dependency \u2014 backend/api/routers/auth.py:1764"}, "properties": {"repobilityId": "aabc2d40e1481b7d", "scanner": "scanner-primary", "fingerprint": "98216c2a57a27c0d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1764}}}]}, {"ruleId": "scanner-987334b2bcaa716c", "level": "error", "message": {"text": "FastAPI POST `icici_breeze_connect` without auth dependency \u2014 backend/api/routers/auth.py:1858"}, "properties": {"repobilityId": "ac5f5e67f091cee6", "scanner": "scanner-primary", "fingerprint": "987334b2bcaa716c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1858}}}]}, {"ruleId": "scanner-759286815540e5ea", "level": "error", "message": {"text": "FastAPI POST `fivepaisa_connect` without auth dependency \u2014 backend/api/routers/auth.py:1886"}, "properties": {"repobilityId": "b24ceb1a710cff37", "scanner": "scanner-primary", "fingerprint": "759286815540e5ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/auth.py"}, "region": {"startLine": 1886}}}]}, {"ruleId": "scanner-895983ec6883fc85", "level": "error", "message": {"text": "FastAPI POST `refresh_learning_scores` without auth dependency \u2014 backend/api/routers/strategy.py:1303"}, "properties": {"repobilityId": "c61ca8f9d349a7dc", "scanner": "scanner-primary", "fingerprint": "895983ec6883fc85", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/strategy.py"}, "region": {"startLine": 1303}}}]}, {"ruleId": "scanner-3a70b4f19894bef9", "level": "error", "message": {"text": "FastAPI POST `fractal_market_profile_paper_proposal` without auth dependency \u2014 backend/api/routers/fractal_market_profile.py:35"}, "properties": {"repobilityId": "7624a80383eb198a", "scanner": "scanner-primary", "fingerprint": "3a70b4f19894bef9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/fractal_market_profile.py"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-fd746c8a915d2df7", "level": "error", "message": {"text": "FastAPI POST `run_backtest_csv` without auth dependency \u2014 backend/api/routers/backtester.py:96"}, "properties": {"repobilityId": "96c2e0da01d37cf6", "scanner": "scanner-primary", "fingerprint": "fd746c8a915d2df7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/backtester.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-f7c1f42c753e68dd", "level": "error", "message": {"text": "FastAPI POST `run_backtest_json` without auth dependency \u2014 backend/api/routers/backtester.py:129"}, "properties": {"repobilityId": "09a083fa68ffc66f", "scanner": "scanner-primary", "fingerprint": "f7c1f42c753e68dd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/backtester.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-5cb76fb2429b23b8", "level": "error", "message": {"text": "FastAPI POST `run_backtest_breeze` without auth dependency \u2014 backend/api/routers/backtester.py:168"}, "properties": {"repobilityId": "b2243cc1a2045b6d", "scanner": "scanner-primary", "fingerprint": "5cb76fb2429b23b8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/backtester.py"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-4582aafca0adecc5", "level": "error", "message": {"text": "FastAPI POST `walk_forward_optimize` without auth dependency \u2014 backend/api/routers/backtester.py:223"}, "properties": {"repobilityId": "b3a50df780523513", "scanner": "scanner-primary", "fingerprint": "4582aafca0adecc5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/backtester.py"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-d832cb1a1747a79b", "level": "error", "message": {"text": "FastAPI POST `parameter_sensitivity` without auth dependency \u2014 backend/api/routers/backtester.py:252"}, "properties": {"repobilityId": "f297e66a0093ab91", "scanner": "scanner-primary", "fingerprint": "d832cb1a1747a79b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/backtester.py"}, "region": {"startLine": 252}}}]}, {"ruleId": "scanner-be3fa49f4dbc95b5", "level": "error", "message": {"text": "FastAPI POST `reset_commodity_paper_account` without auth dependency \u2014 backend/api/routers/commodity.py:95"}, "properties": {"repobilityId": "b0c308b67f943c6c", "scanner": "scanner-primary", "fingerprint": "be3fa49f4dbc95b5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/commodity.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-a54f290aa40f7246", "level": "error", "message": {"text": "FastAPI POST `start_commodity_strategy_agent` without auth dependency \u2014 backend/api/routers/commodity.py:125"}, "properties": {"repobilityId": "578c992e0e680f43", "scanner": "scanner-primary", "fingerprint": "a54f290aa40f7246", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/commodity.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-4e5f5bd4f4700a02", "level": "error", "message": {"text": "FastAPI POST `run_commodity_strategy_once` without auth dependency \u2014 backend/api/routers/commodity.py:130"}, "properties": {"repobilityId": "d03826ed15bf84e2", "scanner": "scanner-primary", "fingerprint": "4e5f5bd4f4700a02", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/commodity.py"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-767aef6452bf3750", "level": "error", "message": {"text": "FastAPI PUT `update_commodity_strategy_config` without auth dependency \u2014 backend/api/routers/commodity.py:135"}, "properties": {"repobilityId": "02d10f19648f9bb5", "scanner": "scanner-primary", "fingerprint": "767aef6452bf3750", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/commodity.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-acd7ab738bc9dd88", "level": "error", "message": {"text": "FastAPI PUT `update_commodity_kill_switch` without auth dependency \u2014 backend/api/routers/commodity.py:154"}, "properties": {"repobilityId": "b5838bc5025f3c10", "scanner": "scanner-primary", "fingerprint": "acd7ab738bc9dd88", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/commodity.py"}, "region": {"startLine": 154}}}]}, {"ruleId": "scanner-1d51d74c64bc68f3", "level": "error", "message": {"text": "FastAPI POST `start_download` without auth dependency \u2014 backend/api/routers/fo_data.py:176"}, "properties": {"repobilityId": "f77de522d1f5c4de", "scanner": "scanner-primary", "fingerprint": "1d51d74c64bc68f3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/fo_data.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-595a7ee8c501c746", "level": "error", "message": {"text": "FastAPI POST `start_index_analytics_download` without auth dependency \u2014 backend/api/routers/fo_data.py:207"}, "properties": {"repobilityId": "056ed065ca4d6616", "scanner": "scanner-primary", "fingerprint": "595a7ee8c501c746", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/fo_data.py"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-be27fb120c292284", "level": "error", "message": {"text": "FastAPI DELETE `cancel_task` without auth dependency \u2014 backend/api/routers/fo_data.py:318"}, "properties": {"repobilityId": "1bc5ec99c50fe505", "scanner": "scanner-primary", "fingerprint": "be27fb120c292284", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/fo_data.py"}, "region": {"startLine": 318}}}]}, {"ruleId": "scanner-e67dcbf316998eb4", "level": "error", "message": {"text": "FastAPI DELETE `delete_index_analytics_task` without auth dependency \u2014 backend/api/routers/fo_data.py:326"}, "properties": {"repobilityId": "7724dd6421b5c877", "scanner": "scanner-primary", "fingerprint": "e67dcbf316998eb4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/fo_data.py"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-6d5469f9ac51e28e", "level": "error", "message": {"text": "FastAPI POST `sync_nse_constituents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:37"}, "properties": {"repobilityId": "ce8e424100b2302f", "scanner": "scanner-primary", "fingerprint": "6d5469f9ac51e28e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/sector_interaction.py"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-c0b55ee5ea6487b9", "level": "error", "message": {"text": "FastAPI POST `run_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:161"}, "properties": {"repobilityId": "0cda68aeeb62413e", "scanner": "scanner-primary", "fingerprint": "c0b55ee5ea6487b9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/sector_interaction.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-6b8f6a21a07a2830", "level": "error", "message": {"text": "FastAPI POST `run_india_live_market_ingestion` without auth dependency \u2014 backend/api/routers/sector_interaction.py:178"}, "properties": {"repobilityId": "999e0a20aa6f443f", "scanner": "scanner-primary", "fingerprint": "6b8f6a21a07a2830", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/sector_interaction.py"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-90b0dbf48d5496af", "level": "error", "message": {"text": "FastAPI POST `seed_rag_documents` without auth dependency \u2014 backend/api/routers/sector_interaction.py:203"}, "properties": {"repobilityId": "5077bfff1e4954ec", "scanner": "scanner-primary", "fingerprint": "90b0dbf48d5496af", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/sector_interaction.py"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-c350faaa9896ebe8", "level": "error", "message": {"text": "FastAPI POST `approve_proposal` without auth dependency \u2014 backend/api/routers/agent.py:30"}, "properties": {"repobilityId": "2c36f656891d1fae", "scanner": "scanner-primary", "fingerprint": "c350faaa9896ebe8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-b5122fd55e82a187", "level": "error", "message": {"text": "FastAPI POST `reject_proposal` without auth dependency \u2014 backend/api/routers/agent.py:38"}, "properties": {"repobilityId": "1f6ad9523b2b9d07", "scanner": "scanner-primary", "fingerprint": "b5122fd55e82a187", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-ce1c21e1741dd565", "level": "error", "message": {"text": "FastAPI POST `run_scan` without auth dependency \u2014 backend/api/routers/agent.py:46"}, "properties": {"repobilityId": "9503c846f9d2f08a", "scanner": "scanner-primary", "fingerprint": "ce1c21e1741dd565", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-593b7c08e038c481", "level": "error", "message": {"text": "FastAPI POST `chat` without auth dependency \u2014 backend/api/routers/agent.py:68"}, "properties": {"repobilityId": "dca1bf8399593f62", "scanner": "scanner-primary", "fingerprint": "593b7c08e038c481", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-e8c003bbf92b25c7", "level": "error", "message": {"text": "FastAPI POST `toggle_rule` without auth dependency \u2014 backend/api/routers/agent.py:79"}, "properties": {"repobilityId": "ef30fd4057be4476", "scanner": "scanner-primary", "fingerprint": "e8c003bbf92b25c7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-eadae7f3266cbb5c", "level": "error", "message": {"text": "FastAPI POST `set_agent_mode` without auth dependency \u2014 backend/api/routers/agent.py:85"}, "properties": {"repobilityId": "f39809b67c34d7b7", "scanner": "scanner-primary", "fingerprint": "eadae7f3266cbb5c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/agent.py"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-0272ebe6c8e02c17", "level": "error", "message": {"text": "FastAPI POST `fo_risk_refresh` without auth dependency \u2014 backend/api/routers/market.py:537"}, "properties": {"repobilityId": "fa6b3a53c9bb056a", "scanner": "scanner-primary", "fingerprint": "0272ebe6c8e02c17", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/market.py"}, "region": {"startLine": 537}}}]}, {"ruleId": "scanner-54e5a942e86887ee", "level": "error", "message": {"text": "FastAPI POST `get_ltp` without auth dependency \u2014 backend/api/routers/market.py:1174"}, "properties": {"repobilityId": "0ad6b78c7f3633f1", "scanner": "scanner-primary", "fingerprint": "54e5a942e86887ee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/market.py"}, "region": {"startLine": 1174}}}]}, {"ruleId": "scanner-53fd249562134008", "level": "error", "message": {"text": "FastAPI POST `get_latest_ticks` without auth dependency \u2014 backend/api/routers/market.py:1229"}, "properties": {"repobilityId": "1ac0211bde6737fa", "scanner": "scanner-primary", "fingerprint": "53fd249562134008", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/market.py"}, "region": {"startLine": 1229}}}]}, {"ruleId": "scanner-4e284fba8e94f426", "level": "error", "message": {"text": "FastAPI POST `set_mode` without auth dependency \u2014 backend/api/routers/trading.py:270"}, "properties": {"repobilityId": "77685c7475273e54", "scanner": "scanner-primary", "fingerprint": "4e284fba8e94f426", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 270}}}]}, {"ruleId": "scanner-4f1ad89fd89390d9", "level": "error", "message": {"text": "FastAPI POST `place_order` without auth dependency \u2014 backend/api/routers/trading.py:305"}, "properties": {"repobilityId": "6ca1324ff7dd35cf", "scanner": "scanner-primary", "fingerprint": "4f1ad89fd89390d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-97cbda940e70a0c4", "level": "error", "message": {"text": "FastAPI PUT `modify_order` without auth dependency \u2014 backend/api/routers/trading.py:394"}, "properties": {"repobilityId": "e68cb32d1226a2f8", "scanner": "scanner-primary", "fingerprint": "97cbda940e70a0c4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 394}}}]}, {"ruleId": "scanner-f7a309421798d890", "level": "error", "message": {"text": "FastAPI DELETE `cancel_order` without auth dependency \u2014 backend/api/routers/trading.py:403"}, "properties": {"repobilityId": "4d66163b6b5f5cde", "scanner": "scanner-primary", "fingerprint": "f7a309421798d890", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 403}}}]}, {"ruleId": "scanner-8bf1529e64c795ca", "level": "error", "message": {"text": "FastAPI POST `kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:442"}, "properties": {"repobilityId": "4ba1b0b4648a5f50", "scanner": "scanner-primary", "fingerprint": "8bf1529e64c795ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-3e9cbf18010bef2a", "level": "error", "message": {"text": "FastAPI PUT `update_kill_switch` without auth dependency \u2014 backend/api/routers/trading.py:469"}, "properties": {"repobilityId": "a566bcceda7bb645", "scanner": "scanner-primary", "fingerprint": "3e9cbf18010bef2a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 469}}}]}, {"ruleId": "scanner-9be5c9b5865b03af", "level": "error", "message": {"text": "FastAPI POST `run_strategy_agent_once` without auth dependency \u2014 backend/api/routers/trading.py:534"}, "properties": {"repobilityId": "cb001f7fda99254d", "scanner": "scanner-primary", "fingerprint": "9be5c9b5865b03af", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 534}}}]}, {"ruleId": "scanner-c23690ab7e0c6468", "level": "error", "message": {"text": "FastAPI POST `close_strategy_agent_position` without auth dependency \u2014 backend/api/routers/trading.py:539"}, "properties": {"repobilityId": "823928309ce03f10", "scanner": "scanner-primary", "fingerprint": "c23690ab7e0c6468", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 539}}}]}, {"ruleId": "scanner-be38623edf60a931", "level": "error", "message": {"text": "FastAPI PUT `set_strategy_agent_auto_run` without auth dependency \u2014 backend/api/routers/trading.py:551"}, "properties": {"repobilityId": "d04e5cba16cce8b8", "scanner": "scanner-primary", "fingerprint": "be38623edf60a931", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 551}}}]}, {"ruleId": "scanner-9df51b99841c6464", "level": "error", "message": {"text": "FastAPI POST `reset_nse_paper_account` without auth dependency \u2014 backend/api/routers/trading.py:562"}, "properties": {"repobilityId": "ebfd9031bcff69b1", "scanner": "scanner-primary", "fingerprint": "9df51b99841c6464", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 562}}}]}, {"ruleId": "scanner-dc3e99143bd6ea5b", "level": "error", "message": {"text": "FastAPI PUT `update_risk_config` without auth dependency \u2014 backend/api/routers/trading.py:585"}, "properties": {"repobilityId": "e9691479867aebed", "scanner": "scanner-primary", "fingerprint": "dc3e99143bd6ea5b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/trading.py"}, "region": {"startLine": 585}}}]}, {"ruleId": "scanner-16edcf2ddbd93351", "level": "error", "message": {"text": "FastAPI POST `add_document` without auth dependency \u2014 backend/api/routers/rag.py:20"}, "properties": {"repobilityId": "edea24ce059cb84a", "scanner": "scanner-primary", "fingerprint": "16edcf2ddbd93351", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/rag.py"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-2c03f8e439924fa0", "level": "error", "message": {"text": "FastAPI POST `add_trade_case` without auth dependency \u2014 backend/api/routers/rag.py:26"}, "properties": {"repobilityId": "8de6c82c612cbde5", "scanner": "scanner-primary", "fingerprint": "2c03f8e439924fa0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/rag.py"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-d4be13983fad5635", "level": "error", "message": {"text": "FastAPI POST `search` without auth dependency \u2014 backend/api/routers/rag.py:32"}, "properties": {"repobilityId": "2d8044b7f346fa47", "scanner": "scanner-primary", "fingerprint": "d4be13983fad5635", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/rag.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-c414763b1aa647f1", "level": "error", "message": {"text": "FastAPI POST `context_gate` without auth dependency \u2014 backend/api/routers/rag.py:69"}, "properties": {"repobilityId": "ed33fd7e8bf4c1bd", "scanner": "scanner-primary", "fingerprint": "c414763b1aa647f1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/rag.py"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-a4eaeef1a4b284d6", "level": "error", "message": {"text": "FastAPI POST `start_backtest` without auth dependency \u2014 backend/api/routers/analysis.py:1379"}, "properties": {"repobilityId": "e94874cbdd32359d", "scanner": "scanner-primary", "fingerprint": "a4eaeef1a4b284d6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/analysis.py"}, "region": {"startLine": 1379}}}]}, {"ruleId": "scanner-8e0fdd1c40171e71", "level": "error", "message": {"text": "FastAPI POST `paper_proposal` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:76"}, "properties": {"repobilityId": "903e332d9af737a8", "scanner": "scanner-primary", "fingerprint": "8e0fdd1c40171e71", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/gann_tp_delta.py"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-0713f12c49e0eed1", "level": "error", "message": {"text": "FastAPI POST `paper_agent_run_once` without auth dependency \u2014 backend/api/routers/gann_tp_delta.py:108"}, "properties": {"repobilityId": "64d4efc3267f215f", "scanner": "scanner-primary", "fingerprint": "0713f12c49e0eed1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/gann_tp_delta.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-0b05cf67864662da", "level": "error", "message": {"text": "FastAPI PUT `update_trading_calendar` without auth dependency \u2014 backend/api/routers/system.py:543"}, "properties": {"repobilityId": "ed637634c140292c", "scanner": "scanner-primary", "fingerprint": "0b05cf67864662da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/api/routers/system.py"}, "region": {"startLine": 543}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "9266ee3970fba636", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5575539e392fa8e2", "level": "note", "message": {"text": "Unused endpoint: POST /telegram/heartbeat"}, "properties": {"repobilityId": "2a785fb8d24e0e7e", "scanner": "scanner-primary", "fingerprint": "5575539e392fa8e2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e1b7bee247ffc801", "level": "note", "message": {"text": "Unused endpoint: GET /summary"}, "properties": {"repobilityId": "0fe259449bd70820", "scanner": "scanner-primary", "fingerprint": "e1b7bee247ffc801", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9faede0f90ece4bf", "level": "note", "message": {"text": "Unused endpoint: GET /workspace"}, "properties": {"repobilityId": "791d189524bbae2e", "scanner": "scanner-primary", "fingerprint": "9faede0f90ece4bf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a0655036e1d936ea", "level": "note", "message": {"text": "Unused endpoint: GET /live-snapshot"}, "properties": {"repobilityId": "916c60dafa166c92", "scanner": "scanner-primary", "fingerprint": "a0655036e1d936ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5993c0400dc9dcf7", "level": "note", "message": {"text": "Unused endpoint: POST /paper-proposal"}, "properties": {"repobilityId": "aca1cf08c2ae886d", "scanner": "scanner-primary", "fingerprint": "5993c0400dc9dcf7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-270e8bf2b3747a88", "level": "note", "message": {"text": "Unused endpoint: GET /paper-journal"}, "properties": {"repobilityId": "3133370333812bae", "scanner": "scanner-primary", "fingerprint": "270e8bf2b3747a88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afcd381e2d5e3925", "level": "note", "message": {"text": "Unused endpoint: GET /paper-positions"}, "properties": {"repobilityId": "1679ebd8ea8f7885", "scanner": "scanner-primary", "fingerprint": "afcd381e2d5e3925", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-571e6a1b7e6bd91f", "level": "note", "message": {"text": "Unused endpoint: GET /paper-summary"}, "properties": {"repobilityId": "9488cc939edcec67", "scanner": "scanner-primary", "fingerprint": "571e6a1b7e6bd91f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-254bd83c4c96436c", "level": "note", "message": {"text": "Unused endpoint: POST /reset-paper"}, "properties": {"repobilityId": "eae9dcb75c791db3", "scanner": "scanner-primary", "fingerprint": "254bd83c4c96436c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6ac4cd38d033e815", "level": "note", "message": {"text": "Unused endpoint: GET /backtest"}, "properties": {"repobilityId": "86fd0ac6cc6293e0", "scanner": "scanner-primary", "fingerprint": "6ac4cd38d033e815", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8d4db614ca17cc1", "level": "note", "message": {"text": "Unused endpoint: GET /chain-analytics"}, "properties": {"repobilityId": "2ee426654f1152ee", "scanner": "scanner-primary", "fingerprint": "b8d4db614ca17cc1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-332b8419a22fdcd5", "level": "note", "message": {"text": "Unused endpoint: GET /policy"}, "properties": {"repobilityId": "1657aee037e1acdc", "scanner": "scanner-primary", "fingerprint": "332b8419a22fdcd5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6f48e60c30777ab", "level": "note", "message": {"text": "Unused endpoint: GET /config"}, "properties": {"repobilityId": "4b01614a30326e38", "scanner": "scanner-primary", "fingerprint": "a6f48e60c30777ab", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3b6384509689b6e", "level": "note", "message": {"text": "Unused endpoint: GET /universe"}, "properties": {"repobilityId": "3dd34f97bccb3330", "scanner": "scanner-primary", "fingerprint": "e3b6384509689b6e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-195fb029bb695346", "level": "note", "message": {"text": "Unused endpoint: POST /scan"}, "properties": {"repobilityId": "03703784d6460efd", "scanner": "scanner-primary", "fingerprint": "195fb029bb695346", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-37157900d71c21d3", "level": "note", "message": {"text": "Unused endpoint: GET /latest"}, "properties": {"repobilityId": "f35d092fb22766eb", "scanner": "scanner-primary", "fingerprint": "37157900d71c21d3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-87f6ea1dbe593d7b", "level": "note", "message": {"text": "Unused endpoint: GET /instruments/{symbol}/analytics"}, "properties": {"repobilityId": "5a1c1533aa094cff", "scanner": "scanner-primary", "fingerprint": "87f6ea1dbe593d7b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2c085d1b690941f8", "level": "note", "message": {"text": "Unused endpoint: GET /snapshot"}, "properties": {"repobilityId": "65ef394ca8381d20", "scanner": "scanner-primary", "fingerprint": "2c085d1b690941f8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bbe13268113402f0", "level": "note", "message": {"text": "Unused endpoint: GET /candle-gaps"}, "properties": {"repobilityId": "1876f4560a964881", "scanner": "scanner-primary", "fingerprint": "bbe13268113402f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-52e63745468f7cd5", "level": "note", "message": {"text": "Unused endpoint: POST /sniper-signal"}, "properties": {"repobilityId": "3d8e92d6f0c0497a", "scanner": "scanner-primary", "fingerprint": "52e63745468f7cd5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a1e31b0ba86ad35", "level": "note", "message": {"text": "Unused endpoint: GET /sniper-signal"}, "properties": {"repobilityId": "4d2718f6875cdc29", "scanner": "scanner-primary", "fingerprint": "2a1e31b0ba86ad35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bab3ed1efc48a57f", "level": "note", "message": {"text": "Unused endpoint: GET /default-config"}, "properties": {"repobilityId": "873542e2c73efe8b", "scanner": "scanner-primary", "fingerprint": "bab3ed1efc48a57f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-96a5149ac044c9df", "level": "note", "message": {"text": "Unused endpoint: GET /demo-scenario"}, "properties": {"repobilityId": "b6520f6da1e2eee5", "scanner": "scanner-primary", "fingerprint": "96a5149ac044c9df", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f40fe50aacf329b1", "level": "note", "message": {"text": "Unused endpoint: POST /shadow-record-live"}, "properties": {"repobilityId": "b38360504093d98a", "scanner": "scanner-primary", "fingerprint": "f40fe50aacf329b1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-16ad51247db17509", "level": "note", "message": {"text": "Unused endpoint: POST /shadow-backfill"}, "properties": {"repobilityId": "4676d0664e0f5c42", "scanner": "scanner-primary", "fingerprint": "16ad51247db17509", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6857257e8f056872", "level": "note", "message": {"text": "Unused endpoint: GET /shadow-records"}, "properties": {"repobilityId": "e267a9905efc1caf", "scanner": "scanner-primary", "fingerprint": "6857257e8f056872", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ee7fa478387cf80a", "level": "note", "message": {"text": "Unused endpoint: GET /paper-status"}, "properties": {"repobilityId": "39775513f6c2979f", "scanner": "scanner-primary", "fingerprint": "ee7fa478387cf80a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-053b2c9b3e6e2f5c", "level": "note", "message": {"text": "Unused endpoint: POST /paper-run-once"}, "properties": {"repobilityId": "171cdbc9ba9e1765", "scanner": "scanner-primary", "fingerprint": "053b2c9b3e6e2f5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fca11d494725d7c3", "level": "note", "message": {"text": "Unused endpoint: POST /analyze"}, "properties": {"repobilityId": "066f58fd9c4f5cf9", "scanner": "scanner-primary", "fingerprint": "fca11d494725d7c3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78917fe6748eb861", "level": "note", "message": {"text": "Unused endpoint: POST /validate-gate-a"}, "properties": {"repobilityId": "3d28609d60df38dd", "scanner": "scanner-primary", "fingerprint": "78917fe6748eb861", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-dcc5c3fa831467e9", "level": "note", "message": {"text": "Unused endpoint: GET /validate-gate-b"}, "properties": {"repobilityId": "3c1b428b9392abf1", "scanner": "scanner-primary", "fingerprint": "dcc5c3fa831467e9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a58538a9a01b93d6", "level": "note", "message": {"text": "Unused endpoint: GET /validate-gate-c"}, "properties": {"repobilityId": "ff0c22b6f74f92df", "scanner": "scanner-primary", "fingerprint": "a58538a9a01b93d6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f0c7e872db46ca5f", "level": "note", "message": {"text": "Unused endpoint: GET /canary-readiness"}, "properties": {"repobilityId": "af57d7d39c9e7711", "scanner": "scanner-primary", "fingerprint": "f0c7e872db46ca5f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fd8250ace5dce02", "level": "note", "message": {"text": "Unused endpoint: GET /validation-runs/latest"}, "properties": {"repobilityId": "9adfe9ded6f62909", "scanner": "scanner-primary", "fingerprint": "8fd8250ace5dce02", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6e6caee87b975dd6", "level": "note", "message": {"text": "Unused endpoint: GET /validation-runs/{run_id}/artifacts"}, "properties": {"repobilityId": "893216efde609793", "scanner": "scanner-primary", "fingerprint": "6e6caee87b975dd6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59705d3c151e0a4e", "level": "note", "message": {"text": "Unused endpoint: GET /rl-policy"}, "properties": {"repobilityId": "a3d962669a4594d3", "scanner": "scanner-primary", "fingerprint": "59705d3c151e0a4e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bba9eb761191c240", "level": "note", "message": {"text": "Unused endpoint: POST /rl-train"}, "properties": {"repobilityId": "438ac929c12ba9fa", "scanner": "scanner-primary", "fingerprint": "bba9eb761191c240", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-82bc4f6797e0e10b", "level": "note", "message": {"text": "Unused endpoint: POST /rl-cycle"}, "properties": {"repobilityId": "d65f975293b64d81", "scanner": "scanner-primary", "fingerprint": "82bc4f6797e0e10b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-47e8b95e873c305e", "level": "note", "message": {"text": "Unused endpoint: GET /rl-versions"}, "properties": {"repobilityId": "c5ba7179b127de46", "scanner": "scanner-primary", "fingerprint": "47e8b95e873c305e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-71afa5d02d29af26", "level": "note", "message": {"text": "Unused endpoint: DELETE /rl-reset"}, "properties": {"repobilityId": "9a0ddaad35fddd4c", "scanner": "scanner-primary", "fingerprint": "71afa5d02d29af26", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ce56e3557769f7d", "level": "note", "message": {"text": "Unused endpoint: GET /mp-data-status"}, "properties": {"repobilityId": "40efc7d5ce3e0773", "scanner": "scanner-primary", "fingerprint": "4ce56e3557769f7d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1549bdb6dace4105", "level": "note", "message": {"text": "Unused endpoint: GET /mp-signals"}, "properties": {"repobilityId": "a52c8156e9afff27", "scanner": "scanner-primary", "fingerprint": "1549bdb6dace4105", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-957990d655abb6b2", "level": "note", "message": {"text": "Unused endpoint: GET /mp-open-signal"}, "properties": {"repobilityId": "e1e1ca4ae94e1a8c", "scanner": "scanner-primary", "fingerprint": "957990d655abb6b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0b3cc1bdbf6036ae", "level": "note", "message": {"text": "Unused endpoint: GET /mp-agent-context"}, "properties": {"repobilityId": "47fd3ab474ba568c", "scanner": "scanner-primary", "fingerprint": "0b3cc1bdbf6036ae", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86ccc1965c770d13", "level": "note", "message": {"text": "Unused endpoint: GET /mp-dashboard"}, "properties": {"repobilityId": "3ee64fb19f88abaf", "scanner": "scanner-primary", "fingerprint": "86ccc1965c770d13", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b5702ad396060327", "level": "note", "message": {"text": "Unused endpoint: GET /mp-analytics"}, "properties": {"repobilityId": "f8375bebd6498e11", "scanner": "scanner-primary", "fingerprint": "b5702ad396060327", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-59cb72451343edea", "level": "note", "message": {"text": "Unused endpoint: GET /mp-multi-tf-profile"}, "properties": {"repobilityId": "77448f27f7fb8842", "scanner": "scanner-primary", "fingerprint": "59cb72451343edea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1953be23a672cbdd", "level": "note", "message": {"text": "Unused endpoint: GET /mp-regime-history"}, "properties": {"repobilityId": "582cca1bcc410d1f", "scanner": "scanner-primary", "fingerprint": "1953be23a672cbdd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-661568b60c0563d8", "level": "note", "message": {"text": "Unused endpoint: GET /mp-setup-performance"}, "properties": {"repobilityId": "48fe31696c383617", "scanner": "scanner-primary", "fingerprint": "661568b60c0563d8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}