{"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-c3411e7bb3441346", "name": "Possibly dead Python function: limited_receive", "shortDescription": {"text": "Possibly dead Python function: limited_receive"}, "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-1127c25228624499", "name": "Possibly dead Python function: shutdown_chat_resources", "shortDescription": {"text": "Possibly dead Python function: shutdown_chat_resources"}, "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-10ad177668daef55", "name": "Possibly dead Python function: generate_combinations", "shortDescription": {"text": "Possibly dead Python function: generate_combinations"}, "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-598457d2f2324500", "name": "Possibly dead Python function: profile_score", "shortDescription": {"text": "Possibly dead Python function: profile_score"}, "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-9ef086a9ad27455d", "name": "Possibly dead Python function: save_feedback", "shortDescription": {"text": "Possibly dead Python function: save_feedback"}, "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-2b7c05d7b459465a", "name": "Possibly dead Python function: execute", "shortDescription": {"text": "Possibly dead Python function: execute"}, "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-13004c7d5a14d713", "name": "Possibly dead Python function: extract_and_clean_response", "shortDescription": {"text": "Possibly dead Python function: extract_and_clean_response"}, "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-30ad201d332ddc6f", "name": "Possibly dead Python function: explain_outfit", "shortDescription": {"text": "Possibly dead Python function: explain_outfit"}, "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-1c38d5ad30befc95", "name": "Possibly dead Python function: build_responsibility_map", "shortDescription": {"text": "Possibly dead Python function: build_responsibility_map"}, "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-9667ea5007c89b46", "name": "Possibly dead Python function: generate_family_prompts", "shortDescription": {"text": "Possibly dead Python function: generate_family_prompts"}, "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-2f25b2edcebab358", "name": "Possibly dead Python function: build_evening_briefing", "shortDescription": {"text": "Possibly dead Python function: build_evening_briefing"}, "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-ab70cf6c20593280", "name": "Possibly dead Python function: build_best_day_briefing", "shortDescription": {"text": "Possibly dead Python function: build_best_day_briefing"}, "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-4d43d14b894b3a5f", "name": "Possibly dead Python function: build_context", "shortDescription": {"text": "Possibly dead Python function: build_context"}, "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-3df0382ad2ab2ebe", "name": "Possibly dead Python function: detect_tone", "shortDescription": {"text": "Possibly dead Python function: detect_tone"}, "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-08b1368875d6c2b7", "name": "Possibly dead Python function: accessory_type", "shortDescription": {"text": "Possibly dead Python function: accessory_type"}, "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-5889e034daab4536", "name": "Possibly dead Python function: build_palette_response", "shortDescription": {"text": "Possibly dead Python function: build_palette_response"}, "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-76b36f93194eb385", "name": "Possibly dead Python function: run_calendar_predictive_engine", "shortDescription": {"text": "Possibly dead Python function: run_calendar_predictive_engine"}, "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-b0490c0545b66963", "name": "Possibly dead Python function: build_dashboard", "shortDescription": {"text": "Possibly dead Python function: build_dashboard"}, "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-9dad31c30751f297", "name": "Possibly dead Python function: rewrite", "shortDescription": {"text": "Possibly dead Python function: rewrite"}, "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-c1bdfa438f8eb284", "name": "Possibly dead Python function: uniq", "shortDescription": {"text": "Possibly dead Python function: uniq"}, "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-ac815ba78a4da71d", "name": "Possibly dead Python function: build_weekly_plan", "shortDescription": {"text": "Possibly dead Python function: build_weekly_plan"}, "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-109d11321929a1e2", "name": "Possibly dead Python function: build_life_plan", "shortDescription": {"text": "Possibly dead Python function: build_life_plan"}, "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-917d7499a06f312d", "name": "Possibly dead Python function: build_budget_plan", "shortDescription": {"text": "Possibly dead Python function: build_budget_plan"}, "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-de3c1f217d72a063", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-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-117bfaff82d886d6", "name": "Very large file: tests/test_module_chat_route.py (1393 lines)", "shortDescription": {"text": "Very large file: tests/test_module_chat_route.py (1393 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-8da6440b7386d257", "name": "Very large file: tests/test_visual_style_polish.py (1467 lines)", "shortDescription": {"text": "Very large file: tests/test_visual_style_polish.py (1467 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-0e383be58ad1fa62", "name": "Very large file: routers/data.py (1951 lines)", "shortDescription": {"text": "Very large file: routers/data.py (1951 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-f1b91cb5b95c3c26", "name": "Very large file: routers/wardrobe_capture.py (2168 lines)", "shortDescription": {"text": "Very large file: routers/wardrobe_capture.py (2168 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-a80f28c2a4c99cbb", "name": "Very large file: routers/chat.py (5022 lines)", "shortDescription": {"text": "Very large file: routers/chat.py (5022 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-0efbcfc1bf5c3c0b", "name": "Very large file: brain/orchestrator.py (1388 lines)", "shortDescription": {"text": "Very large file: brain/orchestrator.py (1388 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-46592d1f1155edab", "name": "Very large file: brain/outfit_pipeline.py (3853 lines)", "shortDescription": {"text": "Very large file: brain/outfit_pipeline.py (3853 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-a12c65a5c71edae7", "name": "Very large file: brain/engines/style_scorer.py (1572 lines)", "shortDescription": {"text": "Very large file: brain/engines/style_scorer.py (1572 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-05747d68a5a9cdf2", "name": "Very large file: services/style_flow_service.py (5339 lines)", "shortDescription": {"text": "Very large file: services/style_flow_service.py (5339 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-67b0ad16964a2016", "name": "Very large file: services/agent_metadata_validator.py (1633 lines)", "shortDescription": {"text": "Very large file: services/agent_metadata_validator.py (1633 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-bbb9902bec1c4747", "name": "Very large file: services/stylist_knowledge_service.py (1287 lines)", "shortDescription": {"text": "Very large file: services/stylist_knowledge_service.py (1287 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-4d346d249e9ac39a", "name": "Very large file: services/style_reasoning_engine.py (5269 lines)", "shortDescription": {"text": "Very large file: services/style_reasoning_engine.py (5269 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": "37 tests / 173 src (ratio 0.21)."}, "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 98 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-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d013793e493127c", "name": "Legacy-named symbol `_complete_the_look_copy` in tests/test_editorial_polish.py:118", "shortDescription": {"text": "Legacy-named symbol `_complete_the_look_copy` in tests/test_editorial_polish.py:118"}, "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-d4a8d429620180f8", "name": "Legacy-named symbol `normalize_metadata_v2` in tests/test_agent_metadata_validator.py:16", "shortDescription": {"text": "Legacy-named symbol `normalize_metadata_v2` in tests/test_agent_metadata_validator.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-ca8fb08d62befd23", "name": "Legacy-named symbol `test_curated_board_strategies_are_distinct_v2` in tests/test_style_more_options.py:587", "shortDescription": {"text": "Legacy-named symbol `test_curated_board_strategies_are_distinct_v2` in tests/test_style_more_options.py:587"}, "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-c544444925daf6ce", "name": "Legacy-named symbol `metadata_v2` in tests/test_metadata_richness_guard.py:227", "shortDescription": {"text": "Legacy-named symbol `metadata_v2` in tests/test_metadata_richness_guard.py:227"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5833ee30c481b974", "name": "Legacy-named symbol `metadata_v2` in tests/test_wardrobe_update_labels.py:281", "shortDescription": {"text": "Legacy-named symbol `metadata_v2` in tests/test_wardrobe_update_labels.py:281"}, "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-30708e5bfe00c70b", "name": "Legacy-named symbol `metadata_v2` in tests/test_style_scorer_occasion.py:89", "shortDescription": {"text": "Legacy-named symbol `metadata_v2` in tests/test_style_scorer_occasion.py:89"}, "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-6c4f5b115b2f4709", "name": "Commented-code block (6 lines) in tests/test_wardrobe_capture_gemini_multi.py:546", "shortDescription": {"text": "Commented-code block (6 lines) in tests/test_wardrobe_capture_gemini_multi.py:546"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a8c215e58e289cf", "name": "Legacy-named symbol `style_flow_service_adapter_v1` in tests/test_module_chat_route.py:424", "shortDescription": {"text": "Legacy-named symbol `style_flow_service_adapter_v1` in tests/test_module_chat_route.py:424"}, "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-313f634cf288322b", "name": "Legacy-named symbol `normalize_metadata_v2` in scripts/backfill_style_metadata.py:16", "shortDescription": {"text": "Legacy-named symbol `normalize_metadata_v2` in scripts/backfill_style_metadata.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-4ad9a1395cf41e33", "name": "Legacy-named symbol `calendar_runtime_v1` in routers/calendar.py:290", "shortDescription": {"text": "Legacy-named symbol `calendar_runtime_v1` in routers/calendar.py:290"}, "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-02e95855ec75c268", "name": "Legacy-named symbol `style_flow_service_adapter_v1` in routers/chat.py:2046", "shortDescription": {"text": "Legacy-named symbol `style_flow_service_adapter_v1` in routers/chat.py:2046"}, "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-112470ce0b095afa", "name": "Commented-code block (5 lines) in routers/chat.py:2788", "shortDescription": {"text": "Commented-code block (5 lines) in routers/chat.py:2788"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-233b128818d85297", "name": "Legacy-named symbol `clip_with_embedding_v2` in routers/garment_analyzer.py:234", "shortDescription": {"text": "Legacy-named symbol `clip_with_embedding_v2` in routers/garment_analyzer.py:234"}, "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-2647cbf851bf584d", "name": "Commented-code block (8 lines) in routers/boards.py:127", "shortDescription": {"text": "Commented-code block (8 lines) in routers/boards.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-ad31833818fc5644", "name": "Legacy-named symbol `_ahvi_style_dna_preflight_v2` in brain/orchestrator.py:1332", "shortDescription": {"text": "Legacy-named symbol `_ahvi_style_dna_preflight_v2` in brain/orchestrator.py:1332"}, "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-cb1db5acf1f4ab56", "name": "Commented-code block (5 lines) in brain/orchestrator.py:1011", "shortDescription": {"text": "Commented-code block (5 lines) in brain/orchestrator.py:1011"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc233ea104ef83fb", "name": "Commented-code block (6 lines) in brain/outfit_pipeline.py:1454", "shortDescription": {"text": "Commented-code block (6 lines) in brain/outfit_pipeline.py:1454"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-91c7cc80f51fcc6e", "name": "Legacy-named symbol `weighted_priority_v1` in brain/decision_engine.py:56", "shortDescription": {"text": "Legacy-named symbol `weighted_priority_v1` in brain/decision_engine.py:56"}, "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-54ede91fb6356b7b", "name": "Legacy-named symbol `decision_engine_v1` in brain/daily_dependency_engine.py:412", "shortDescription": {"text": "Legacy-named symbol `decision_engine_v1` in brain/daily_dependency_engine.py:412"}, "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-d37386bd4f0c778c", "name": "Legacy-named symbol `color_harmony_bank_v1` in brain/intelligence/bank_snippets.py:73", "shortDescription": {"text": "Legacy-named symbol `color_harmony_bank_v1` in brain/intelligence/bank_snippets.py:73"}, "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-8245c46c07fab4da", "name": "Legacy-named symbol `prompt_bank_v1` in brain/utils/prompt_engine.py:9", "shortDescription": {"text": "Legacy-named symbol `prompt_bank_v1` in brain/utils/prompt_engine.py:9"}, "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-95cb9fc7f1c253ee", "name": "Legacy-named symbol `ahvi_tone_engine_v1` in brain/tone/tone_engine.py:32", "shortDescription": {"text": "Legacy-named symbol `ahvi_tone_engine_v1` in brain/tone/tone_engine.py:32"}, "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-c43476e5fba4c20f", "name": "Legacy-named symbol `_ahvi_gender_patch_v2` in brain/personalization/style_dna_engine.py:303", "shortDescription": {"text": "Legacy-named symbol `_ahvi_gender_patch_v2` in brain/personalization/style_dna_engine.py:303"}, "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-8a88d36cce3432d7", "name": "Legacy-named symbol `color_palette_bank_v1` in brain/engines/styling/palette_engine.py:13", "shortDescription": {"text": "Legacy-named symbol `color_palette_bank_v1` in brain/engines/styling/palette_engine.py:13"}, "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-3bcc604d56197c82", "name": "Legacy-named symbol `events_bank_v1` in brain/engines/styling/style_builder.py:20", "shortDescription": {"text": "Legacy-named symbol `events_bank_v1` in brain/engines/styling/style_builder.py:20"}, "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-6f36214a22897fcc", "name": "Legacy-named symbol `calendar_orchestrator_v1` in brain/engines/calendar/calendar_runtime.py:75", "shortDescription": {"text": "Legacy-named symbol `calendar_orchestrator_v1` in brain/engines/calendar/calendar_runtime.py:75"}, "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-0e1fd145bcd0196a", "name": "Legacy-named symbol `shopping_engine_pack_v1` in brain/shopping/shopping_system.py:13", "shortDescription": {"text": "Legacy-named symbol `shopping_engine_pack_v1` in brain/shopping/shopping_system.py:13"}, "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-8da7674f4dfe59d5", "name": "Legacy-named symbol `wardrobe_tag_normalizer_v1` in brain/wardrobe/wardrobe_normalizer.py:2", "shortDescription": {"text": "Legacy-named symbol `wardrobe_tag_normalizer_v1` in brain/wardrobe/wardrobe_normalizer.py:2"}, "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-433c334fd002853c", "name": "Legacy-named symbol `_clean_editorial_copy` in services/style_flow_service.py:263", "shortDescription": {"text": "Legacy-named symbol `_clean_editorial_copy` in services/style_flow_service.py:263"}, "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-97125bbcf2cd5d62", "name": "Commented-code block (5 lines) in services/style_flow_service.py:4422", "shortDescription": {"text": "Commented-code block (5 lines) in services/style_flow_service.py:4422"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa2108d832872995", "name": "Legacy-named symbol `normalize_metadata_v2` in services/wardrobe_persistence_service.py:275", "shortDescription": {"text": "Legacy-named symbol `normalize_metadata_v2` in services/wardrobe_persistence_service.py:275"}, "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-c50bc752b504542b", "name": "Commented-code block (5 lines) in services/wardrobe_persistence_service.py:1264", "shortDescription": {"text": "Commented-code block (5 lines) in services/wardrobe_persistence_service.py:1264"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbe658b74706824f", "name": "Legacy-named symbol `_style_blob_for_v2` in services/agent_metadata_validator.py:241", "shortDescription": {"text": "Legacy-named symbol `_style_blob_for_v2` in services/agent_metadata_validator.py:241"}, "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-9b424ffb82e82bb2", "name": "Commented-code block (5 lines) in services/llm_service.py:225", "shortDescription": {"text": "Commented-code block (5 lines) in services/llm_service.py:225"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-013d24c1887f93b5", "name": "Commented-code block (6 lines) in services/agent_style_orchestrator.py:678", "shortDescription": {"text": "Commented-code block (6 lines) in services/agent_style_orchestrator.py:678"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-caeb351f7cb4ee9a", "name": "Legacy-named symbol `_complete_the_look_copy` in services/style_reasoning_engine.py:3672", "shortDescription": {"text": "Legacy-named symbol `_complete_the_look_copy` in services/style_reasoning_engine.py:3672"}, "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-0f8cd3ab92648dfb", "name": "Commented-code block (5 lines) in services/style_reasoning_engine.py:181", "shortDescription": {"text": "Commented-code block (5 lines) in services/style_reasoning_engine.py:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nmain.py:health_check, main.py:health_routes\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:\nbrain/engines/style_board_renderer.py:add, brain/engines/style_board_renderer.py:add, brain/engines/style_board_renderer.py:add\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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:\nservices/appwrite_proxy.py:get_document_async, services/appwrite_proxy.py:delete_document_async, services/appwrite_proxy.py:get_document, services/appwrite_proxy.py:delete_document\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-c1e596f4fe4de643", "name": "FastAPI POST `fallback_text_chat` without auth dependency \u2014 main.py:759", "shortDescription": {"text": "FastAPI POST `fallback_text_chat` without auth dependency \u2014 main.py:759"}, "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-413afa0bb7c129ff", "name": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:801", "shortDescription": {"text": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:801"}, "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-1a2d4d2241f79bca", "name": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:802", "shortDescription": {"text": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:802"}, "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-308736f58cb7ba07", "name": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:833", "shortDescription": {"text": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:833"}, "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-b225f50193812573", "name": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:834", "shortDescription": {"text": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:834"}, "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-92b82937679db880", "name": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:862", "shortDescription": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:862"}, "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-6ebb1fe67ad5837d", "name": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:863", "shortDescription": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:863"}, "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-6838a442966cc766", "name": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:864", "shortDescription": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:864"}, "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-11db5fabc9fc1659", "name": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:865", "shortDescription": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:865"}, "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-2d814f37628e86bf", "name": "FastAPI POST `run_ai` without auth dependency \u2014 api/ai.py:98", "shortDescription": {"text": "FastAPI POST `run_ai` without auth dependency \u2014 api/ai.py:98"}, "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-b57611c42c87e42f", "name": "FastAPI POST `anthropic_messages` without auth dependency \u2014 routers/utilities.py:41", "shortDescription": {"text": "FastAPI POST `anthropic_messages` without auth dependency \u2014 routers/utilities.py:41"}, "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-775cd1a446b01900", "name": "FastAPI POST `upload_avatar` without auth dependency \u2014 routers/utilities.py:109", "shortDescription": {"text": "FastAPI POST `upload_avatar` without auth dependency \u2014 routers/utilities.py:109"}, "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-09ddeca936159899", "name": "FastAPI POST `upload_wardrobe_images` without auth dependency \u2014 routers/utilities.py:123", "shortDescription": {"text": "FastAPI POST `upload_wardrobe_images` without auth dependency \u2014 routers/utilities.py:123"}, "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-64728a1f37ec964e", "name": "FastAPI POST `check_outfit_duplicate` without auth dependency \u2014 routers/data.py:1394", "shortDescription": {"text": "FastAPI POST `check_outfit_duplicate` without auth dependency \u2014 routers/data.py:1394"}, "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-2fd06d8f393f1a3a", "name": "FastAPI POST `create_document` without auth dependency \u2014 routers/data.py:1467", "shortDescription": {"text": "FastAPI POST `create_document` without auth dependency \u2014 routers/data.py:1467"}, "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-c733f6fd8f06bbfc", "name": "FastAPI PATCH `update_document` without auth dependency \u2014 routers/data.py:1818", "shortDescription": {"text": "FastAPI PATCH `update_document` without auth dependency \u2014 routers/data.py:1818"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ed07b0eaca172b10", "name": "FastAPI DELETE `delete_document` without auth dependency \u2014 routers/data.py:1845", "shortDescription": {"text": "FastAPI DELETE `delete_document` without auth dependency \u2014 routers/data.py:1845"}, "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-756dd2ef60964769", "name": "FastAPI PUT `upsert_user_profile` without auth dependency \u2014 routers/data.py:1921", "shortDescription": {"text": "FastAPI PUT `upsert_user_profile` without auth dependency \u2014 routers/data.py:1921"}, "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-29446b0f9cc8b71f", "name": "FastAPI POST `scan_bill` without auth dependency \u2014 routers/bills.py:78", "shortDescription": {"text": "FastAPI POST `scan_bill` without auth dependency \u2014 routers/bills.py:78"}, "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-42ee3f2052c3c153", "name": "FastAPI POST `wear_today` without auth dependency \u2014 routers/style_memory.py:26", "shortDescription": {"text": "FastAPI POST `wear_today` without auth dependency \u2014 routers/style_memory.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-c32d589fc44a8c7f", "name": "FastAPI POST `analyze_capture` without auth dependency \u2014 routers/wardrobe_capture.py:1077", "shortDescription": {"text": "FastAPI POST `analyze_capture` without auth dependency \u2014 routers/wardrobe_capture.py:1077"}, "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-ad9c16dd679af62e", "name": "FastAPI POST `analyze_capture_batch` without auth dependency \u2014 routers/wardrobe_capture.py:1772", "shortDescription": {"text": "FastAPI POST `analyze_capture_batch` without auth dependency \u2014 routers/wardrobe_capture.py:1772"}, "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-8d2f8b356f018880", "name": "FastAPI POST `save_selected` without auth dependency \u2014 routers/wardrobe_capture.py:1946", "shortDescription": {"text": "FastAPI POST `save_selected` without auth dependency \u2014 routers/wardrobe_capture.py:1946"}, "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-25f565fcb07b75c7", "name": "FastAPI POST `delete_selected` without auth dependency \u2014 routers/wardrobe_capture.py:2074", "shortDescription": {"text": "FastAPI POST `delete_selected` without auth dependency \u2014 routers/wardrobe_capture.py:2074"}, "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-a973d40285a36989", "name": "FastAPI POST `feedback_item` without auth dependency \u2014 routers/feedback.py:25", "shortDescription": {"text": "FastAPI POST `feedback_item` without auth dependency \u2014 routers/feedback.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-d5e0f61b61511dbe", "name": "FastAPI POST `feedback_board` without auth dependency \u2014 routers/feedback.py:45", "shortDescription": {"text": "FastAPI POST `feedback_board` without auth dependency \u2014 routers/feedback.py:45"}, "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-8f3d5183751301ee", "name": "FastAPI POST `remove_background` without auth dependency \u2014 routers/bg_router.py:27", "shortDescription": {"text": "FastAPI POST `remove_background` without auth dependency \u2014 routers/bg_router.py:27"}, "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-fbc850b3739d83a5", "name": "FastAPI POST `remove_background_compat` without auth dependency \u2014 routers/bg_router.py:45", "shortDescription": {"text": "FastAPI POST `remove_background_compat` without auth dependency \u2014 routers/bg_router.py:45"}, "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-d99aee0bdf7372e6", "name": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3416", "shortDescription": {"text": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3416"}, "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-d2116e9144aeb62e", "name": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3417", "shortDescription": {"text": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3417"}, "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-8f017e0ffa98fad3", "name": "FastAPI POST `text_chat` without auth dependency \u2014 routers/chat.py:3572", "shortDescription": {"text": "FastAPI POST `text_chat` without auth dependency \u2014 routers/chat.py:3572"}, "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-725f1704d411d29e", "name": "FastAPI POST `create_contact` without auth dependency \u2014 routers/ahvi_contacts.py:202", "shortDescription": {"text": "FastAPI POST `create_contact` without auth dependency \u2014 routers/ahvi_contacts.py:202"}, "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-a603d19b839ec9d9", "name": "FastAPI PUT `update_contact` without auth dependency \u2014 routers/ahvi_contacts.py:230", "shortDescription": {"text": "FastAPI PUT `update_contact` without auth dependency \u2014 routers/ahvi_contacts.py:230"}, "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-33ae3444caaf6188", "name": "FastAPI PATCH `patch_contact` without auth dependency \u2014 routers/ahvi_contacts.py:258", "shortDescription": {"text": "FastAPI PATCH `patch_contact` without auth dependency \u2014 routers/ahvi_contacts.py:258"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9ee84bc0362b1623", "name": "FastAPI DELETE `delete_contact` without auth dependency \u2014 routers/ahvi_contacts.py:265", "shortDescription": {"text": "FastAPI DELETE `delete_contact` without auth dependency \u2014 routers/ahvi_contacts.py:265"}, "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-e7473e6a3703bf97", "name": "FastAPI POST `find_similar_items` without auth dependency \u2014 routers/lens_similar.py:121", "shortDescription": {"text": "FastAPI POST `find_similar_items` without auth dependency \u2014 routers/lens_similar.py:121"}, "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-576cf4fbf067cc67", "name": "FastAPI POST `dispatch_due` without auth dependency \u2014 routers/notifications.py:113", "shortDescription": {"text": "FastAPI POST `dispatch_due` without auth dependency \u2014 routers/notifications.py:113"}, "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-1567545a044b01fb", "name": "FastAPI POST `dispatch_due_async` without auth dependency \u2014 routers/notifications.py:167", "shortDescription": {"text": "FastAPI POST `dispatch_due_async` without auth dependency \u2014 routers/notifications.py:167"}, "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-06463cf7f41d08c9", "name": "FastAPI POST `analyze_garment` without auth dependency \u2014 routers/garment_analyzer.py:153", "shortDescription": {"text": "FastAPI POST `analyze_garment` without auth dependency \u2014 routers/garment_analyzer.py:153"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e285db569d255abe", "name": "FastAPI POST `vision_intelligence_check` without auth dependency \u2014 routers/ops.py:132", "shortDescription": {"text": "FastAPI POST `vision_intelligence_check` without auth dependency \u2014 routers/ops.py:132"}, "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-945396c739845bde", "name": "FastAPI POST `save_board` without auth dependency \u2014 routers/boards.py:97", "shortDescription": {"text": "FastAPI POST `save_board` without auth dependency \u2014 routers/boards.py:97"}, "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-87ae10918fdf106a", "name": "FastAPI POST `save_life_board` without auth dependency \u2014 routers/boards.py:166", "shortDescription": {"text": "FastAPI POST `save_life_board` without auth dependency \u2014 routers/boards.py:166"}, "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-022e87709926b715", "name": "FastAPI DELETE `delete_board` without auth dependency \u2014 routers/boards.py:190", "shortDescription": {"text": "FastAPI DELETE `delete_board` without auth dependency \u2014 routers/boards.py:190"}, "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-a04153a95f58f0a8", "name": "FastAPI POST `get_item_suggestions` without auth dependency \u2014 routers/stylist.py:22", "shortDescription": {"text": "FastAPI POST `get_item_suggestions` without auth dependency \u2014 routers/stylist.py:22"}, "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-ecb4119e807fded2", "name": "FastAPI POST `run_outfit_pipeline` without auth dependency \u2014 routers/stylist.py:66", "shortDescription": {"text": "FastAPI POST `run_outfit_pipeline` without auth dependency \u2014 routers/stylist.py:66"}, "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}}]}}, "automationDetails": {"id": "repobility/25359"}, "properties": {"repository": "devlovasit-source/AHVI-latest_Backend", "repoUrl": "https://github.com/devlovasit-source/AHVI-latest_Backend", "branch": "main"}, "results": [{"ruleId": "scanner-c3411e7bb3441346", "level": "note", "message": {"text": "Possibly dead Python function: limited_receive"}, "properties": {"repobilityId": "c9dffbd6dfac829a", "scanner": "scanner-primary", "fingerprint": "c3411e7bb3441346", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py:384"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1127c25228624499", "level": "note", "message": {"text": "Possibly dead Python function: shutdown_chat_resources"}, "properties": {"repobilityId": "af52047f4ea6e00c", "scanner": "scanner-primary", "fingerprint": "1127c25228624499", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/chat.py:1075"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10ad177668daef55", "level": "note", "message": {"text": "Possibly dead Python function: generate_combinations"}, "properties": {"repobilityId": "4a91578ec1e612c6", "scanner": "scanner-primary", "fingerprint": "10ad177668daef55", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/outfit_pipeline.py:1775"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-598457d2f2324500", "level": "note", "message": {"text": "Possibly dead Python function: profile_score"}, "properties": {"repobilityId": "3283c7631f4c165b", "scanner": "scanner-primary", "fingerprint": "598457d2f2324500", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/outfit_pipeline.py:2614"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ef086a9ad27455d", "level": "note", "message": {"text": "Possibly dead Python function: save_feedback"}, "properties": {"repobilityId": "e4700cecea934e8e", "scanner": "scanner-primary", "fingerprint": "9ef086a9ad27455d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/outfit_pipeline.py:2824"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2b7c05d7b459465a", "level": "note", "message": {"text": "Possibly dead Python function: execute"}, "properties": {"repobilityId": "a0497c418f1db27e", "scanner": "scanner-primary", "fingerprint": "2b7c05d7b459465a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/execution_engine.py:18"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-13004c7d5a14d713", "level": "note", "message": {"text": "Possibly dead Python function: extract_and_clean_response"}, "properties": {"repobilityId": "fee63e1f886fe338", "scanner": "scanner-primary", "fingerprint": "13004c7d5a14d713", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/wardrobe_parser.py:7"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-30ad201d332ddc6f", "level": "note", "message": {"text": "Possibly dead Python function: explain_outfit"}, "properties": {"repobilityId": "6d234bdec1207f06", "scanner": "scanner-primary", "fingerprint": "30ad201d332ddc6f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/style_explainer.py:14"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c38d5ad30befc95", "level": "note", "message": {"text": "Possibly dead Python function: build_responsibility_map"}, "properties": {"repobilityId": "38b13c1f2259a119", "scanner": "scanner-primary", "fingerprint": "1c38d5ad30befc95", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/family_layer.py:1"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9667ea5007c89b46", "level": "note", "message": {"text": "Possibly dead Python function: generate_family_prompts"}, "properties": {"repobilityId": "91b8706df742def4", "scanner": "scanner-primary", "fingerprint": "9667ea5007c89b46", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/family_layer.py:25"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f25b2edcebab358", "level": "note", "message": {"text": "Possibly dead Python function: build_evening_briefing"}, "properties": {"repobilityId": "d415cdccae8936fb", "scanner": "scanner-primary", "fingerprint": "2f25b2edcebab358", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/day_briefing.py:117"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab70cf6c20593280", "level": "note", "message": {"text": "Possibly dead Python function: build_best_day_briefing"}, "properties": {"repobilityId": "f02b0353dba77083", "scanner": "scanner-primary", "fingerprint": "ab70cf6c20593280", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/utils/day_briefing.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4d43d14b894b3a5f", "level": "note", "message": {"text": "Possibly dead Python function: build_context"}, "properties": {"repobilityId": "615101c022740f53", "scanner": "scanner-primary", "fingerprint": "4d43d14b894b3a5f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/context/context_engine.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3df0382ad2ab2ebe", "level": "note", "message": {"text": "Possibly dead Python function: detect_tone"}, "properties": {"repobilityId": "75f881118709f0c8", "scanner": "scanner-primary", "fingerprint": "3df0382ad2ab2ebe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/color_normalizer.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-08b1368875d6c2b7", "level": "note", "message": {"text": "Possibly dead Python function: accessory_type"}, "properties": {"repobilityId": "3349f622bf3dc22d", "scanner": "scanner-primary", "fingerprint": "08b1368875d6c2b7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/style_rules_engine.py:352"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5889e034daab4536", "level": "note", "message": {"text": "Possibly dead Python function: build_palette_response"}, "properties": {"repobilityId": "51e07c70e34873c8", "scanner": "scanner-primary", "fingerprint": "5889e034daab4536", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/styling/palette_engine.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-76b36f93194eb385", "level": "note", "message": {"text": "Possibly dead Python function: run_calendar_predictive_engine"}, "properties": {"repobilityId": "e6d71888e799d367", "scanner": "scanner-primary", "fingerprint": "76b36f93194eb385", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/calendar/calendar_runtime.py:213"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b0490c0545b66963", "level": "note", "message": {"text": "Possibly dead Python function: build_dashboard"}, "properties": {"repobilityId": "a7580a036274da22", "scanner": "scanner-primary", "fingerprint": "b0490c0545b66963", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/organize/organize_engine.py:61"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9dad31c30751f297", "level": "note", "message": {"text": "Possibly dead Python function: rewrite"}, "properties": {"repobilityId": "b5937c294869f30f", "scanner": "scanner-primary", "fingerprint": "9dad31c30751f297", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/meals/recipe_rewriter.py:23"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1bdfa438f8eb284", "level": "note", "message": {"text": "Possibly dead Python function: uniq"}, "properties": {"repobilityId": "1a4b8046e67a05b6", "scanner": "scanner-primary", "fingerprint": "c1bdfa438f8eb284", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/meals/meal_planner_engine.py:19"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ac815ba78a4da71d", "level": "note", "message": {"text": "Possibly dead Python function: build_weekly_plan"}, "properties": {"repobilityId": "00f4a71342a6fc1a", "scanner": "scanner-primary", "fingerprint": "ac815ba78a4da71d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/meals/meal_planner_engine.py:91"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-109d11321929a1e2", "level": "note", "message": {"text": "Possibly dead Python function: build_life_plan"}, "properties": {"repobilityId": "84076993372e19b5", "scanner": "scanner-primary", "fingerprint": "109d11321929a1e2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/planning/life_engine.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-917d7499a06f312d", "level": "note", "message": {"text": "Possibly dead Python function: build_budget_plan"}, "properties": {"repobilityId": "4ecd0d6e3b0fb3b3", "scanner": "scanner-primary", "fingerprint": "917d7499a06f312d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "brain/engines/planning/budget_engine.py:96"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de3c1f217d72a063", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "1de0ecd007803dbd", "scanner": "scanner-primary", "fingerprint": "de3c1f217d72a063", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-117bfaff82d886d6", "level": "note", "message": {"text": "Very large file: tests/test_module_chat_route.py (1393 lines)"}, "properties": {"repobilityId": "9a4e441b0bdbe608", "scanner": "scanner-primary", "fingerprint": "117bfaff82d886d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8da6440b7386d257", "level": "note", "message": {"text": "Very large file: tests/test_visual_style_polish.py (1467 lines)"}, "properties": {"repobilityId": "43ea2006286383ad", "scanner": "scanner-primary", "fingerprint": "8da6440b7386d257", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e383be58ad1fa62", "level": "note", "message": {"text": "Very large file: routers/data.py (1951 lines)"}, "properties": {"repobilityId": "c7e3c19259176d31", "scanner": "scanner-primary", "fingerprint": "0e383be58ad1fa62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f1b91cb5b95c3c26", "level": "note", "message": {"text": "Very large file: routers/wardrobe_capture.py (2168 lines)"}, "properties": {"repobilityId": "6ab1844fcf68d2a1", "scanner": "scanner-primary", "fingerprint": "f1b91cb5b95c3c26", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a80f28c2a4c99cbb", "level": "note", "message": {"text": "Very large file: routers/chat.py (5022 lines)"}, "properties": {"repobilityId": "1c8380fa258bfab6", "scanner": "scanner-primary", "fingerprint": "a80f28c2a4c99cbb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0efbcfc1bf5c3c0b", "level": "note", "message": {"text": "Very large file: brain/orchestrator.py (1388 lines)"}, "properties": {"repobilityId": "bc541a4314e89840", "scanner": "scanner-primary", "fingerprint": "0efbcfc1bf5c3c0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-46592d1f1155edab", "level": "note", "message": {"text": "Very large file: brain/outfit_pipeline.py (3853 lines)"}, "properties": {"repobilityId": "c4b48709027f1d74", "scanner": "scanner-primary", "fingerprint": "46592d1f1155edab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a12c65a5c71edae7", "level": "note", "message": {"text": "Very large file: brain/engines/style_scorer.py (1572 lines)"}, "properties": {"repobilityId": "0434b551829aa2b7", "scanner": "scanner-primary", "fingerprint": "a12c65a5c71edae7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-05747d68a5a9cdf2", "level": "note", "message": {"text": "Very large file: services/style_flow_service.py (5339 lines)"}, "properties": {"repobilityId": "737e3529166ba830", "scanner": "scanner-primary", "fingerprint": "05747d68a5a9cdf2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-67b0ad16964a2016", "level": "note", "message": {"text": "Very large file: services/agent_metadata_validator.py (1633 lines)"}, "properties": {"repobilityId": "3e9e26ddc54f027d", "scanner": "scanner-primary", "fingerprint": "67b0ad16964a2016", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbb9902bec1c4747", "level": "note", "message": {"text": "Very large file: services/stylist_knowledge_service.py (1287 lines)"}, "properties": {"repobilityId": "616122d8d9514252", "scanner": "scanner-primary", "fingerprint": "bbb9902bec1c4747", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d346d249e9ac39a", "level": "note", "message": {"text": "Very large file: services/style_reasoning_engine.py (5269 lines)"}, "properties": {"repobilityId": "7efb7b1938b8dff7", "scanner": "scanner-primary", "fingerprint": "4d346d249e9ac39a", "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": "722e7019f0b7f704", "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": "5e0f281a80c37cdc", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "f4c59341e3ac4106", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "3bc60ec38f12dbc0", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-8d013793e493127c", "level": "note", "message": {"text": "Legacy-named symbol `_complete_the_look_copy` in tests/test_editorial_polish.py:118"}, "properties": {"repobilityId": "7735a18b735cae69", "scanner": "scanner-primary", "fingerprint": "8d013793e493127c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d4a8d429620180f8", "level": "note", "message": {"text": "Legacy-named symbol `normalize_metadata_v2` in tests/test_agent_metadata_validator.py:16"}, "properties": {"repobilityId": "4c46fa8e60229464", "scanner": "scanner-primary", "fingerprint": "d4a8d429620180f8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ca8fb08d62befd23", "level": "note", "message": {"text": "Legacy-named symbol `test_curated_board_strategies_are_distinct_v2` in tests/test_style_more_options.py:587"}, "properties": {"repobilityId": "3bbb906d88455477", "scanner": "scanner-primary", "fingerprint": "ca8fb08d62befd23", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c544444925daf6ce", "level": "note", "message": {"text": "Legacy-named symbol `metadata_v2` in tests/test_metadata_richness_guard.py:227"}, "properties": {"repobilityId": "38d4cc79d9d54685", "scanner": "scanner-primary", "fingerprint": "c544444925daf6ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5833ee30c481b974", "level": "note", "message": {"text": "Legacy-named symbol `metadata_v2` in tests/test_wardrobe_update_labels.py:281"}, "properties": {"repobilityId": "e623060e4e588646", "scanner": "scanner-primary", "fingerprint": "5833ee30c481b974", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30708e5bfe00c70b", "level": "note", "message": {"text": "Legacy-named symbol `metadata_v2` in tests/test_style_scorer_occasion.py:89"}, "properties": {"repobilityId": "6df1a5f11ba61da6", "scanner": "scanner-primary", "fingerprint": "30708e5bfe00c70b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6c4f5b115b2f4709", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/test_wardrobe_capture_gemini_multi.py:546"}, "properties": {"repobilityId": "7869b0e91bee9d33", "scanner": "scanner-primary", "fingerprint": "6c4f5b115b2f4709", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a8c215e58e289cf", "level": "note", "message": {"text": "Legacy-named symbol `style_flow_service_adapter_v1` in tests/test_module_chat_route.py:424"}, "properties": {"repobilityId": "2ed62f2e5ed14cb7", "scanner": "scanner-primary", "fingerprint": "4a8c215e58e289cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-313f634cf288322b", "level": "note", "message": {"text": "Legacy-named symbol `normalize_metadata_v2` in scripts/backfill_style_metadata.py:16"}, "properties": {"repobilityId": "c93145cfdb644440", "scanner": "scanner-primary", "fingerprint": "313f634cf288322b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ad9a1395cf41e33", "level": "note", "message": {"text": "Legacy-named symbol `calendar_runtime_v1` in routers/calendar.py:290"}, "properties": {"repobilityId": "a4cc9c602c932357", "scanner": "scanner-primary", "fingerprint": "4ad9a1395cf41e33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02e95855ec75c268", "level": "note", "message": {"text": "Legacy-named symbol `style_flow_service_adapter_v1` in routers/chat.py:2046"}, "properties": {"repobilityId": "894afdeef4ed1816", "scanner": "scanner-primary", "fingerprint": "02e95855ec75c268", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-112470ce0b095afa", "level": "none", "message": {"text": "Commented-code block (5 lines) in routers/chat.py:2788"}, "properties": {"repobilityId": "ceff78855d3e3ae7", "scanner": "scanner-primary", "fingerprint": "112470ce0b095afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-233b128818d85297", "level": "note", "message": {"text": "Legacy-named symbol `clip_with_embedding_v2` in routers/garment_analyzer.py:234"}, "properties": {"repobilityId": "9df478d25b537a5c", "scanner": "scanner-primary", "fingerprint": "233b128818d85297", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2647cbf851bf584d", "level": "none", "message": {"text": "Commented-code block (8 lines) in routers/boards.py:127"}, "properties": {"repobilityId": "5c354e852978c191", "scanner": "scanner-primary", "fingerprint": "2647cbf851bf584d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad31833818fc5644", "level": "note", "message": {"text": "Legacy-named symbol `_ahvi_style_dna_preflight_v2` in brain/orchestrator.py:1332"}, "properties": {"repobilityId": "9bfb22165e623321", "scanner": "scanner-primary", "fingerprint": "ad31833818fc5644", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cb1db5acf1f4ab56", "level": "none", "message": {"text": "Commented-code block (5 lines) in brain/orchestrator.py:1011"}, "properties": {"repobilityId": "7c397c2a81164872", "scanner": "scanner-primary", "fingerprint": "cb1db5acf1f4ab56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc233ea104ef83fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in brain/outfit_pipeline.py:1454"}, "properties": {"repobilityId": "553450fff95aee76", "scanner": "scanner-primary", "fingerprint": "fc233ea104ef83fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91c7cc80f51fcc6e", "level": "note", "message": {"text": "Legacy-named symbol `weighted_priority_v1` in brain/decision_engine.py:56"}, "properties": {"repobilityId": "bd4354afd7e74bf2", "scanner": "scanner-primary", "fingerprint": "91c7cc80f51fcc6e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-54ede91fb6356b7b", "level": "note", "message": {"text": "Legacy-named symbol `decision_engine_v1` in brain/daily_dependency_engine.py:412"}, "properties": {"repobilityId": "df618ccd79e5bca0", "scanner": "scanner-primary", "fingerprint": "54ede91fb6356b7b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d37386bd4f0c778c", "level": "note", "message": {"text": "Legacy-named symbol `color_harmony_bank_v1` in brain/intelligence/bank_snippets.py:73"}, "properties": {"repobilityId": "3b094eb039f100ac", "scanner": "scanner-primary", "fingerprint": "d37386bd4f0c778c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8245c46c07fab4da", "level": "note", "message": {"text": "Legacy-named symbol `prompt_bank_v1` in brain/utils/prompt_engine.py:9"}, "properties": {"repobilityId": "3c2d536c34dcfcc8", "scanner": "scanner-primary", "fingerprint": "8245c46c07fab4da", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-95cb9fc7f1c253ee", "level": "note", "message": {"text": "Legacy-named symbol `ahvi_tone_engine_v1` in brain/tone/tone_engine.py:32"}, "properties": {"repobilityId": "19b3cb655f54f456", "scanner": "scanner-primary", "fingerprint": "95cb9fc7f1c253ee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c43476e5fba4c20f", "level": "note", "message": {"text": "Legacy-named symbol `_ahvi_gender_patch_v2` in brain/personalization/style_dna_engine.py:303"}, "properties": {"repobilityId": "5944ceab90fd1a10", "scanner": "scanner-primary", "fingerprint": "c43476e5fba4c20f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8a88d36cce3432d7", "level": "note", "message": {"text": "Legacy-named symbol `color_palette_bank_v1` in brain/engines/styling/palette_engine.py:13"}, "properties": {"repobilityId": "f06abf4fe229c6b9", "scanner": "scanner-primary", "fingerprint": "8a88d36cce3432d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3bcc604d56197c82", "level": "note", "message": {"text": "Legacy-named symbol `events_bank_v1` in brain/engines/styling/style_builder.py:20"}, "properties": {"repobilityId": "edad341f3ea59e4f", "scanner": "scanner-primary", "fingerprint": "3bcc604d56197c82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6f36214a22897fcc", "level": "note", "message": {"text": "Legacy-named symbol `calendar_orchestrator_v1` in brain/engines/calendar/calendar_runtime.py:75"}, "properties": {"repobilityId": "c5a996e128397e4c", "scanner": "scanner-primary", "fingerprint": "6f36214a22897fcc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0e1fd145bcd0196a", "level": "note", "message": {"text": "Legacy-named symbol `shopping_engine_pack_v1` in brain/shopping/shopping_system.py:13"}, "properties": {"repobilityId": "be1d76c2bd328f15", "scanner": "scanner-primary", "fingerprint": "0e1fd145bcd0196a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8da7674f4dfe59d5", "level": "note", "message": {"text": "Legacy-named symbol `wardrobe_tag_normalizer_v1` in brain/wardrobe/wardrobe_normalizer.py:2"}, "properties": {"repobilityId": "a667311f503a9077", "scanner": "scanner-primary", "fingerprint": "8da7674f4dfe59d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-433c334fd002853c", "level": "note", "message": {"text": "Legacy-named symbol `_clean_editorial_copy` in services/style_flow_service.py:263"}, "properties": {"repobilityId": "827ac7973e4b4b76", "scanner": "scanner-primary", "fingerprint": "433c334fd002853c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-97125bbcf2cd5d62", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/style_flow_service.py:4422"}, "properties": {"repobilityId": "ebc122b4af5a5438", "scanner": "scanner-primary", "fingerprint": "97125bbcf2cd5d62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa2108d832872995", "level": "note", "message": {"text": "Legacy-named symbol `normalize_metadata_v2` in services/wardrobe_persistence_service.py:275"}, "properties": {"repobilityId": "5f0466639b7167dd", "scanner": "scanner-primary", "fingerprint": "aa2108d832872995", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c50bc752b504542b", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/wardrobe_persistence_service.py:1264"}, "properties": {"repobilityId": "80c203051aef9e0c", "scanner": "scanner-primary", "fingerprint": "c50bc752b504542b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbe658b74706824f", "level": "note", "message": {"text": "Legacy-named symbol `_style_blob_for_v2` in services/agent_metadata_validator.py:241"}, "properties": {"repobilityId": "0e57c116e6a86edb", "scanner": "scanner-primary", "fingerprint": "dbe658b74706824f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9b424ffb82e82bb2", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/llm_service.py:225"}, "properties": {"repobilityId": "3cf3438c33d73d00", "scanner": "scanner-primary", "fingerprint": "9b424ffb82e82bb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-013d24c1887f93b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in services/agent_style_orchestrator.py:678"}, "properties": {"repobilityId": "3116736dbf3571ac", "scanner": "scanner-primary", "fingerprint": "013d24c1887f93b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-caeb351f7cb4ee9a", "level": "note", "message": {"text": "Legacy-named symbol `_complete_the_look_copy` in services/style_reasoning_engine.py:3672"}, "properties": {"repobilityId": "c57d80d3096edfb0", "scanner": "scanner-primary", "fingerprint": "caeb351f7cb4ee9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0f8cd3ab92648dfb", "level": "none", "message": {"text": "Commented-code block (5 lines) in services/style_reasoning_engine.py:181"}, "properties": {"repobilityId": "96a3ecab21e424f7", "scanner": "scanner-primary", "fingerprint": "0f8cd3ab92648dfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "34baadaca2d17176", "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": "77e877264c235a45", "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": "243fb5770b89305c", "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": "4911483a1fdef2e0", "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": "dddf998680492661", "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": "cb10b72d43f7a6c9", "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": "312a29815d638b44", "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": "b0b77e79541a6010", "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": "3d96a23a73f1154b", "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": "aaad4aa680be302b", "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": "02d691c6562ffd0b", "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": "9baa624d7d298b0a", "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": "fac13023c97c6a26", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "a3d7a0cce4a4a2e1", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "2bbac424d9d5c003", "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": "0a1dd54f8f44bb94", "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": "b31c9c64bad0d375", "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": "9de64f1c7f43bc23", "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": "3fe14fb6b2ae1cf5", "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": "13b1088f68551069", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-c1e596f4fe4de643", "level": "error", "message": {"text": "FastAPI POST `fallback_text_chat` without auth dependency \u2014 main.py:759"}, "properties": {"repobilityId": "9b8cb95fda7f87c9", "scanner": "scanner-primary", "fingerprint": "c1e596f4fe4de643", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 759}}}]}, {"ruleId": "scanner-413afa0bb7c129ff", "level": "error", "message": {"text": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:801"}, "properties": {"repobilityId": "2689c85edd59f064", "scanner": "scanner-primary", "fingerprint": "413afa0bb7c129ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 801}}}]}, {"ruleId": "scanner-1a2d4d2241f79bca", "level": "error", "message": {"text": "FastAPI POST `fallback_module_chat` without auth dependency \u2014 main.py:802"}, "properties": {"repobilityId": "1d121ffa844338d1", "scanner": "scanner-primary", "fingerprint": "1a2d4d2241f79bca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 802}}}]}, {"ruleId": "scanner-308736f58cb7ba07", "level": "error", "message": {"text": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:833"}, "properties": {"repobilityId": "c38d915236e5ce6f", "scanner": "scanner-primary", "fingerprint": "308736f58cb7ba07", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 833}}}]}, {"ruleId": "scanner-b225f50193812573", "level": "error", "message": {"text": "FastAPI POST `remove_bg_compat` without auth dependency \u2014 main.py:834"}, "properties": {"repobilityId": "0f04836609984b8f", "scanner": "scanner-primary", "fingerprint": "b225f50193812573", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 834}}}]}, {"ruleId": "scanner-92b82937679db880", "level": "error", "message": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:862"}, "properties": {"repobilityId": "e5317f970bf4dcd4", "scanner": "scanner-primary", "fingerprint": "92b82937679db880", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 862}}}]}, {"ruleId": "scanner-6ebb1fe67ad5837d", "level": "error", "message": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:863"}, "properties": {"repobilityId": "c179bd44ef251fa0", "scanner": "scanner-primary", "fingerprint": "6ebb1fe67ad5837d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 863}}}]}, {"ruleId": "scanner-6838a442966cc766", "level": "error", "message": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:864"}, "properties": {"repobilityId": "029f2fa396d38e4f", "scanner": "scanner-primary", "fingerprint": "6838a442966cc766", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 864}}}]}, {"ruleId": "scanner-11db5fabc9fc1659", "level": "error", "message": {"text": "FastAPI POST `analyze_compat` without auth dependency \u2014 main.py:865"}, "properties": {"repobilityId": "3dcac3a3066d4cea", "scanner": "scanner-primary", "fingerprint": "11db5fabc9fc1659", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "main.py"}, "region": {"startLine": 865}}}]}, {"ruleId": "scanner-2d814f37628e86bf", "level": "error", "message": {"text": "FastAPI POST `run_ai` without auth dependency \u2014 api/ai.py:98"}, "properties": {"repobilityId": "438556a01d4797c6", "scanner": "scanner-primary", "fingerprint": "2d814f37628e86bf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api/ai.py"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-b57611c42c87e42f", "level": "error", "message": {"text": "FastAPI POST `anthropic_messages` without auth dependency \u2014 routers/utilities.py:41"}, "properties": {"repobilityId": "32fef5ce076e7db3", "scanner": "scanner-primary", "fingerprint": "b57611c42c87e42f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/utilities.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-775cd1a446b01900", "level": "error", "message": {"text": "FastAPI POST `upload_avatar` without auth dependency \u2014 routers/utilities.py:109"}, "properties": {"repobilityId": "297aad9e19750cc6", "scanner": "scanner-primary", "fingerprint": "775cd1a446b01900", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/utilities.py"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-09ddeca936159899", "level": "error", "message": {"text": "FastAPI POST `upload_wardrobe_images` without auth dependency \u2014 routers/utilities.py:123"}, "properties": {"repobilityId": "6d54687ac128e44d", "scanner": "scanner-primary", "fingerprint": "09ddeca936159899", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/utilities.py"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-64728a1f37ec964e", "level": "error", "message": {"text": "FastAPI POST `check_outfit_duplicate` without auth dependency \u2014 routers/data.py:1394"}, "properties": {"repobilityId": "d445150a99fe8706", "scanner": "scanner-primary", "fingerprint": "64728a1f37ec964e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/data.py"}, "region": {"startLine": 1394}}}]}, {"ruleId": "scanner-2fd06d8f393f1a3a", "level": "error", "message": {"text": "FastAPI POST `create_document` without auth dependency \u2014 routers/data.py:1467"}, "properties": {"repobilityId": "ccd76a4b475ff974", "scanner": "scanner-primary", "fingerprint": "2fd06d8f393f1a3a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/data.py"}, "region": {"startLine": 1467}}}]}, {"ruleId": "scanner-c733f6fd8f06bbfc", "level": "error", "message": {"text": "FastAPI PATCH `update_document` without auth dependency \u2014 routers/data.py:1818"}, "properties": {"repobilityId": "815435cd3563f9a5", "scanner": "scanner-primary", "fingerprint": "c733f6fd8f06bbfc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/data.py"}, "region": {"startLine": 1818}}}]}, {"ruleId": "scanner-ed07b0eaca172b10", "level": "error", "message": {"text": "FastAPI DELETE `delete_document` without auth dependency \u2014 routers/data.py:1845"}, "properties": {"repobilityId": "d04092b519a33572", "scanner": "scanner-primary", "fingerprint": "ed07b0eaca172b10", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/data.py"}, "region": {"startLine": 1845}}}]}, {"ruleId": "scanner-756dd2ef60964769", "level": "error", "message": {"text": "FastAPI PUT `upsert_user_profile` without auth dependency \u2014 routers/data.py:1921"}, "properties": {"repobilityId": "43967bb589e8f410", "scanner": "scanner-primary", "fingerprint": "756dd2ef60964769", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/data.py"}, "region": {"startLine": 1921}}}]}, {"ruleId": "scanner-29446b0f9cc8b71f", "level": "error", "message": {"text": "FastAPI POST `scan_bill` without auth dependency \u2014 routers/bills.py:78"}, "properties": {"repobilityId": "e482e8eb2f67dd09", "scanner": "scanner-primary", "fingerprint": "29446b0f9cc8b71f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/bills.py"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-42ee3f2052c3c153", "level": "error", "message": {"text": "FastAPI POST `wear_today` without auth dependency \u2014 routers/style_memory.py:26"}, "properties": {"repobilityId": "6218bb6782152601", "scanner": "scanner-primary", "fingerprint": "42ee3f2052c3c153", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/style_memory.py"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-c32d589fc44a8c7f", "level": "error", "message": {"text": "FastAPI POST `analyze_capture` without auth dependency \u2014 routers/wardrobe_capture.py:1077"}, "properties": {"repobilityId": "d768b333290d5053", "scanner": "scanner-primary", "fingerprint": "c32d589fc44a8c7f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/wardrobe_capture.py"}, "region": {"startLine": 1077}}}]}, {"ruleId": "scanner-ad9c16dd679af62e", "level": "error", "message": {"text": "FastAPI POST `analyze_capture_batch` without auth dependency \u2014 routers/wardrobe_capture.py:1772"}, "properties": {"repobilityId": "dbad3c16a5a39159", "scanner": "scanner-primary", "fingerprint": "ad9c16dd679af62e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/wardrobe_capture.py"}, "region": {"startLine": 1772}}}]}, {"ruleId": "scanner-8d2f8b356f018880", "level": "error", "message": {"text": "FastAPI POST `save_selected` without auth dependency \u2014 routers/wardrobe_capture.py:1946"}, "properties": {"repobilityId": "989e07be5aa65e85", "scanner": "scanner-primary", "fingerprint": "8d2f8b356f018880", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/wardrobe_capture.py"}, "region": {"startLine": 1946}}}]}, {"ruleId": "scanner-25f565fcb07b75c7", "level": "error", "message": {"text": "FastAPI POST `delete_selected` without auth dependency \u2014 routers/wardrobe_capture.py:2074"}, "properties": {"repobilityId": "adbd8f53fb7787ec", "scanner": "scanner-primary", "fingerprint": "25f565fcb07b75c7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/wardrobe_capture.py"}, "region": {"startLine": 2074}}}]}, {"ruleId": "scanner-a973d40285a36989", "level": "error", "message": {"text": "FastAPI POST `feedback_item` without auth dependency \u2014 routers/feedback.py:25"}, "properties": {"repobilityId": "de25dd56baa452a9", "scanner": "scanner-primary", "fingerprint": "a973d40285a36989", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/feedback.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-d5e0f61b61511dbe", "level": "error", "message": {"text": "FastAPI POST `feedback_board` without auth dependency \u2014 routers/feedback.py:45"}, "properties": {"repobilityId": "6ece22f9d82b08a1", "scanner": "scanner-primary", "fingerprint": "d5e0f61b61511dbe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/feedback.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-8f3d5183751301ee", "level": "error", "message": {"text": "FastAPI POST `remove_background` without auth dependency \u2014 routers/bg_router.py:27"}, "properties": {"repobilityId": "87bcf59635a98880", "scanner": "scanner-primary", "fingerprint": "8f3d5183751301ee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/bg_router.py"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-fbc850b3739d83a5", "level": "error", "message": {"text": "FastAPI POST `remove_background_compat` without auth dependency \u2014 routers/bg_router.py:45"}, "properties": {"repobilityId": "ca402293df8bb297", "scanner": "scanner-primary", "fingerprint": "fbc850b3739d83a5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/bg_router.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-d99aee0bdf7372e6", "level": "error", "message": {"text": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3416"}, "properties": {"repobilityId": "c0d5933d76e5a650", "scanner": "scanner-primary", "fingerprint": "d99aee0bdf7372e6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/chat.py"}, "region": {"startLine": 3416}}}]}, {"ruleId": "scanner-d2116e9144aeb62e", "level": "error", "message": {"text": "FastAPI POST `module_chat` without auth dependency \u2014 routers/chat.py:3417"}, "properties": {"repobilityId": "9226a34095ccfc3a", "scanner": "scanner-primary", "fingerprint": "d2116e9144aeb62e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/chat.py"}, "region": {"startLine": 3417}}}]}, {"ruleId": "scanner-8f017e0ffa98fad3", "level": "error", "message": {"text": "FastAPI POST `text_chat` without auth dependency \u2014 routers/chat.py:3572"}, "properties": {"repobilityId": "343d04d6dfc371ec", "scanner": "scanner-primary", "fingerprint": "8f017e0ffa98fad3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/chat.py"}, "region": {"startLine": 3572}}}]}, {"ruleId": "scanner-725f1704d411d29e", "level": "error", "message": {"text": "FastAPI POST `create_contact` without auth dependency \u2014 routers/ahvi_contacts.py:202"}, "properties": {"repobilityId": "c3fb0981671d48a9", "scanner": "scanner-primary", "fingerprint": "725f1704d411d29e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/ahvi_contacts.py"}, "region": {"startLine": 202}}}]}, {"ruleId": "scanner-a603d19b839ec9d9", "level": "error", "message": {"text": "FastAPI PUT `update_contact` without auth dependency \u2014 routers/ahvi_contacts.py:230"}, "properties": {"repobilityId": "bfa0733345da11c6", "scanner": "scanner-primary", "fingerprint": "a603d19b839ec9d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/ahvi_contacts.py"}, "region": {"startLine": 230}}}]}, {"ruleId": "scanner-33ae3444caaf6188", "level": "error", "message": {"text": "FastAPI PATCH `patch_contact` without auth dependency \u2014 routers/ahvi_contacts.py:258"}, "properties": {"repobilityId": "68deb3f2c34d3fc9", "scanner": "scanner-primary", "fingerprint": "33ae3444caaf6188", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/ahvi_contacts.py"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-9ee84bc0362b1623", "level": "error", "message": {"text": "FastAPI DELETE `delete_contact` without auth dependency \u2014 routers/ahvi_contacts.py:265"}, "properties": {"repobilityId": "3b8e1459c41fd882", "scanner": "scanner-primary", "fingerprint": "9ee84bc0362b1623", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/ahvi_contacts.py"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-e7473e6a3703bf97", "level": "error", "message": {"text": "FastAPI POST `find_similar_items` without auth dependency \u2014 routers/lens_similar.py:121"}, "properties": {"repobilityId": "1dbd3e4dc5bd5f8a", "scanner": "scanner-primary", "fingerprint": "e7473e6a3703bf97", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/lens_similar.py"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-576cf4fbf067cc67", "level": "error", "message": {"text": "FastAPI POST `dispatch_due` without auth dependency \u2014 routers/notifications.py:113"}, "properties": {"repobilityId": "6fd3a83183f74cdc", "scanner": "scanner-primary", "fingerprint": "576cf4fbf067cc67", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/notifications.py"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-1567545a044b01fb", "level": "error", "message": {"text": "FastAPI POST `dispatch_due_async` without auth dependency \u2014 routers/notifications.py:167"}, "properties": {"repobilityId": "60bb56c72af46582", "scanner": "scanner-primary", "fingerprint": "1567545a044b01fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/notifications.py"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-06463cf7f41d08c9", "level": "error", "message": {"text": "FastAPI POST `analyze_garment` without auth dependency \u2014 routers/garment_analyzer.py:153"}, "properties": {"repobilityId": "6847398067a23bf2", "scanner": "scanner-primary", "fingerprint": "06463cf7f41d08c9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/garment_analyzer.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-e285db569d255abe", "level": "error", "message": {"text": "FastAPI POST `vision_intelligence_check` without auth dependency \u2014 routers/ops.py:132"}, "properties": {"repobilityId": "2c1b1a4d193a8e4b", "scanner": "scanner-primary", "fingerprint": "e285db569d255abe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/ops.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-945396c739845bde", "level": "error", "message": {"text": "FastAPI POST `save_board` without auth dependency \u2014 routers/boards.py:97"}, "properties": {"repobilityId": "8a9d1490f666df43", "scanner": "scanner-primary", "fingerprint": "945396c739845bde", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/boards.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-87ae10918fdf106a", "level": "error", "message": {"text": "FastAPI POST `save_life_board` without auth dependency \u2014 routers/boards.py:166"}, "properties": {"repobilityId": "becec63d5afc53c9", "scanner": "scanner-primary", "fingerprint": "87ae10918fdf106a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/boards.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-022e87709926b715", "level": "error", "message": {"text": "FastAPI DELETE `delete_board` without auth dependency \u2014 routers/boards.py:190"}, "properties": {"repobilityId": "4ec55e87e90a1550", "scanner": "scanner-primary", "fingerprint": "022e87709926b715", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/boards.py"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-a04153a95f58f0a8", "level": "error", "message": {"text": "FastAPI POST `get_item_suggestions` without auth dependency \u2014 routers/stylist.py:22"}, "properties": {"repobilityId": "caed1881ae737464", "scanner": "scanner-primary", "fingerprint": "a04153a95f58f0a8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/stylist.py"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-ecb4119e807fded2", "level": "error", "message": {"text": "FastAPI POST `run_outfit_pipeline` without auth dependency \u2014 routers/stylist.py:66"}, "properties": {"repobilityId": "17a7c6c08de19942", "scanner": "scanner-primary", "fingerprint": "ecb4119e807fded2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "routers/stylist.py"}, "region": {"startLine": 66}}}]}]}]}