{"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": "foundry_unresolved_feedback", "name": "Foundry mined unresolved feedback: Zeed80/ai-docs", "shortDescription": {"text": "Foundry mined unresolved feedback: Zeed80/ai-docs"}, "fullDescription": {"text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#2\nRepo: Zeed80/ai-docs\nIssue/PR number: 2\nGraph consistency label: needs_more_evidence\nNodes: 18\nEdges: 38\nNode types: {'pr_file': 9, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 9, 'comment_c"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_blueprint_gap", "name": "Foundry mined blueprint gap alignment: Zeed80/ai-docs", "shortDescription": {"text": "Foundry mined blueprint gap alignment: Zeed80/ai-docs"}, "fullDescription": {"text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#4\nRepo: Zeed80/ai-docs\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 85\nNode types: {'pr_file': 41, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outco"}, "properties": {"scanner": "foundry_dataset", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "cwe": "", "owasp": ""}}, {"id": "foundry_assumption_check", "name": "Foundry mined assumption checks: Zeed80/ai-docs", "shortDescription": {"text": "Foundry mined assumption checks: Zeed80/ai-docs"}, "fullDescription": {"text": "Comment chain pattern product: assumption_checks\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#5\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Zeed80/ai-docs#5\nRepo: Zeed80/ai-docs\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 35\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 9, 'docs_or_claims': 1, 'api_or_backend': 17, 'schema_or_data': 1, 'test_or_ci': 6, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aaba38218a8872e0\",\n    \"kind\": \"pull_request_bod"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "medium", "confidence": 0.62, "cwe": "", "owasp": ""}}, {"id": "foundry_test_ci_gap", "name": "Foundry mined test ci gap after feedback: Zeed80/ai-docs", "shortDescription": {"text": "Foundry mined test ci gap after feedback: Zeed80/ai-docs"}, "fullDescription": {"text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#4\nRepo: Zeed80/ai-docs\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 85\nNode types: {'pr_file': 41, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, "}, "properties": {"scanner": "foundry_dataset", "category": "testing", "severity": "high", "confidence": 0.78, "cwe": "", "owasp": ""}}, {"id": "foundry_bad_chain", "name": "Foundry mined bad chains: Zeed80/ai-docs", "shortDescription": {"text": "Foundry mined bad chains: Zeed80/ai-docs"}, "fullDescription": {"text": "Comment chain pattern product: bad_chains\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Zeed80/ai-docs#2\nRepo: Zeed80/ai-docs\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 9\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 8, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-89d0db7ba063e0e1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.c"}, "properties": {"scanner": "foundry_dataset", "category": "practices", "severity": "high", "confidence": 0.84, "cwe": "", "owasp": ""}}, {"id": "scanner-5cf123f4e36b1979", "name": "Possibly dead Python function: restore_saved_limits", "shortDescription": {"text": "Possibly dead Python function: restore_saved_limits"}, "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-c3dcd8de71a17a9b", "name": "Possibly dead Python function: do_GET", "shortDescription": {"text": "Possibly dead Python function: do_GET"}, "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-10bfb571a035382d", "name": "Possibly dead Python function: do_POST", "shortDescription": {"text": "Possibly dead Python function: do_POST"}, "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-275f70190b0923ed", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-27556460d7633e41", "name": "Possibly dead Python function: make_shaft_detail_png", "shortDescription": {"text": "Possibly dead Python function: make_shaft_detail_png"}, "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-4eb259de33fa6264", "name": "Possibly dead Python function: make_flange_detail_png", "shortDescription": {"text": "Possibly dead Python function: make_flange_detail_png"}, "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-8b4a1bcb27b1986a", "name": "Possibly dead Python function: make_assembly_drawing_png", "shortDescription": {"text": "Possibly dead Python function: make_assembly_drawing_png"}, "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-17865f828210364a", "name": "Possibly dead Python function: make_section_view_png", "shortDescription": {"text": "Possibly dead Python function: make_section_view_png"}, "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-f8f99b10dbae299f", "name": "Possibly dead Python function: make_weld_drawing_png", "shortDescription": {"text": "Possibly dead Python function: make_weld_drawing_png"}, "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-4267b6ef1873817a", "name": "Possibly dead Python function: make_gear_detail_dxf", "shortDescription": {"text": "Possibly dead Python function: make_gear_detail_dxf"}, "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-c1eb7977a3db208b", "name": "Possibly dead Python function: make_threaded_shaft_dxf", "shortDescription": {"text": "Possibly dead Python function: make_threaded_shaft_dxf"}, "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-1bf50a086dab21fc", "name": "Possibly dead Python function: model_post_init", "shortDescription": {"text": "Possibly dead Python function: model_post_init"}, "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-96905b9864e9d563", "name": "Possibly dead Python function: create_signed_file_token", "shortDescription": {"text": "Possibly dead Python function: create_signed_file_token"}, "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-69467453dd0fe24e", "name": "Possibly dead Python function: verify_signed_file_token", "shortDescription": {"text": "Possibly dead Python function: verify_signed_file_token"}, "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-d64b9eaa4ce0b5bd", "name": "Possibly dead Python function: send_fn", "shortDescription": {"text": "Possibly dead Python function: send_fn"}, "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-120841ff59f6da0d", "name": "Possibly dead Python function: notify_document_processed", "shortDescription": {"text": "Possibly dead Python function: notify_document_processed"}, "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-1aa95603395b89fb", "name": "Possibly dead Python function: notify_anomaly", "shortDescription": {"text": "Possibly dead Python function: notify_anomaly"}, "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-887e7e5fdf68c973", "name": "Possibly dead Python function: notify_approval_required", "shortDescription": {"text": "Possibly dead Python function: notify_approval_required"}, "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-2dcd931338243491", "name": "Possibly dead Python function: record_turn_feedback", "shortDescription": {"text": "Possibly dead Python function: record_turn_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-67a72d00a335c909", "name": "Possibly dead Python function: chat_with_images", "shortDescription": {"text": "Possibly dead Python function: chat_with_images"}, "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-2f6867ef555f16c1", "name": "Possibly dead Python function: update_model", "shortDescription": {"text": "Possibly dead Python function: update_model"}, "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-54b327950ab3aa67", "name": "Possibly dead Python function: extract_step_geometry", "shortDescription": {"text": "Possibly dead Python function: extract_step_geometry"}, "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-5942718f71439e6c", "name": "Possibly dead Python function: select_models", "shortDescription": {"text": "Possibly dead Python function: select_models"}, "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-7fd9577785eee9ec", "name": "Possibly dead Python function: update_tier_models", "shortDescription": {"text": "Possibly dead Python function: update_tier_models"}, "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-53d7b4ae8c64e58a", "name": "Possibly dead Python function: replacer", "shortDescription": {"text": "Possibly dead Python function: replacer"}, "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-a5dc9f817c2e846d", "name": "Possibly dead Python function: role_default_canvases", "shortDescription": {"text": "Possibly dead Python function: role_default_canvases"}, "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-87d03c1a1a1d90e0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/CommandPalette.tsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/CommandPalette.tsx:222"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-81959bbe40ba901d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/drawings/DrawingViewer.tsx:253", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/drawings/DrawingViewer.tsx:253"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ea97c0ed5b7d8b6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureEditor.tsx:561", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureEditor.tsx:561"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7f0c126d9669066", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/ToolBindingPanel.tsx:150", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/ToolBindingPanel.tsx:150"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6506affcf6f02774", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureTree.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureTree.tsx:153"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc45ec256f78ace8", "name": "Icon-only button without accessible name \u2014 frontend/components/drawings/DrawingWorkspace.tsx:1111", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/components/drawings/DrawingWorkspace.tsx:1111"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-745e68da07dde259", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/DrawingWorkspace.tsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/DrawingWorkspace.tsx:269"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90e224668999259d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/email-templates.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/email-templates.tsx:248"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1349640ad836faf9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/email/email-templates.tsx:496", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/email/email-templates.tsx:496"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8511d4c3f9a89b6d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/mailbox-settings.tsx:239", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/mailbox-settings.tsx:239"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-767f26c71973d848", "name": "Icon-only button without accessible name \u2014 frontend/components/review/comment-thread.tsx:148", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/components/review/comment-thread.tsx:148"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26e7f783a8277983", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/sidebar.tsx:701", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/sidebar.tsx:701"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc4d11347bc24a3d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/catalogs/CatalogBrowser.tsx:191", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/catalogs/CatalogBrowser.tsx:191"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dad2a14dfcd8c9bf", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/workspace/agent-workspace-blocks.tsx:39", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/workspace/agent-workspace-blocks.tsx:39"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36450ba2609f69f7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/chat-widget.tsx:419", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/chat-widget.tsx:419"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b7bba7672fa805a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/sveta-panel.tsx:1083", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/sveta-panel.tsx:1083"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62fe0fc7b7ed54d3", "name": "Icon-only button without accessible name \u2014 frontend/components/documents/share-to-chat-modal.tsx:93", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/components/documents/share-to-chat-modal.tsx:93"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aadff81483e6bcf3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-documents.tsx:38", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-documents.tsx:38"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80e25b65ede15366", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-chart.tsx:190", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-chart.tsx:190"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1d6314759e11d73", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/canvas/canvas-markdown.tsx:44", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/canvas/canvas-markdown.tsx:44"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5f73460a3456cf6a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/page.tsx:1450", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/page.tsx:1450"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec072ff468236cc9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/models/page.tsx:703", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/models/page.tsx:703"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6846c09b30014128", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/normalization/page.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/normalization/page.tsx:312"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef381cc74deeafd0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/ntd/page.tsx:340", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/ntd/page.tsx:340"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd953aff6a1fc6f7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/skills/page.tsx:291", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/skills/page.tsx:291"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b83c67d733b4f23a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/norm-cards/page.tsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/norm-cards/page.tsx:261"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5261b86ed8a2170f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/page.tsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/page.tsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f80df0c328feb5ef", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/[caseId]/page.tsx:269", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/[caseId]/page.tsx:269"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c3ed8ed5d73c133", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/page.tsx:355", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/page.tsx:355"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79439566aa732057", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/compare/[id]/page.tsx:232", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/compare/[id]/page.tsx:232"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca2fbd332b7418e3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/drawings/page.tsx:461", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/drawings/page.tsx:461"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a0c295008fb6ef3c", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/page.tsx:327", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/page.tsx:327"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb6ee781ae63c706", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/[id]/page.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/[id]/page.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37bd8ea57e6edb41", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/catalogs/page.tsx:177", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/catalogs/page.tsx:177"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1cbc4ac6c5f84a2b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/page.tsx:199", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/page.tsx:199"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8029a39b6920aa3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/[id]/page.tsx:87", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/[id]/page.tsx:87"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a76857de3522c09", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/search/page.tsx:250", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/search/page.tsx:250"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc46c8d6c8acd48c", "name": "Icon-only button without accessible name \u2014 frontend/app/admin/users/page.tsx:84", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/app/admin/users/page.tsx:84"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f69dd601ff7d5b44", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/admin/audit/page.tsx:345", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/admin/audit/page.tsx:345"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eddf996ba3e8aa00", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/page.tsx:221", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/page.tsx:221"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-456a76a2e21f3ca6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/[id]/page.tsx:364", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/[id]/page.tsx:364"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5383a3f1dfa6ebb8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/page.tsx:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/page.tsx:193"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1450c1dcaebd2f33", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/page.tsx:559", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/page.tsx:559"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f73a9d7a7926317", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/review/page.tsx:251", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/review/page.tsx:251"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f2bf27be2897050", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/suppliers/[id]/page.tsx:657", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/suppliers/[id]/page.tsx:657"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f22c1f2d91b09ed8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/warehouse/page.tsx:1044", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/warehouse/page.tsx:1044"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9eb38034ec56732d", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/approvals/page.tsx:424", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/approvals/page.tsx:424"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0128e707d5ccf2be", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/anomalies/[id]/page.tsx:252", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/anomalies/[id]/page.tsx:252"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42cf99690c25ccb6", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/quarantine/page.tsx:186", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/quarantine/page.tsx:186"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1849cc8406cd5c3", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/page.tsx:1343", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/page.tsx:1343"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ae6b1e96321fb1b", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/page.tsx:279", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/page.tsx:279"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-147bdea39db8e29a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/review/page.tsx:541", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/review/page.tsx:541"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33bf4789270ebbb4", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/boms/page.tsx:272", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/boms/page.tsx:272"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-382edb426a637c4f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/page.tsx:183", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/page.tsx:183"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ed8805021138a09", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/[id]/page.tsx:325", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/[id]/page.tsx:325"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d13b7601afc5b41", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/inbox/page.tsx:168", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/inbox/page.tsx:168"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01b28f686a025342", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/calendar/page.tsx:397", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/calendar/page.tsx:397"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41994365eb42b9de", "name": "Icon-only button without accessible name \u2014 frontend/app/invoices/page.tsx:695", "shortDescription": {"text": "Icon-only button without accessible name \u2014 frontend/app/invoices/page.tsx:695"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bc0a22c84cf975a", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/invoices/page.tsx:943", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/invoices/page.tsx:943"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0693fdca4ec55dd6", "name": "Stray `console.log` in TS/JS \u2014 scripts/check_agent_ws_adapter.js:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check_agent_ws_adapter.js:113"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4354010fe822b087", "name": "Privileged port 135 in use", "shortDescription": {"text": "Privileged port 135 in use"}, "fullDescription": {"text": "Port 135 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a7f39cdd5fa21931", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a537b985767d1b1", "name": "Dockerfile runs as root: infra/gpu-temp-helper/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: infra/gpu-temp-helper/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-571dffe6b21f2bb1", "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-607600f947ec6c08", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f66ad88286ca30a", "name": "Dockerfile runs as root: backend/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8cd20d539467d2c5", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-554d27e37bd569e5", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/drawings/DrawingViewer.tsx:253", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/drawings/DrawingViewer.tsx:253"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf0a6d4f62e35170", "name": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/review/pdf-viewer.tsx:71", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/review/pdf-viewer.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d0a6d2f16860f74", "name": "Insecure pattern 'local_storage_auth_token' in frontend/components/chat/sveta-panel.tsx:221", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/chat/sveta-panel.tsx:221"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d429a83b8a543e34", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/components/canvas/canvas-markdown.tsx:44", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/canvas/canvas-markdown.tsx:44"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/setup-buildx-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c02a75843624a068", "name": "Very large file: frontend/components/chat/sveta-panel.tsx (1586 lines)", "shortDescription": {"text": "Very large file: frontend/components/chat/sveta-panel.tsx (1586 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-b981934a4f108575", "name": "Very large file: frontend/app/settings/page.tsx (3009 lines)", "shortDescription": {"text": "Very large file: frontend/app/settings/page.tsx (3009 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-0e4906eb10bda9de", "name": "Very large file: frontend/app/settings/models/page.tsx (2819 lines)", "shortDescription": {"text": "Very large file: frontend/app/settings/models/page.tsx (2819 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-76976ea4073841f3", "name": "Very large file: frontend/app/warehouse/page.tsx (1648 lines)", "shortDescription": {"text": "Very large file: frontend/app/warehouse/page.tsx (1648 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-8ee02d764ad14b17", "name": "Very large file: frontend/app/documents/page.tsx (2360 lines)", "shortDescription": {"text": "Very large file: frontend/app/documents/page.tsx (2360 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-2da98f9a04ffd81b", "name": "Very large file: backend/tests/test_real_invoice_pipeline.py (1223 lines)", "shortDescription": {"text": "Very large file: backend/tests/test_real_invoice_pipeline.py (1223 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-bbabcf3bcbaa9911", "name": "Very large file: backend/app/ai/orchestrator.py (2393 lines)", "shortDescription": {"text": "Very large file: backend/app/ai/orchestrator.py (2393 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-5cedabfbd2cc469b", "name": "Very large file: backend/app/ai/agent_loop.py (2503 lines)", "shortDescription": {"text": "Very large file: backend/app/ai/agent_loop.py (2503 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-997cbb782e657fed", "name": "Very large file: backend/app/api/technology.py (1803 lines)", "shortDescription": {"text": "Very large file: backend/app/api/technology.py (1803 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-c933943976b52741", "name": "Very large file: backend/app/api/documents.py (1903 lines)", "shortDescription": {"text": "Very large file: backend/app/api/documents.py (1903 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-1afda83b40012532", "name": "Very large file: backend/app/tasks/extraction.py (2691 lines)", "shortDescription": {"text": "Very large file: backend/app/tasks/extraction.py (2691 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-48c07b3677206ed5", "name": "Very large file: backend/app/tasks/drawing_analysis.py (1793 lines)", "shortDescription": {"text": "Very large file: backend/app/tasks/drawing_analysis.py (1793 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-85b65655e6db3d3c", "name": "Very large file: backend/app/db/models.py (2856 lines)", "shortDescription": {"text": "Very large file: backend/app/db/models.py (2856 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 121 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 261 placeholder/mock markers across 74 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-976a00a99cd4effc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/notification-bell.tsx:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/notification-bell.tsx:115"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-02f9827981605002", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/models/page.tsx:356", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/models/page.tsx:356"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1fc32caf65485140", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/skills/page.tsx:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/skills/page.tsx:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ed30bf64a4b699c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/email/[id]/page.tsx:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/email/[id]/page.tsx:57"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-018a0c980a638211", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/catalogs/page.tsx:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/catalogs/page.tsx:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9e83e8baadcf1ede", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/chat/[id]/page.tsx:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/chat/[id]/page.tsx:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1e0b327ab8c351f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/page.tsx:231", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/page.tsx:231"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6417be5a55a151d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/[sub]/page.tsx:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/[sub]/page.tsx:139"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa3eb5487ab92889", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/api-keys/page.tsx:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/api-keys/page.tsx:84"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6d8c27dc75b3bbb6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/page.tsx:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/page.tsx:72"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-343534e29139eadd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/new/page.tsx:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/new/page.tsx:38"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ac15af4d8431911", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/[id]/page.tsx:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/[id]/page.tsx:107"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f69fca8a664b9280", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/page.tsx:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/page.tsx:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aabe1f2e3740e50c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/[id]/page.tsx:270", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/[id]/page.tsx:270"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-adf6c7fe0de1ac3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/warehouse/page.tsx:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/warehouse/page.tsx:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f21625e7bb44ff4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/approvals/page.tsx:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/approvals/page.tsx:110"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03aa45f9b2b57e3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/payments/page.tsx:172", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/payments/page.tsx:172"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-409c49b7baf066d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/documents/[id]/page.tsx:421", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/documents/[id]/page.tsx:421"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab28c50b360bce5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/compare/page.tsx:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/compare/page.tsx:85"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3710ac2fa66a1041", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api.ts:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api.ts:136"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85e0b594b98681ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/auth.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/auth.ts:102"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b8296281bf8e5cb8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api-client.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api-client.ts:27"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e458f60120ec180f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/drawings-api.ts:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/drawings-api.ts:26"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-beb2900fed248e80", "name": "Legacy-named symbol `create_encrypted_backup` in scripts/encrypted_backup.py:15", "shortDescription": {"text": "Legacy-named symbol `create_encrypted_backup` in scripts/encrypted_backup.py:15"}, "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-02bbbda7929a2d74", "name": "Legacy-named symbol `hours_old` in backend/tests/test_proactive.py:26", "shortDescription": {"text": "Legacy-named symbol `hours_old` in backend/tests/test_proactive.py:26"}, "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-050adab3df9d00e9", "name": "Legacy-named symbol `renamed_copy` in backend/tests/test_regression_all_invoices.py:221", "shortDescription": {"text": "Legacy-named symbol `renamed_copy` in backend/tests/test_regression_all_invoices.py:221"}, "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-c181716c986c0beb", "name": "Legacy-named symbol `fake_jwks_v1` in backend/tests/test_auth_jwks_cache.py:58", "shortDescription": {"text": "Legacy-named symbol `fake_jwks_v1` in backend/tests/test_auth_jwks_cache.py:58"}, "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-2c036f9a34b3cc3a", "name": "Commented-code block (5 lines) in backend/tests/test_real_invoice_pipeline.py:1040", "shortDescription": {"text": "Commented-code block (5 lines) in backend/tests/test_real_invoice_pipeline.py:1040"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a6b6f2a1b3c17c0", "name": "Commented-code block (5 lines) in backend/tests/test_invoice_extraction_quality.py:472", "shortDescription": {"text": "Commented-code block (5 lines) in backend/tests/test_invoice_extraction_quality.py:472"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-595fe6c26ab737e6", "name": "Commented-code block (5 lines) in backend/tests/test_scenario_skill_refs.py:30", "shortDescription": {"text": "Commented-code block (5 lines) in backend/tests/test_scenario_skill_refs.py:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22b02ce874b9489a", "name": "Legacy-named symbol `test_user_without_department_sees_only_own_and_legacy` in backend/tests/test_visibility.py:70", "shortDescription": {"text": "Legacy-named symbol `test_user_without_department_sees_only_own_and_legacy` in backend/tests/test_visibility.py:70"}, "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-30f3b98bea9d099d", "name": "Legacy-named symbol `model_copy` in backend/tests/test_local_models_live.py:120", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/tests/test_local_models_live.py:120"}, "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-541fc6c6f0831e09", "name": "Legacy-named symbol `model_copy` in backend/tests/test_task_routing.py:67", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/tests/test_task_routing.py:67"}, "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-30a203846d1b18a2", "name": "Legacy-named symbol `model_copy` in backend/tests/ai/test_router.py:96", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/tests/ai/test_router.py:96"}, "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-281b07c2fb3fe4f4", "name": "Legacy-named symbol `scripts_encrypted_backup` in backend/tests/domain/test_encrypted_backup.py:6", "shortDescription": {"text": "Legacy-named symbol `scripts_encrypted_backup` in backend/tests/domain/test_encrypted_backup.py:6"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f8a80985891d5d7", "name": "Legacy-named symbol `_promote_v2` in backend/app/ai/skill_evolver.py:237", "shortDescription": {"text": "Legacy-named symbol `_promote_v2` in backend/app/ai/skill_evolver.py:237"}, "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-d269d65d1be6bdd0", "name": "Legacy-named symbol `model_copy` in backend/app/ai/task_routing.py:159", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/task_routing.py:159"}, "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-480bec384dc39997", "name": "Commented-code block (5 lines) in backend/app/ai/extraction_prompts.py:316", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/ai/extraction_prompts.py:316"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e8032a486635eb", "name": "Legacy-named symbol `model_copy` in backend/app/ai/assignment_groups.py:148", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/assignment_groups.py:148"}, "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-59985e091058e8d1", "name": "Commented-code block (6 lines) in backend/app/ai/confidence.py:15", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/ai/confidence.py:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3eaef7de6d03a87", "name": "Legacy-named symbol `model_copy` in backend/app/ai/router.py:237", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/router.py:237"}, "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-0b023599214e0189", "name": "Commented-code block (5 lines) in backend/app/ai/router.py:198", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/ai/router.py:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-724f301e5bdfd23e", "name": "Commented-code block (5 lines) in backend/app/ai/model_tier.py:69", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/ai/model_tier.py:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3b9fcf202ae33b0", "name": "Commented-code block (6 lines) in backend/app/ai/route_table.py:311", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/ai/route_table.py:311"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1676a742f520fcf", "name": "Legacy-named symbol `model_copy` in backend/app/ai/orchestrator.py:2105", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/orchestrator.py:2105"}, "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-9d98633b9b971179", "name": "Commented-code block (5 lines) in backend/app/ai/orchestrator.py:114", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/ai/orchestrator.py:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fa43fd5834ac33d", "name": "Stub function `stop` (body is just `pass`/`return`) \u2014 backend/app/ai/mcp_client.py:177", "shortDescription": {"text": "Stub function `stop` (body is just `pass`/`return`) \u2014 backend/app/ai/mcp_client.py:177"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32a933f94a4625ca", "name": "Commented-code block (6 lines) in backend/app/ai/agent_loop.py:36", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/ai/agent_loop.py:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e0f1163cd53b5fb", "name": "Legacy-named symbol `model_copy` in backend/app/ai/presets.py:71", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/presets.py:71"}, "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-5c08ac68ae0e1777", "name": "Commented-code block (5 lines) in backend/app/ai/audit.py:51", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/ai/audit.py:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6b4df52d95157d1", "name": "Legacy-named symbol `model_copy` in backend/app/ai/model_registry.py:136", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/model_registry.py:136"}, "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-3dbf9663a63cac76", "name": "Legacy-named symbol `model_copy` in backend/app/ai/agent_config.py:293", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/agent_config.py:293"}, "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-2bca7f768b251bfa", "name": "Commented-code block (7 lines) in backend/app/ai/agent_config.py:25", "shortDescription": {"text": "Commented-code block (7 lines) in backend/app/ai/agent_config.py:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fff76f03540e67be", "name": "Legacy-named symbol `create_backup` in backend/app/api/maintenance.py:103", "shortDescription": {"text": "Legacy-named symbol `create_backup` in backend/app/api/maintenance.py:103"}, "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-334dbc78831524dd", "name": "Legacy-named symbol `model_copy` in backend/app/api/providers_api.py:679", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/api/providers_api.py:679"}, "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-4bee5ed9bca1523a", "name": "Commented-code block (5 lines) in backend/app/api/auth.py:115", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/api/auth.py:115"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b190a0678f798b28", "name": "Legacy-named symbol `is_v2` in backend/app/api/dynamic_skill_runner.py:80", "shortDescription": {"text": "Legacy-named symbol `is_v2` in backend/app/api/dynamic_skill_runner.py:80"}, "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-262281fc65ebf6dc", "name": "Legacy-named symbol `model_copy` in backend/app/api/memory.py:111", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/api/memory.py:111"}, "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-aa1fa5f12c9afd58", "name": "Legacy-named symbol `model_copy` in backend/app/api/spec_tables.py:138", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/api/spec_tables.py:138"}, "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-c4338f1743b3d73a", "name": "Commented-code block (8 lines) in backend/app/api/ai_settings.py:51", "shortDescription": {"text": "Commented-code block (8 lines) in backend/app/api/ai_settings.py:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b766335e83f11ce3", "name": "Commented-code block (6 lines) in backend/app/api/documents.py:79", "shortDescription": {"text": "Commented-code block (6 lines) in backend/app/api/documents.py:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92697621d4647da2", "name": "Commented-code block (5 lines) in backend/app/tasks/extraction.py:431", "shortDescription": {"text": "Commented-code block (5 lines) in backend/app/tasks/extraction.py:431"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-652bf0cc41a85e67", "name": "Commented-code block (8 lines) in backend/app/tasks/embedding.py:149", "shortDescription": {"text": "Commented-code block (8 lines) in backend/app/tasks/embedding.py:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93e380618699d963", "name": "Commented-code block (7 lines) in backend/app/tasks/celery_app.py:36", "shortDescription": {"text": "Commented-code block (7 lines) in backend/app/tasks/celery_app.py:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4245ecf19a6e8e40", "name": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/app/db/migrations/versions/2bc89634b9df_saved_queries", "shortDescription": {"text": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/app/db/migrations/versions/2bc89634b9df_saved_queries_auto_approval_norm_cards.py:83"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6610358a7580edfd", "name": "Legacy-named symbol `model_copy` in backend/app/domain/table_spec.py:877", "shortDescription": {"text": "Legacy-named symbol `model_copy` in backend/app/domain/table_spec.py:877"}, "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-2130d6e6d67e5f10", "name": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/migrations/versions/2bc89634b9df_saved_queries_auto_a", "shortDescription": {"text": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/migrations/versions/2bc89634b9df_saved_queries_auto_approval_norm_cards.py:27"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b673918452ee2583", "name": "70 env vars used in code but missing from .env.example", "shortDescription": {"text": "70 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AIAGENT_ROOT`, `AIW_BACKUP_DIR`, `AIW_PROJECT`, `AI_EVAL_MOCK`, `AUTO_CREATE_SCHEMA`, `BACKEND_URL`, `BACKUP_ENCRYPTION_KEY`, `CACHE_TTL_S` + 62 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/scripts/eval_drawing_vlm.py:main_async, backend/scripts/eval_drawing_vlm.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2247b6e17149fd7c", "name": "FastAPI POST `run_skill` without auth dependency \u2014 infra/skill-runner/runner.py:56", "shortDescription": {"text": "FastAPI POST `run_skill` without auth dependency \u2014 infra/skill-runner/runner.py:56"}, "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-eb9c980862f7ff84", "name": "FastAPI POST `smoke` without auth dependency \u2014 infra/skill-runner/runner.py:90", "shortDescription": {"text": "FastAPI POST `smoke` without auth dependency \u2014 infra/skill-runner/runner.py:90"}, "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-40e7056f941fb8b7", "name": "FastAPI POST `export_workspace_block` without auth dependency \u2014 backend/app/api/workspace_export.py:25", "shortDescription": {"text": "FastAPI POST `export_workspace_block` without auth dependency \u2014 backend/app/api/workspace_export.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-09eb214125165be6", "name": "FastAPI POST `create_event` without auth dependency \u2014 backend/app/api/calendar.py:32", "shortDescription": {"text": "FastAPI POST `create_event` without auth dependency \u2014 backend/app/api/calendar.py:32"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ecd815d556d38b92", "name": "FastAPI POST `extract_dates` without auth dependency \u2014 backend/app/api/calendar.py:82", "shortDescription": {"text": "FastAPI POST `extract_dates` without auth dependency \u2014 backend/app/api/calendar.py:82"}, "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-b87bfa413e4b1e7c", "name": "FastAPI POST `create_reminder` without auth dependency \u2014 backend/app/api/calendar.py:229", "shortDescription": {"text": "FastAPI POST `create_reminder` without auth dependency \u2014 backend/app/api/calendar.py:229"}, "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-b8188f62752b2b76", "name": "FastAPI POST `generate_followup_draft` without auth dependency \u2014 backend/app/api/calendar.py:272", "shortDescription": {"text": "FastAPI POST `generate_followup_draft` without auth dependency \u2014 backend/app/api/calendar.py:272"}, "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-fcde69c6eab8d834", "name": "FastAPI POST `mark_sent` without auth dependency \u2014 backend/app/api/calendar.py:314", "shortDescription": {"text": "FastAPI POST `mark_sent` without auth dependency \u2014 backend/app/api/calendar.py:314"}, "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-a6f1417641604565", "name": "FastAPI POST `create_payment_schedule` without auth dependency \u2014 backend/app/api/payments.py:109", "shortDescription": {"text": "FastAPI POST `create_payment_schedule` without auth dependency \u2014 backend/app/api/payments.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-229e685bb333289f", "name": "FastAPI PATCH `update_payment_schedule` without auth dependency \u2014 backend/app/api/payments.py:209", "shortDescription": {"text": "FastAPI PATCH `update_payment_schedule` without auth dependency \u2014 backend/app/api/payments.py:209"}, "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-94834c20ad397220", "name": "FastAPI POST `mark_paid` without auth dependency \u2014 backend/app/api/payments.py:228", "shortDescription": {"text": "FastAPI POST `mark_paid` without auth dependency \u2014 backend/app/api/payments.py:228"}, "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-77ebaf715da39c7c", "name": "FastAPI POST `schedule_invoice_payment` without auth dependency \u2014 backend/app/api/payments.py:264", "shortDescription": {"text": "FastAPI POST `schedule_invoice_payment` without auth dependency \u2014 backend/app/api/payments.py:264"}, "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-66bd7c2f905288ec", "name": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.py:165", "shortDescription": {"text": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.py:165"}, "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-641321b87c98e5e1", "name": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.py:166", "shortDescription": {"text": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.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-12d7be62cc16609a", "name": "FastAPI PUT `update_provider` without auth dependency \u2014 backend/app/api/providers_api.py:209", "shortDescription": {"text": "FastAPI PUT `update_provider` without auth dependency \u2014 backend/app/api/providers_api.py:209"}, "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-ac199a619a2a9cdc", "name": "FastAPI DELETE `delete_provider` without auth dependency \u2014 backend/app/api/providers_api.py:237", "shortDescription": {"text": "FastAPI DELETE `delete_provider` without auth dependency \u2014 backend/app/api/providers_api.py:237"}, "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-e3d3291e389c5948", "name": "FastAPI POST `test_provider` without auth dependency \u2014 backend/app/api/providers_api.py:249", "shortDescription": {"text": "FastAPI POST `test_provider` without auth dependency \u2014 backend/app/api/providers_api.py:249"}, "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-14e4cf137d2c5de9", "name": "FastAPI POST `refresh_models` without auth dependency \u2014 backend/app/api/providers_api.py:288", "shortDescription": {"text": "FastAPI POST `refresh_models` without auth dependency \u2014 backend/app/api/providers_api.py:288"}, "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-a0156a23e7ab4d38", "name": "FastAPI PATCH `set_model_thinking` without auth dependency \u2014 backend/app/api/providers_api.py:537", "shortDescription": {"text": "FastAPI PATCH `set_model_thinking` without auth dependency \u2014 backend/app/api/providers_api.py:537"}, "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-f59b31b42a74c281", "name": "FastAPI PATCH `set_model_preferred_instance` without auth dependency \u2014 backend/app/api/providers_api.py:553", "shortDescription": {"text": "FastAPI PATCH `set_model_preferred_instance` without auth dependency \u2014 backend/app/api/providers_api.py:553"}, "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-9e24ab8545dfe519", "name": "FastAPI PUT `set_slot` without auth dependency \u2014 backend/app/api/providers_api.py:653", "shortDescription": {"text": "FastAPI PUT `set_slot` without auth dependency \u2014 backend/app/api/providers_api.py:653"}, "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-9b0fb5d962690822", "name": "FastAPI POST `create_session` without auth dependency \u2014 backend/app/api/compare.py:32", "shortDescription": {"text": "FastAPI POST `create_session` without auth dependency \u2014 backend/app/api/compare.py:32"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f8eb98f9568cd64d", "name": "FastAPI POST `align_items` without auth dependency \u2014 backend/app/api/compare.py:101", "shortDescription": {"text": "FastAPI POST `align_items` without auth dependency \u2014 backend/app/api/compare.py:101"}, "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-64471e4739d4c88a", "name": "FastAPI POST `decide` without auth dependency \u2014 backend/app/api/compare.py:183", "shortDescription": {"text": "FastAPI POST `decide` without auth dependency \u2014 backend/app/api/compare.py:183"}, "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-e7c6ee41b09fc1d1", "name": "FastAPI POST `create_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:114", "shortDescription": {"text": "FastAPI POST `create_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:114"}, "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-46fecc2d7414235b", "name": "FastAPI PATCH `update_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:197", "shortDescription": {"text": "FastAPI PATCH `update_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:197"}, "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-774738bd6d930aee", "name": "FastAPI POST `send_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:224", "shortDescription": {"text": "FastAPI POST `send_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:224"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5078b1893b82c04c", "name": "FastAPI DELETE `cancel_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:281", "shortDescription": {"text": "FastAPI DELETE `cancel_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:281"}, "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-e65eb928ade18f98", "name": "FastAPI POST `run_draft_risk_check` without auth dependency \u2014 backend/app/api/draft_email.py:307", "shortDescription": {"text": "FastAPI POST `run_draft_risk_check` without auth dependency \u2014 backend/app/api/draft_email.py:307"}, "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-d36e87d9705f4955", "name": "FastAPI POST `dispatch_vault` without auth dependency \u2014 backend/app/api/capability_router.py:345", "shortDescription": {"text": "FastAPI POST `dispatch_vault` without auth dependency \u2014 backend/app/api/capability_router.py:345"}, "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-924d1a6f75c7a3ad", "name": "FastAPI POST `dispatch_capability` without auth dependency \u2014 backend/app/api/capability_router.py:368", "shortDescription": {"text": "FastAPI POST `dispatch_capability` without auth dependency \u2014 backend/app/api/capability_router.py:368"}, "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-142a9c8ee9af0f19", "name": "FastAPI POST `run_scenario` without auth dependency \u2014 backend/app/api/scenarios.py:51", "shortDescription": {"text": "FastAPI POST `run_scenario` without auth dependency \u2014 backend/app/api/scenarios.py:51"}, "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-9deebaed415f77f2", "name": "FastAPI POST `reload_agent_config` without auth dependency \u2014 backend/app/api/scenarios.py:151", "shortDescription": {"text": "FastAPI POST `reload_agent_config` without auth dependency \u2014 backend/app/api/scenarios.py:151"}, "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-5febf548cbb295eb", "name": "FastAPI POST `re_extract_invoice` without auth dependency \u2014 backend/app/api/invoices.py:133", "shortDescription": {"text": "FastAPI POST `re_extract_invoice` without auth dependency \u2014 backend/app/api/invoices.py:133"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82c0b71550cbeace", "name": "FastAPI POST `validate_invoice` without auth dependency \u2014 backend/app/api/invoices.py:164", "shortDescription": {"text": "FastAPI POST `validate_invoice` without auth dependency \u2014 backend/app/api/invoices.py:164"}, "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-5ac9f60096b2ce40", "name": "FastAPI PATCH `update_invoice` without auth dependency \u2014 backend/app/api/invoices.py:225", "shortDescription": {"text": "FastAPI PATCH `update_invoice` without auth dependency \u2014 backend/app/api/invoices.py:225"}, "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-162950a7f2959949", "name": "FastAPI PATCH `update_invoice_line` without auth dependency \u2014 backend/app/api/invoices.py:265", "shortDescription": {"text": "FastAPI PATCH `update_invoice_line` without auth dependency \u2014 backend/app/api/invoices.py:265"}, "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-a1404e26fbd6ff29", "name": "FastAPI DELETE `delete_invoice` without auth dependency \u2014 backend/app/api/invoices.py:534", "shortDescription": {"text": "FastAPI DELETE `delete_invoice` without auth dependency \u2014 backend/app/api/invoices.py:534"}, "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-ca312ae0691e4df4", "name": "FastAPI DELETE `bulk_delete_invoices` without auth dependency \u2014 backend/app/api/invoices.py:570", "shortDescription": {"text": "FastAPI DELETE `bulk_delete_invoices` without auth dependency \u2014 backend/app/api/invoices.py:570"}, "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-0b1121abf2472a9b", "name": "FastAPI POST `bulk_approve_invoices` without auth dependency \u2014 backend/app/api/invoices.py:626", "shortDescription": {"text": "FastAPI POST `bulk_approve_invoices` without auth dependency \u2014 backend/app/api/invoices.py:626"}, "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-d400a341150d2dd8", "name": "FastAPI POST `bulk_reject_invoices` without auth dependency \u2014 backend/app/api/invoices.py:656", "shortDescription": {"text": "FastAPI POST `bulk_reject_invoices` without auth dependency \u2014 backend/app/api/invoices.py:656"}, "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-f178ad444a26223a", "name": "FastAPI POST `receive_invoice` without auth dependency \u2014 backend/app/api/invoices.py:686", "shortDescription": {"text": "FastAPI POST `receive_invoice` without auth dependency \u2014 backend/app/api/invoices.py:686"}, "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-81a28804058ee5a2", "name": "FastAPI POST `create_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:240", "shortDescription": {"text": "FastAPI POST `create_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:240"}, "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-492d7e42ad743af7", "name": "FastAPI PATCH `update_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:288", "shortDescription": {"text": "FastAPI PATCH `update_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:288"}, "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-eddfbdddd21f0c93", "name": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:308", "shortDescription": {"text": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:308"}, "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-916a4e7b5392c031", "name": "FastAPI POST `issue_stock` without auth dependency \u2014 backend/app/api/warehouse.py:338", "shortDescription": {"text": "FastAPI POST `issue_stock` without auth dependency \u2014 backend/app/api/warehouse.py:338"}, "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-9661eb6af58da2a8", "name": "FastAPI POST `adjust_stock` without auth dependency \u2014 backend/app/api/warehouse.py:379", "shortDescription": {"text": "FastAPI POST `adjust_stock` without auth dependency \u2014 backend/app/api/warehouse.py:379"}, "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-5c3b2b4a0cf28674", "name": "FastAPI POST `bulk_confirm_receipts` without auth dependency \u2014 backend/app/api/warehouse.py:508", "shortDescription": {"text": "FastAPI POST `bulk_confirm_receipts` without auth dependency \u2014 backend/app/api/warehouse.py:508"}, "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-985fe0f354545766", "name": "FastAPI POST `create_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:540", "shortDescription": {"text": "FastAPI POST `create_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:540"}, "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-4fa918635ea1cb7b", "name": "FastAPI PATCH `update_receipt_line` without auth dependency \u2014 backend/app/api/warehouse.py:617", "shortDescription": {"text": "FastAPI PATCH `update_receipt_line` without auth dependency \u2014 backend/app/api/warehouse.py:617"}, "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-d590d90d67d5aa2b", "name": "FastAPI POST `confirm_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:637", "shortDescription": {"text": "FastAPI POST `confirm_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:637"}, "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-d226665c213e7b24", "name": "FastAPI PATCH `update_receipt_status` without auth dependency \u2014 backend/app/api/warehouse.py:662", "shortDescription": {"text": "FastAPI PATCH `update_receipt_status` without auth dependency \u2014 backend/app/api/warehouse.py:662"}, "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-31f22e3ee2f5a671", "name": "FastAPI DELETE `cancel_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:700", "shortDescription": {"text": "FastAPI DELETE `cancel_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:700"}, "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-fed7b28e62154bd3", "name": "FastAPI POST `create_bom` without auth dependency \u2014 backend/app/api/boms.py:132", "shortDescription": {"text": "FastAPI POST `create_bom` without auth dependency \u2014 backend/app/api/boms.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-7489865a5750364b", "name": "FastAPI PATCH `update_bom` without auth dependency \u2014 backend/app/api/boms.py:176", "shortDescription": {"text": "FastAPI PATCH `update_bom` without auth dependency \u2014 backend/app/api/boms.py:176"}, "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-c8558a0dc7c5193e", "name": "FastAPI POST `add_bom_line` without auth dependency \u2014 backend/app/api/boms.py:203", "shortDescription": {"text": "FastAPI POST `add_bom_line` without auth dependency \u2014 backend/app/api/boms.py:203"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-401c4d647f011044", "name": "FastAPI DELETE `delete_bom_line` without auth dependency \u2014 backend/app/api/boms.py:222", "shortDescription": {"text": "FastAPI DELETE `delete_bom_line` without auth dependency \u2014 backend/app/api/boms.py:222"}, "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-67dc1171cf0b786d", "name": "FastAPI POST `approve_bom` without auth dependency \u2014 backend/app/api/boms.py:243", "shortDescription": {"text": "FastAPI POST `approve_bom` without auth dependency \u2014 backend/app/api/boms.py:243"}, "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-2edd837a0790b77d", "name": "FastAPI POST `create_purchase_request_from_bom` without auth dependency \u2014 backend/app/api/boms.py:343", "shortDescription": {"text": "FastAPI POST `create_purchase_request_from_bom` without auth dependency \u2014 backend/app/api/boms.py:343"}, "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-383f4796d8a73ecc", "name": "FastAPI POST `suggest_rules` without auth dependency \u2014 backend/app/api/normalization.py:73", "shortDescription": {"text": "FastAPI POST `suggest_rules` without auth dependency \u2014 backend/app/api/normalization.py:73"}, "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-0a809ad6c3a3ad2e", "name": "FastAPI POST `activate_rule` without auth dependency \u2014 backend/app/api/normalization.py:146", "shortDescription": {"text": "FastAPI POST `activate_rule` without auth dependency \u2014 backend/app/api/normalization.py:146"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e0eabdee756525ed", "name": "FastAPI POST `disable_rule` without auth dependency \u2014 backend/app/api/normalization.py:184", "shortDescription": {"text": "FastAPI POST `disable_rule` without auth dependency \u2014 backend/app/api/normalization.py:184"}, "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-f5daa32503130c99", "name": "FastAPI POST `apply_rules` without auth dependency \u2014 backend/app/api/normalization.py:213", "shortDescription": {"text": "FastAPI POST `apply_rules` without auth dependency \u2014 backend/app/api/normalization.py:213"}, "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-3378a67b3febb80d", "name": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/normalization.py:305", "shortDescription": {"text": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/normalization.py:305"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e51883930c8f9bf3", "name": "FastAPI POST `create_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:426", "shortDescription": {"text": "FastAPI POST `create_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:426"}, "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-f063981316468cca", "name": "FastAPI PATCH `update_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:456", "shortDescription": {"text": "FastAPI PATCH `update_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:456"}, "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-d45e35df0101789d", "name": "FastAPI DELETE `delete_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:473", "shortDescription": {"text": "FastAPI DELETE `delete_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:473"}, "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-2a28fa978bb984f8", "name": "FastAPI PATCH `update_canonical_item_classification` without auth dependency \u2014 backend/app/api/normalization.py:525", "shortDescription": {"text": "FastAPI PATCH `update_canonical_item_classification` without auth dependency \u2014 backend/app/api/normalization.py:525"}, "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-23e2e9128c10b414", "name": "FastAPI POST `table_query` without auth dependency \u2014 backend/app/api/tables.py:82", "shortDescription": {"text": "FastAPI POST `table_query` without auth dependency \u2014 backend/app/api/tables.py:82"}, "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-1466bbd4a9dc79f7", "name": "FastAPI POST `export_excel` without auth dependency \u2014 backend/app/api/tables.py:267", "shortDescription": {"text": "FastAPI POST `export_excel` without auth dependency \u2014 backend/app/api/tables.py:267"}, "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-6474894fae5f6fa9", "name": "FastAPI POST `export_1c` without auth dependency \u2014 backend/app/api/tables.py:458", "shortDescription": {"text": "FastAPI POST `export_1c` without auth dependency \u2014 backend/app/api/tables.py:458"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97d307efc11d3fb3", "name": "FastAPI POST `create_saved_view` without auth dependency \u2014 backend/app/api/tables.py:610", "shortDescription": {"text": "FastAPI POST `create_saved_view` without auth dependency \u2014 backend/app/api/tables.py:610"}, "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-de2df48df0f69d19", "name": "FastAPI DELETE `delete_saved_view` without auth dependency \u2014 backend/app/api/tables.py:643", "shortDescription": {"text": "FastAPI DELETE `delete_saved_view` without auth dependency \u2014 backend/app/api/tables.py:643"}, "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-802679676c76b552", "name": "FastAPI POST `import_excel` without auth dependency \u2014 backend/app/api/tables.py:661", "shortDescription": {"text": "FastAPI POST `import_excel` without auth dependency \u2014 backend/app/api/tables.py:661"}, "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-150768daa43f9464", "name": "FastAPI POST `inline_edit` without auth dependency \u2014 backend/app/api/tables.py:850", "shortDescription": {"text": "FastAPI POST `inline_edit` without auth dependency \u2014 backend/app/api/tables.py:850"}, "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-26a322d16979f465", "name": "FastAPI POST `batch_action` without auth dependency \u2014 backend/app/api/tables.py:910", "shortDescription": {"text": "FastAPI POST `batch_action` without auth dependency \u2014 backend/app/api/tables.py:910"}, "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-00cc4037a58520de", "name": "FastAPI PATCH `update_ntd_control_settings` without auth dependency \u2014 backend/app/api/ntd.py:102", "shortDescription": {"text": "FastAPI PATCH `update_ntd_control_settings` without auth dependency \u2014 backend/app/api/ntd.py:102"}, "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-cbe9bf721c330ada", "name": "FastAPI POST `create_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:141", "shortDescription": {"text": "FastAPI POST `create_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:141"}, "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-a07c1a0f71f0a5d1", "name": "FastAPI POST `create_normative_document_from_source` without auth dependency \u2014 backend/app/api/ntd.py:183", "shortDescription": {"text": "FastAPI POST `create_normative_document_from_source` without auth dependency \u2014 backend/app/api/ntd.py:183"}, "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-2ef1e449cd5b6bc6", "name": "FastAPI POST `index_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:251", "shortDescription": {"text": "FastAPI POST `index_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:251"}, "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-11ef0c24d841442b", "name": "FastAPI POST `create_normative_clause` without auth dependency \u2014 backend/app/api/ntd.py:371", "shortDescription": {"text": "FastAPI POST `create_normative_clause` without auth dependency \u2014 backend/app/api/ntd.py:371"}, "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-129ba8364b7c9f23", "name": "FastAPI POST `create_normative_requirement` without auth dependency \u2014 backend/app/api/ntd.py:399", "shortDescription": {"text": "FastAPI POST `create_normative_requirement` without auth dependency \u2014 backend/app/api/ntd.py:399"}, "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-d145a36f0f47d1a9", "name": "FastAPI POST `run_document_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:463", "shortDescription": {"text": "FastAPI POST `run_document_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:463"}, "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-a5917aafab6b3d46", "name": "FastAPI POST `run_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:513", "shortDescription": {"text": "FastAPI POST `run_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:513"}, "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-334f80700bb9759e", "name": "FastAPI POST `decide_ntd_finding` without auth dependency \u2014 backend/app/api/ntd.py:553", "shortDescription": {"text": "FastAPI POST `decide_ntd_finding` without auth dependency \u2014 backend/app/api/ntd.py:553"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e7389713c631a7ec", "name": "FastAPI POST `create_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:117", "shortDescription": {"text": "FastAPI POST `create_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:117"}, "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-512901b4c562fb5c", "name": "FastAPI PATCH `update_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:149", "shortDescription": {"text": "FastAPI PATCH `update_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:149"}, "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-a53c8985e368320d", "name": "FastAPI DELETE `delete_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:166", "shortDescription": {"text": "FastAPI DELETE `delete_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:166"}, "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-74676bd6b29a8e43", "name": "FastAPI POST `suggest_mapping` without auth dependency \u2014 backend/app/api/canonical.py:204", "shortDescription": {"text": "FastAPI POST `suggest_mapping` without auth dependency \u2014 backend/app/api/canonical.py:204"}, "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-0bd264aa934c12e6", "name": "FastAPI POST `confirm_mapping` without auth dependency \u2014 backend/app/api/canonical.py:254", "shortDescription": {"text": "FastAPI POST `confirm_mapping` without auth dependency \u2014 backend/app/api/canonical.py:254"}, "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-c904360813deaa2a", "name": "FastAPI POST `create_collection` without auth dependency \u2014 backend/app/api/collections.py:44", "shortDescription": {"text": "FastAPI POST `create_collection` without auth dependency \u2014 backend/app/api/collections.py:44"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d9078570e62cff60", "name": "FastAPI POST `add_item` without auth dependency \u2014 backend/app/api/collections.py:107", "shortDescription": {"text": "FastAPI POST `add_item` without auth dependency \u2014 backend/app/api/collections.py:107"}, "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-e8380360c76780e2", "name": "FastAPI DELETE `remove_item` without auth dependency \u2014 backend/app/api/collections.py:158", "shortDescription": {"text": "FastAPI DELETE `remove_item` without auth dependency \u2014 backend/app/api/collections.py:158"}, "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-fe6d7fe8a53fed0d", "name": "FastAPI POST `close_collection` without auth dependency \u2014 backend/app/api/collections.py:182", "shortDescription": {"text": "FastAPI POST `close_collection` without auth dependency \u2014 backend/app/api/collections.py:182"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d442b900a60f56bf", "name": "FastAPI POST `summarize_collection` without auth dependency \u2014 backend/app/api/collections.py:220", "shortDescription": {"text": "FastAPI POST `summarize_collection` without auth dependency \u2014 backend/app/api/collections.py:220"}, "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-ba39e8d29f928f49", "name": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:50", "shortDescription": {"text": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:50"}, "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-b4599c9d98442149", "name": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:106", "shortDescription": {"text": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:106"}, "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-6fca8df26b993b9c", "name": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:126", "shortDescription": {"text": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:126"}, "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-09051d031c02bbb9", "name": "FastAPI POST `upload_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:170", "shortDescription": {"text": "FastAPI POST `upload_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:170"}, "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-f7de40d277eb2db6", "name": "FastAPI POST `refresh_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:212", "shortDescription": {"text": "FastAPI POST `refresh_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:212"}, "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-e637c19a903ef15e", "name": "FastAPI POST `create_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:277", "shortDescription": {"text": "FastAPI POST `create_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:277"}, "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-ed3ccc2290fba999", "name": "FastAPI PATCH `update_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:323", "shortDescription": {"text": "FastAPI PATCH `update_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:323"}, "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-2b0730c431673c92", "name": "FastAPI DELETE `bulk_delete_entries` without auth dependency \u2014 backend/app/api/tool_catalog.py:350", "shortDescription": {"text": "FastAPI DELETE `bulk_delete_entries` without auth dependency \u2014 backend/app/api/tool_catalog.py:350"}, "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-4f6d27734cd00e14", "name": "FastAPI DELETE `delete_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:382", "shortDescription": {"text": "FastAPI DELETE `delete_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:382"}, "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-3fb7eee9d62171b0", "name": "FastAPI POST `upload_catalog_for_party` without auth dependency \u2014 backend/app/api/tool_catalog.py:699", "shortDescription": {"text": "FastAPI POST `upload_catalog_for_party` without auth dependency \u2014 backend/app/api/tool_catalog.py:699"}, "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-a9cb67ae260f2907", "name": "FastAPI POST `check_all_anomalies` without auth dependency \u2014 backend/app/api/anomalies.py:45", "shortDescription": {"text": "FastAPI POST `check_all_anomalies` without auth dependency \u2014 backend/app/api/anomalies.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-38f14fb474ca0e06", "name": "FastAPI POST `create_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:309", "shortDescription": {"text": "FastAPI POST `create_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:309"}, "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-c301b092a7b1c6a8", "name": "FastAPI POST `bulk_resolve_anomalies` without auth dependency \u2014 backend/app/api/anomalies.py:379", "shortDescription": {"text": "FastAPI POST `bulk_resolve_anomalies` without auth dependency \u2014 backend/app/api/anomalies.py:379"}, "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-160e49edbfd2c62e", "name": "FastAPI POST `resolve_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:419", "shortDescription": {"text": "FastAPI POST `resolve_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:419"}, "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-5f08e10dcd0d6638", "name": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:77", "shortDescription": {"text": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:77"}, "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-a7f9fa9e7013caf9", "name": "FastAPI PATCH `update_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:99", "shortDescription": {"text": "FastAPI PATCH `update_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:99"}, "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-b71d216b5ab07711", "name": "FastAPI DELETE `delete_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:116", "shortDescription": {"text": "FastAPI DELETE `delete_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:116"}, "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-e370598d94178f8c", "name": "FastAPI POST `check_invoice` without auth dependency \u2014 backend/app/api/auto_approval.py:129", "shortDescription": {"text": "FastAPI POST `check_invoice` without auth dependency \u2014 backend/app/api/auto_approval.py:129"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a18f73f9e47e0f19", "name": "FastAPI POST `search_memory` without auth dependency \u2014 backend/app/api/memory.py:96", "shortDescription": {"text": "FastAPI POST `search_memory` without auth dependency \u2014 backend/app/api/memory.py:96"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e9d893e1b6d674a2", "name": "FastAPI POST `store_chat_turn_memory` without auth dependency \u2014 backend/app/api/memory.py:162", "shortDescription": {"text": "FastAPI POST `store_chat_turn_memory` without auth dependency \u2014 backend/app/api/memory.py:162"}, "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-9a3d4712a2eb833c", "name": "FastAPI POST `pin_memory_fact` without auth dependency \u2014 backend/app/api/memory.py:196", "shortDescription": {"text": "FastAPI POST `pin_memory_fact` without auth dependency \u2014 backend/app/api/memory.py:196"}, "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-c64c06c75e501269", "name": "FastAPI POST `prune_memory_facts` without auth dependency \u2014 backend/app/api/memory.py:233", "shortDescription": {"text": "FastAPI POST `prune_memory_facts` without auth dependency \u2014 backend/app/api/memory.py:233"}, "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-8d1b1590ecc02d4c", "name": "FastAPI POST `explain_memory` without auth dependency \u2014 backend/app/api/memory.py:766", "shortDescription": {"text": "FastAPI POST `explain_memory` without auth dependency \u2014 backend/app/api/memory.py:766"}, "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-06859fc8c45984b8", "name": "FastAPI POST `rebuild_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:837", "shortDescription": {"text": "FastAPI POST `rebuild_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:837"}, "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-77b0fb6c2e5cc6c8", "name": "FastAPI POST `rebuild_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:916", "shortDescription": {"text": "FastAPI POST `rebuild_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:916"}, "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-5e756cfd0a70dde2", "name": "FastAPI POST `index_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:936", "shortDescription": {"text": "FastAPI POST `index_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:936"}, "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-c678a3898609c536", "name": "FastAPI POST `reindex_memory` without auth dependency \u2014 backend/app/api/memory.py:1012", "shortDescription": {"text": "FastAPI POST `reindex_memory` without auth dependency \u2014 backend/app/api/memory.py:1012"}, "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-0399af7b8142ed7c", "name": "FastAPI POST `rate_message` without auth dependency \u2014 backend/app/api/memory.py:1216", "shortDescription": {"text": "FastAPI POST `rate_message` without auth dependency \u2014 backend/app/api/memory.py:1216"}, "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-1aa5d16def3f8077", "name": "FastAPI POST `release_quarantine` without auth dependency \u2014 backend/app/api/quarantine.py:97", "shortDescription": {"text": "FastAPI POST `release_quarantine` without auth dependency \u2014 backend/app/api/quarantine.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-054e0a2a8bd3b51e", "name": "FastAPI DELETE `delete_quarantine` without auth dependency \u2014 backend/app/api/quarantine.py:146", "shortDescription": {"text": "FastAPI DELETE `delete_quarantine` without auth dependency \u2014 backend/app/api/quarantine.py:146"}, "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-c821fff54bf2ead8", "name": "FastAPI POST `add_to_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:195", "shortDescription": {"text": "FastAPI POST `add_to_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:195"}, "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-0a6f4a40e3028687", "name": "FastAPI DELETE `remove_from_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:217", "shortDescription": {"text": "FastAPI DELETE `remove_from_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:217"}, "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-08dcbe7908f7d285", "name": "FastAPI POST `create_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:146", "shortDescription": {"text": "FastAPI POST `create_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:146"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86c7ddce465e567c", "name": "FastAPI PATCH `update_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:179", "shortDescription": {"text": "FastAPI PATCH `update_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:179"}, "fullDescription": {"text": "`@router.patch` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3ba840df2f84558b", "name": "FastAPI DELETE `cancel_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:196", "shortDescription": {"text": "FastAPI DELETE `cancel_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:196"}, "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-c23b2d65e901b6cb", "name": "FastAPI POST `send_rfq` without auth dependency \u2014 backend/app/api/procurement.py:212", "shortDescription": {"text": "FastAPI POST `send_rfq` without auth dependency \u2014 backend/app/api/procurement.py:212"}, "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-902d4f1fa6fbad33", "name": "FastAPI POST `create_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:295", "shortDescription": {"text": "FastAPI POST `create_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:295"}, "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-13e0f7ff223b2b6a", "name": "FastAPI PATCH `update_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:325", "shortDescription": {"text": "FastAPI PATCH `update_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:325"}, "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-2c463fd026c30429", "name": "FastAPI PATCH `update_telegram_config` without auth dependency \u2014 backend/app/api/telegram.py:204", "shortDescription": {"text": "FastAPI PATCH `update_telegram_config` without auth dependency \u2014 backend/app/api/telegram.py:204"}, "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-d2a144fce7125422", "name": "FastAPI POST `telegram_restart` without auth dependency \u2014 backend/app/api/telegram.py:228", "shortDescription": {"text": "FastAPI POST `telegram_restart` without auth dependency \u2014 backend/app/api/telegram.py:228"}, "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-0d4e3433b135c4a7", "name": "FastAPI POST `telegram_stop` without auth dependency \u2014 backend/app/api/telegram.py:238", "shortDescription": {"text": "FastAPI POST `telegram_stop` without auth dependency \u2014 backend/app/api/telegram.py:238"}, "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-887e51b11d78328f", "name": "FastAPI POST `telegram_notify` without auth dependency \u2014 backend/app/api/telegram.py:245", "shortDescription": {"text": "FastAPI POST `telegram_notify` without auth dependency \u2014 backend/app/api/telegram.py:245"}, "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-33e8d60f9a7df64f", "name": "FastAPI POST `telegram_test` without auth dependency \u2014 backend/app/api/telegram.py:264", "shortDescription": {"text": "FastAPI POST `telegram_test` without auth dependency \u2014 backend/app/api/telegram.py:264"}, "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-0e00cd194c8f70dc", "name": "FastAPI POST `publish_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:112", "shortDescription": {"text": "FastAPI POST `publish_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:112"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-91d6cd77a2c25b69", "name": "FastAPI POST `patch_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:151", "shortDescription": {"text": "FastAPI POST `patch_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:151"}, "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-244318d8f169b8df", "name": "FastAPI POST `create_node` without auth dependency \u2014 backend/app/api/graph.py:47", "shortDescription": {"text": "FastAPI POST `create_node` without auth dependency \u2014 backend/app/api/graph.py:47"}, "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-7fdb473b74c4a28c", "name": "FastAPI POST `create_edge` without auth dependency \u2014 backend/app/api/graph.py:89", "shortDescription": {"text": "FastAPI POST `create_edge` without auth dependency \u2014 backend/app/api/graph.py:89"}, "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-2b81b4370fae49f2", "name": "FastAPI POST `create_chunk` without auth dependency \u2014 backend/app/api/graph.py:236", "shortDescription": {"text": "FastAPI POST `create_chunk` without auth dependency \u2014 backend/app/api/graph.py:236"}, "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-1f8ba673dd9eaa85", "name": "FastAPI POST `create_evidence` without auth dependency \u2014 backend/app/api/graph.py:251", "shortDescription": {"text": "FastAPI POST `create_evidence` without auth dependency \u2014 backend/app/api/graph.py:251"}, "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-4195ec3aca10aaa0", "name": "FastAPI POST `create_mention` without auth dependency \u2014 backend/app/api/graph.py:268", "shortDescription": {"text": "FastAPI POST `create_mention` without auth dependency \u2014 backend/app/api/graph.py:268"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ab76beb7f957ee6", "name": "FastAPI POST `decide_review_item` without auth dependency \u2014 backend/app/api/graph.py:307", "shortDescription": {"text": "FastAPI POST `decide_review_item` without auth dependency \u2014 backend/app/api/graph.py:307"}, "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-33d8c0e2223cb432", "name": "FastAPI POST `create_user` without auth dependency \u2014 backend/app/api/admin.py:51", "shortDescription": {"text": "FastAPI POST `create_user` without auth dependency \u2014 backend/app/api/admin.py:51"}, "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-6db4811c5b501b7d", "name": "FastAPI POST `set_user_password` without auth dependency \u2014 backend/app/api/admin.py:123", "shortDescription": {"text": "FastAPI POST `set_user_password` without auth dependency \u2014 backend/app/api/admin.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-a7cd1a8ae73a236e", "name": "FastAPI PATCH `update_user` without auth dependency \u2014 backend/app/api/admin.py:220", "shortDescription": {"text": "FastAPI PATCH `update_user` without auth dependency \u2014 backend/app/api/admin.py:220"}, "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-c7ca459622c0e7ea", "name": "FastAPI POST `deactivate_user` without auth dependency \u2014 backend/app/api/admin.py:307", "shortDescription": {"text": "FastAPI POST `deactivate_user` without auth dependency \u2014 backend/app/api/admin.py:307"}, "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-1c6113410f892c0f", "name": "FastAPI POST `create_department` without auth dependency \u2014 backend/app/api/admin.py:355", "shortDescription": {"text": "FastAPI POST `create_department` without auth dependency \u2014 backend/app/api/admin.py:355"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3a467b4fa4a44ed5", "name": "FastAPI PATCH `update_department` without auth dependency \u2014 backend/app/api/admin.py:390", "shortDescription": {"text": "FastAPI PATCH `update_department` without auth dependency \u2014 backend/app/api/admin.py:390"}, "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-9876ec0d25931bc3", "name": "FastAPI DELETE `delete_department` without auth dependency \u2014 backend/app/api/admin.py:424", "shortDescription": {"text": "FastAPI DELETE `delete_department` without auth dependency \u2014 backend/app/api/admin.py:424"}, "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-211736a27cdad0df", "name": "FastAPI PUT `update_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:488", "shortDescription": {"text": "FastAPI PUT `update_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:488"}, "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-6ed473302ae21a1f", "name": "FastAPI POST `test_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:513", "shortDescription": {"text": "FastAPI POST `test_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:513"}, "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-06c635e73446dc6e", "name": "FastAPI POST `create_api_key` without auth dependency \u2014 backend/app/api/admin.py:609", "shortDescription": {"text": "FastAPI POST `create_api_key` without auth dependency \u2014 backend/app/api/admin.py:609"}, "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-2e61a530dd145293", "name": "FastAPI DELETE `revoke_api_key` without auth dependency \u2014 backend/app/api/admin.py:642", "shortDescription": {"text": "FastAPI DELETE `revoke_api_key` without auth dependency \u2014 backend/app/api/admin.py:642"}, "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-4c04440ffcff9168", "name": "FastAPI POST `create_agent_action` without auth dependency \u2014 backend/app/api/agent_actions.py:52", "shortDescription": {"text": "FastAPI POST `create_agent_action` without auth dependency \u2014 backend/app/api/agent_actions.py:52"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0ddeb156cd819a42", "name": "FastAPI POST `set_gpu_budget` without auth dependency \u2014 backend/app/api/local_models_api.py:315", "shortDescription": {"text": "FastAPI POST `set_gpu_budget` without auth dependency \u2014 backend/app/api/local_models_api.py:315"}, "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-fb40931974facb00", "name": "FastAPI POST `unload_all_ollama` without auth dependency \u2014 backend/app/api/local_models_api.py:473", "shortDescription": {"text": "FastAPI POST `unload_all_ollama` without auth dependency \u2014 backend/app/api/local_models_api.py:473"}, "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-f7e2b9c802ecb1a5", "name": "FastAPI POST `unload_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:480", "shortDescription": {"text": "FastAPI POST `unload_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:480"}, "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-26ae5a4cbbb397ba", "name": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:491", "shortDescription": {"text": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:491"}, "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-52ecbdead67abecf", "name": "FastAPI DELETE `delete_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:519", "shortDescription": {"text": "FastAPI DELETE `delete_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:519"}, "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-ecb029ae269225f1", "name": "FastAPI POST `activate_provider_model` without auth dependency \u2014 backend/app/api/local_models_api.py:543", "shortDescription": {"text": "FastAPI POST `activate_provider_model` without auth dependency \u2014 backend/app/api/local_models_api.py:543"}, "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-6d5e2f9cb966bdc3", "name": "FastAPI POST `start_model_download` without auth dependency \u2014 backend/app/api/local_models_api.py:578", "shortDescription": {"text": "FastAPI POST `start_model_download` without auth dependency \u2014 backend/app/api/local_models_api.py:578"}, "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-627e5052fec2ff76", "name": "FastAPI POST `save_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:660", "shortDescription": {"text": "FastAPI POST `save_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:660"}, "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-0b275d0f52bdb339", "name": "FastAPI DELETE `remove_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:669", "shortDescription": {"text": "FastAPI DELETE `remove_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:669"}, "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-ce567f52a77c10d3", "name": "FastAPI POST `update_task_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:698", "shortDescription": {"text": "FastAPI POST `update_task_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:698"}, "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-4df818ddce8307b0", "name": "FastAPI PUT `update_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:780", "shortDescription": {"text": "FastAPI PUT `update_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:780"}, "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-6d996fc14d39918c", "name": "FastAPI POST `reset_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:795", "shortDescription": {"text": "FastAPI POST `reset_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:795"}, "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-12e9d27801af272b", "name": "FastAPI PUT `set_document_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:833", "shortDescription": {"text": "FastAPI PUT `set_document_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:833"}, "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-994b7a6693f4d753", "name": "FastAPI PUT `set_agent_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:844", "shortDescription": {"text": "FastAPI PUT `set_agent_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:844"}, "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-aa4eaefa7486294f", "name": "FastAPI PATCH `patch_provider_config` without auth dependency \u2014 backend/app/api/local_models_api.py:889", "shortDescription": {"text": "FastAPI PATCH `patch_provider_config` without auth dependency \u2014 backend/app/api/local_models_api.py:889"}, "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-9a2f78ec276a692e", "name": "FastAPI PATCH `patch_tokens` without auth dependency \u2014 backend/app/api/local_models_api.py:915", "shortDescription": {"text": "FastAPI PATCH `patch_tokens` without auth dependency \u2014 backend/app/api/local_models_api.py:915"}, "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-a2dc376c0ca189d9", "name": "FastAPI DELETE `delete_token` without auth dependency \u2014 backend/app/api/local_models_api.py:930", "shortDescription": {"text": "FastAPI DELETE `delete_token` without auth dependency \u2014 backend/app/api/local_models_api.py:930"}, "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-1e971b351074a814", "name": "FastAPI POST `control_provider_server` without auth dependency \u2014 backend/app/api/local_models_api.py:942", "shortDescription": {"text": "FastAPI POST `control_provider_server` without auth dependency \u2014 backend/app/api/local_models_api.py:942"}, "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-5badc4567372c04e", "name": "FastAPI POST `apply_hardware_preset` without auth dependency \u2014 backend/app/api/local_models_api.py:992", "shortDescription": {"text": "FastAPI POST `apply_hardware_preset` without auth dependency \u2014 backend/app/api/local_models_api.py:992"}, "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-119209fe4a1dbf41", "name": "FastAPI POST `telemetry_reset` without auth dependency \u2014 backend/app/api/local_models_api.py:1011", "shortDescription": {"text": "FastAPI POST `telemetry_reset` without auth dependency \u2014 backend/app/api/local_models_api.py:1011"}, "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-7f880e95717260bf", "name": "FastAPI POST `benchmark_model` without auth dependency \u2014 backend/app/api/local_models_api.py:1028", "shortDescription": {"text": "FastAPI POST `benchmark_model` without auth dependency \u2014 backend/app/api/local_models_api.py:1028"}, "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-695e83a5f847b031", "name": "FastAPI POST `pull_model` without auth dependency \u2014 backend/app/api/ai_settings.py:195", "shortDescription": {"text": "FastAPI POST `pull_model` without auth dependency \u2014 backend/app/api/ai_settings.py:195"}, "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-30d49eab85a275a9", "name": "FastAPI DELETE `delete_model` without auth dependency \u2014 backend/app/api/ai_settings.py:221", "shortDescription": {"text": "FastAPI DELETE `delete_model` without auth dependency \u2014 backend/app/api/ai_settings.py:221"}, "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-e8f7a0105606a1a9", "name": "FastAPI PATCH `update_config` without auth dependency \u2014 backend/app/api/ai_settings.py:324", "shortDescription": {"text": "FastAPI PATCH `update_config` without auth dependency \u2014 backend/app/api/ai_settings.py:324"}, "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-8202f331f74d54da", "name": "FastAPI PATCH `patch_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:361", "shortDescription": {"text": "FastAPI PATCH `patch_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:361"}, "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-a7a1bb353fba591c", "name": "FastAPI POST `apply_stable_local_agent_preset` without auth dependency \u2014 backend/app/api/ai_settings.py:398", "shortDescription": {"text": "FastAPI POST `apply_stable_local_agent_preset` without auth dependency \u2014 backend/app/api/ai_settings.py:398"}, "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-9718f326ee9c91a6", "name": "FastAPI POST `reset_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:460", "shortDescription": {"text": "FastAPI POST `reset_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:460"}, "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-7c6e591b0c6c86de", "name": "FastAPI POST `create_resource` without auth dependency \u2014 backend/app/api/technology.py:111", "shortDescription": {"text": "FastAPI POST `create_resource` without auth dependency \u2014 backend/app/api/technology.py:111"}, "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-efe41460c1114f8b", "name": "FastAPI POST `create_operation_template` without auth dependency \u2014 backend/app/api/technology.py:161", "shortDescription": {"text": "FastAPI POST `create_operation_template` without auth dependency \u2014 backend/app/api/technology.py:161"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a839de91f018d91c", "name": "FastAPI POST `create_process_plan` without auth dependency \u2014 backend/app/api/technology.py:206", "shortDescription": {"text": "FastAPI POST `create_process_plan` without auth dependency \u2014 backend/app/api/technology.py:206"}, "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-d1177299012d6e0c", "name": "FastAPI POST `draft_process_plan_from_document` without auth dependency \u2014 backend/app/api/technology.py:244", "shortDescription": {"text": "FastAPI POST `draft_process_plan_from_document` without auth dependency \u2014 backend/app/api/technology.py:244"}, "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-ff20e6a2913e534c", "name": "FastAPI POST `approve_process_plan` without auth dependency \u2014 backend/app/api/technology.py:574", "shortDescription": {"text": "FastAPI POST `approve_process_plan` without auth dependency \u2014 backend/app/api/technology.py:574"}, "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-a9a2f9077cff4504", "name": "FastAPI POST `validate_process_plan` without auth dependency \u2014 backend/app/api/technology.py:615", "shortDescription": {"text": "FastAPI POST `validate_process_plan` without auth dependency \u2014 backend/app/api/technology.py:615"}, "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-010c0ea98c966ba5", "name": "FastAPI POST `estimate_process_plan_norms` without auth dependency \u2014 backend/app/api/technology.py:659", "shortDescription": {"text": "FastAPI POST `estimate_process_plan_norms` without auth dependency \u2014 backend/app/api/technology.py:659"}, "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-077f5c53b56e00de", "name": "FastAPI POST `add_operation` without auth dependency \u2014 backend/app/api/technology.py:719", "shortDescription": {"text": "FastAPI POST `add_operation` without auth dependency \u2014 backend/app/api/technology.py:719"}, "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-27ff3b28b540ba7a", "name": "FastAPI POST `create_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:750", "shortDescription": {"text": "FastAPI POST `create_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:750"}, "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-c410976bbf59c39c", "name": "FastAPI POST `approve_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:782", "shortDescription": {"text": "FastAPI POST `approve_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:782"}, "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-a22f4a07d0cb6418", "name": "FastAPI POST `record_correction` without auth dependency \u2014 backend/app/api/technology.py:811", "shortDescription": {"text": "FastAPI POST `record_correction` without auth dependency \u2014 backend/app/api/technology.py:811"}, "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-cb5a9e68f3f6baf4", "name": "FastAPI POST `create_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:895", "shortDescription": {"text": "FastAPI POST `create_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:895"}, "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-8433b5d8e1d8ce2e", "name": "FastAPI POST `activate_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:916", "shortDescription": {"text": "FastAPI POST `activate_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:916"}, "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-df60c17201420afb", "name": "FastAPI POST `generate_tp_from_drawing` without auth dependency \u2014 backend/app/api/technology.py:1364", "shortDescription": {"text": "FastAPI POST `generate_tp_from_drawing` without auth dependency \u2014 backend/app/api/technology.py:1364"}, "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-185d008332c54f55", "name": "FastAPI POST `analyze_surfaces` without auth dependency \u2014 backend/app/api/technology.py:1426", "shortDescription": {"text": "FastAPI POST `analyze_surfaces` without auth dependency \u2014 backend/app/api/technology.py:1426"}, "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-87188f588d3324a8", "name": "FastAPI POST `select_equipment_for_op` without auth dependency \u2014 backend/app/api/technology.py:1468", "shortDescription": {"text": "FastAPI POST `select_equipment_for_op` without auth dependency \u2014 backend/app/api/technology.py:1468"}, "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-05f59fafb0309123", "name": "FastAPI POST `calculate_cutting_params` without auth dependency \u2014 backend/app/api/technology.py:1500", "shortDescription": {"text": "FastAPI POST `calculate_cutting_params` without auth dependency \u2014 backend/app/api/technology.py:1500"}, "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-2c55ee5c34c61273", "name": "FastAPI POST `run_normcontrol` without auth dependency \u2014 backend/app/api/technology.py:1533", "shortDescription": {"text": "FastAPI POST `run_normcontrol` without auth dependency \u2014 backend/app/api/technology.py:1533"}, "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-5e85b199d865407e", "name": "FastAPI POST `resolve_normcontrol_check` without auth dependency \u2014 backend/app/api/technology.py:1548", "shortDescription": {"text": "FastAPI POST `resolve_normcontrol_check` without auth dependency \u2014 backend/app/api/technology.py:1548"}, "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-747aac449ff63cf7", "name": "FastAPI POST `set_blank_spec` without auth dependency \u2014 backend/app/api/technology.py:1572", "shortDescription": {"text": "FastAPI POST `set_blank_spec` without auth dependency \u2014 backend/app/api/technology.py:1572"}, "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-54fa5acc27596a15", "name": "FastAPI POST `export_gost_forms` without auth dependency \u2014 backend/app/api/technology.py:1653", "shortDescription": {"text": "FastAPI POST `export_gost_forms` without auth dependency \u2014 backend/app/api/technology.py:1653"}, "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-0c279d1b4c07b37d", "name": "FastAPI POST `bootstrap_admin` without auth dependency \u2014 backend/app/api/setup.py:29", "shortDescription": {"text": "FastAPI POST `bootstrap_admin` without auth dependency \u2014 backend/app/api/setup.py:29"}, "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-131cfa051411f0f9", "name": "FastAPI POST `verify_workspace_block` without auth dependency \u2014 backend/app/api/workspace.py:111", "shortDescription": {"text": "FastAPI POST `verify_workspace_block` without auth dependency \u2014 backend/app/api/workspace.py:111"}, "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-18fc097d2b3b6caf", "name": "FastAPI DELETE `delete_workspace_block_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:135", "shortDescription": {"text": "FastAPI DELETE `delete_workspace_block_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:135"}, "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-85d45b1495810363", "name": "FastAPI DELETE `clear_workspace_blocks_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:143", "shortDescription": {"text": "FastAPI DELETE `clear_workspace_blocks_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:143"}, "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-f1c101f089aa8d94", "name": "FastAPI POST `publish_invoice_table` without auth dependency \u2014 backend/app/api/workspace.py:151", "shortDescription": {"text": "FastAPI POST `publish_invoice_table` without auth dependency \u2014 backend/app/api/workspace.py:151"}, "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-48909ca04253dd94", "name": "FastAPI POST `publish_invoice_items_table` without auth dependency \u2014 backend/app/api/workspace.py:200", "shortDescription": {"text": "FastAPI POST `publish_invoice_items_table` without auth dependency \u2014 backend/app/api/workspace.py:200"}, "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-18df23969eb853b1", "name": "FastAPI POST `publish_invoice_items_grouped_table` without auth dependency \u2014 backend/app/api/workspace.py:283", "shortDescription": {"text": "FastAPI POST `publish_invoice_items_grouped_table` without auth dependency \u2014 backend/app/api/workspace.py:283"}, "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-b529ee5f0d334812", "name": "FastAPI POST `publish_invoice_items_by_supplier_table` without auth dependency \u2014 backend/app/api/workspace.py:340", "shortDescription": {"text": "FastAPI POST `publish_invoice_items_by_supplier_table` without auth dependency \u2014 backend/app/api/workspace.py:340"}, "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-cc85a5c2d20a558b", "name": "FastAPI POST `publish_invoice_pivot_table` without auth dependency \u2014 backend/app/api/workspace.py:539", "shortDescription": {"text": "FastAPI POST `publish_invoice_pivot_table` without auth dependency \u2014 backend/app/api/workspace.py:539"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b24a4124b6520313", "name": "FastAPI POST `publish_sql_table` without auth dependency \u2014 backend/app/api/workspace.py:662", "shortDescription": {"text": "FastAPI POST `publish_sql_table` without auth dependency \u2014 backend/app/api/workspace.py:662"}, "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-177b35fab12fd832", "name": "FastAPI POST `publish_general_block` without auth dependency \u2014 backend/app/api/workspace.py:724", "shortDescription": {"text": "FastAPI POST `publish_general_block` without auth dependency \u2014 backend/app/api/workspace.py:724"}, "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-0be01edf810e7a7d", "name": "FastAPI POST `export_invoice_excel` without auth dependency \u2014 backend/app/api/export.py:42", "shortDescription": {"text": "FastAPI POST `export_invoice_excel` without auth dependency \u2014 backend/app/api/export.py:42"}, "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-e995c4e1c52a2ba5", "name": "FastAPI POST `export_invoice_1c` without auth dependency \u2014 backend/app/api/export.py:81", "shortDescription": {"text": "FastAPI POST `export_invoice_1c` without auth dependency \u2014 backend/app/api/export.py:81"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d3396c4cd4d84f5", "name": "FastAPI POST `search_documents` without auth dependency \u2014 backend/app/api/search.py:67", "shortDescription": {"text": "FastAPI POST `search_documents` without auth dependency \u2014 backend/app/api/search.py:67"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5b8cd629a16076d4", "name": "FastAPI POST `nl_to_query` without auth dependency \u2014 backend/app/api/search.py:141", "shortDescription": {"text": "FastAPI POST `nl_to_query` without auth dependency \u2014 backend/app/api/search.py:141"}, "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-dba68524f06e11d6", "name": "FastAPI POST `hybrid_search` without auth dependency \u2014 backend/app/api/search.py:215", "shortDescription": {"text": "FastAPI POST `hybrid_search` without auth dependency \u2014 backend/app/api/search.py:215"}, "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-1643ab68975f894b", "name": "FastAPI POST `create_saved_query` without auth dependency \u2014 backend/app/api/search.py:344", "shortDescription": {"text": "FastAPI POST `create_saved_query` without auth dependency \u2014 backend/app/api/search.py:344"}, "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-5b601c008a2b2659", "name": "FastAPI DELETE `delete_saved_query` without auth dependency \u2014 backend/app/api/search.py:364", "shortDescription": {"text": "FastAPI DELETE `delete_saved_query` without auth dependency \u2014 backend/app/api/search.py:364"}, "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-36bd2344c5c8124b", "name": "FastAPI POST `create_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:125", "shortDescription": {"text": "FastAPI POST `create_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:125"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec545b3aceaea959", "name": "FastAPI PATCH `update_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:189", "shortDescription": {"text": "FastAPI PATCH `update_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:189"}, "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-fc2aac5ed6247d90", "name": "FastAPI DELETE `delete_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:213", "shortDescription": {"text": "FastAPI DELETE `delete_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:213"}, "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-cfc29caad5f0c6d4", "name": "FastAPI POST `test_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:226", "shortDescription": {"text": "FastAPI POST `test_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:226"}, "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-cdab1c77ce2f2239", "name": "FastAPI POST `publish_to_canvas` without auth dependency \u2014 backend/app/api/canvas.py:64", "shortDescription": {"text": "FastAPI POST `publish_to_canvas` without auth dependency \u2014 backend/app/api/canvas.py:64"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79779b279d3318a2", "name": "FastAPI POST `upload_drawing` without auth dependency \u2014 backend/app/api/drawings.py:70", "shortDescription": {"text": "FastAPI POST `upload_drawing` without auth dependency \u2014 backend/app/api/drawings.py:70"}, "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-eb65b662336a14b0", "name": "FastAPI PATCH `update_drawing` without auth dependency \u2014 backend/app/api/drawings.py:181", "shortDescription": {"text": "FastAPI PATCH `update_drawing` without auth dependency \u2014 backend/app/api/drawings.py:181"}, "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-3edcfdd01e43e590", "name": "FastAPI DELETE `bulk_delete_drawings` without auth dependency \u2014 backend/app/api/drawings.py:204", "shortDescription": {"text": "FastAPI DELETE `bulk_delete_drawings` without auth dependency \u2014 backend/app/api/drawings.py:204"}, "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-e5cc9965a6e5855c", "name": "FastAPI DELETE `delete_drawing` without auth dependency \u2014 backend/app/api/drawings.py:274", "shortDescription": {"text": "FastAPI DELETE `delete_drawing` without auth dependency \u2014 backend/app/api/drawings.py:274"}, "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-22202552db1e55de", "name": "FastAPI POST `reanalyze_drawing` without auth dependency \u2014 backend/app/api/drawings.py:339", "shortDescription": {"text": "FastAPI POST `reanalyze_drawing` without auth dependency \u2014 backend/app/api/drawings.py:339"}, "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-2db571e8bcb7f624", "name": "FastAPI POST `bulk_reanalyze_drawings` without auth dependency \u2014 backend/app/api/drawings.py:380", "shortDescription": {"text": "FastAPI POST `bulk_reanalyze_drawings` without auth dependency \u2014 backend/app/api/drawings.py:380"}, "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-36d9b895206d4518", "name": "FastAPI PATCH `set_drawing_status` without auth dependency \u2014 backend/app/api/drawings.py:451", "shortDescription": {"text": "FastAPI PATCH `set_drawing_status` without auth dependency \u2014 backend/app/api/drawings.py:451"}, "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-a980fe48ec6ef1f0", "name": "FastAPI POST `correct_drawing_feature` without auth dependency \u2014 backend/app/api/drawings.py:606", "shortDescription": {"text": "FastAPI POST `correct_drawing_feature` without auth dependency \u2014 backend/app/api/drawings.py:606"}, "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-f41b0d196e196218", "name": "FastAPI POST `create_feature` without auth dependency \u2014 backend/app/api/drawings.py:784", "shortDescription": {"text": "FastAPI POST `create_feature` without auth dependency \u2014 backend/app/api/drawings.py:784"}, "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-5ece21caca80b801", "name": "FastAPI PATCH `update_feature` without auth dependency \u2014 backend/app/api/drawings.py:850", "shortDescription": {"text": "FastAPI PATCH `update_feature` without auth dependency \u2014 backend/app/api/drawings.py:850"}, "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-19b13eee39a9aebe", "name": "FastAPI POST `review_feature` without auth dependency \u2014 backend/app/api/drawings.py:885", "shortDescription": {"text": "FastAPI POST `review_feature` without auth dependency \u2014 backend/app/api/drawings.py:885"}, "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-79cead3df9926408", "name": "FastAPI DELETE `delete_feature` without auth dependency \u2014 backend/app/api/drawings.py:917", "shortDescription": {"text": "FastAPI DELETE `delete_feature` without auth dependency \u2014 backend/app/api/drawings.py:917"}, "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-c0d1b9c391f5814b", "name": "FastAPI PUT `update_contours` without auth dependency \u2014 backend/app/api/drawings.py:971", "shortDescription": {"text": "FastAPI PUT `update_contours` without auth dependency \u2014 backend/app/api/drawings.py:971"}, "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-2efe4d537aa7856c", "name": "FastAPI POST `bind_tool` without auth dependency \u2014 backend/app/api/drawings.py:1048", "shortDescription": {"text": "FastAPI POST `bind_tool` without auth dependency \u2014 backend/app/api/drawings.py:1048"}, "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-86625832490ba0dc", "name": "FastAPI PATCH `update_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1108", "shortDescription": {"text": "FastAPI PATCH `update_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1108"}, "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-f735d013c92b135f", "name": "FastAPI DELETE `remove_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1134", "shortDescription": {"text": "FastAPI DELETE `remove_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1134"}, "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-93053af12eea6630", "name": "FastAPI POST `ingest_document` without auth dependency \u2014 backend/app/api/documents.py:469", "shortDescription": {"text": "FastAPI POST `ingest_document` without auth dependency \u2014 backend/app/api/documents.py:469"}, "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-d790bf086316a1a1", "name": "FastAPI POST `batch_process_documents` without auth dependency \u2014 backend/app/api/documents.py:1088", "shortDescription": {"text": "FastAPI POST `batch_process_documents` without auth dependency \u2014 backend/app/api/documents.py:1088"}, "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-21112c948dc139ac", "name": "FastAPI POST `batch_classify_documents` without auth dependency \u2014 backend/app/api/documents.py:1131", "shortDescription": {"text": "FastAPI POST `batch_classify_documents` without auth dependency \u2014 backend/app/api/documents.py:1131"}, "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-638b33e8249a197a", "name": "FastAPI POST `batch_reindex_document_embeddings` without auth dependency \u2014 backend/app/api/documents.py:1165", "shortDescription": {"text": "FastAPI POST `batch_reindex_document_embeddings` without auth dependency \u2014 backend/app/api/documents.py:1165"}, "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-eacfadeab75e0f26", "name": "FastAPI POST `batch_rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1190", "shortDescription": {"text": "FastAPI POST `batch_rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1190"}, "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-787412b4fa8ba31e", "name": "FastAPI POST `batch_run_ntd_checks` without auth dependency \u2014 backend/app/api/documents.py:1228", "shortDescription": {"text": "FastAPI POST `batch_run_ntd_checks` without auth dependency \u2014 backend/app/api/documents.py:1228"}, "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-c76871c326a1daac", "name": "FastAPI PATCH `update_document` without auth dependency \u2014 backend/app/api/documents.py:1315", "shortDescription": {"text": "FastAPI PATCH `update_document` without auth dependency \u2014 backend/app/api/documents.py:1315"}, "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-ad1ae4d379573925", "name": "FastAPI POST `link_document` without auth dependency \u2014 backend/app/api/documents.py:1370", "shortDescription": {"text": "FastAPI POST `link_document` without auth dependency \u2014 backend/app/api/documents.py:1370"}, "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-b75260ea41b6dc7b", "name": "FastAPI PATCH `update_document_link` without auth dependency \u2014 backend/app/api/documents.py:1405", "shortDescription": {"text": "FastAPI PATCH `update_document_link` without auth dependency \u2014 backend/app/api/documents.py:1405"}, "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-f7f5d15ca9dba42c", "name": "FastAPI DELETE `delete_document_link` without auth dependency \u2014 backend/app/api/documents.py:1439", "shortDescription": {"text": "FastAPI DELETE `delete_document_link` without auth dependency \u2014 backend/app/api/documents.py:1439"}, "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-3d19415690423a11", "name": "FastAPI POST `classify_document` without auth dependency \u2014 backend/app/api/documents.py:1558", "shortDescription": {"text": "FastAPI POST `classify_document` without auth dependency \u2014 backend/app/api/documents.py:1558"}, "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-2b64b731660deab3", "name": "FastAPI POST `extract_document` without auth dependency \u2014 backend/app/api/documents.py:1615", "shortDescription": {"text": "FastAPI POST `extract_document` without auth dependency \u2014 backend/app/api/documents.py:1615"}, "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-025e2f197537a2fb", "name": "FastAPI POST `rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1666", "shortDescription": {"text": "FastAPI POST `rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1666"}, "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-b12eca919f1b1581", "name": "FastAPI DELETE `delete_document_hard` without auth dependency \u2014 backend/app/api/documents.py:1717", "shortDescription": {"text": "FastAPI DELETE `delete_document_hard` without auth dependency \u2014 backend/app/api/documents.py:1717"}, "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-06ada470d97383ea", "name": "FastAPI POST `correct_extraction_field` without auth dependency \u2014 backend/app/api/documents.py:1734", "shortDescription": {"text": "FastAPI POST `correct_extraction_field` without auth dependency \u2014 backend/app/api/documents.py:1734"}, "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-5508c0eeda0f18a5", "name": "FastAPI POST `summarize_document` without auth dependency \u2014 backend/app/api/documents.py:1804", "shortDescription": {"text": "FastAPI POST `summarize_document` without auth dependency \u2014 backend/app/api/documents.py:1804"}, "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-7e63f642e5a8897c", "name": "FastAPI POST `snooze_document` without auth dependency \u2014 backend/app/api/documents.py:1874", "shortDescription": {"text": "FastAPI POST `snooze_document` without auth dependency \u2014 backend/app/api/documents.py:1874"}, "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-8e04bfa2f28d2502", "name": "FastAPI POST `fetch_new_emails` without auth dependency \u2014 backend/app/api/email.py:39", "shortDescription": {"text": "FastAPI POST `fetch_new_emails` without auth dependency \u2014 backend/app/api/email.py:39"}, "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-cf97b630e920362e", "name": "FastAPI POST `search_emails` without auth dependency \u2014 backend/app/api/email.py:64", "shortDescription": {"text": "FastAPI POST `search_emails` without auth dependency \u2014 backend/app/api/email.py:64"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1e2292e8e5721984", "name": "FastAPI POST `create_draft` without auth dependency \u2014 backend/app/api/email.py:148", "shortDescription": {"text": "FastAPI POST `create_draft` without auth dependency \u2014 backend/app/api/email.py:148"}, "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-7f8a14e5819275eb", "name": "FastAPI POST `analyze_style` without auth dependency \u2014 backend/app/api/email.py:244", "shortDescription": {"text": "FastAPI POST `analyze_style` without auth dependency \u2014 backend/app/api/email.py:244"}, "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-a02051bd45644ed3", "name": "FastAPI POST `risk_check` without auth dependency \u2014 backend/app/api/email.py:307", "shortDescription": {"text": "FastAPI POST `risk_check` without auth dependency \u2014 backend/app/api/email.py:307"}, "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-0a0c4627fe23c719", "name": "FastAPI POST `send_email` without auth dependency \u2014 backend/app/api/email.py:404", "shortDescription": {"text": "FastAPI POST `send_email` without auth dependency \u2014 backend/app/api/email.py:404"}, "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-9a9a13fa231844f1", "name": "FastAPI POST `suggest_template` without auth dependency \u2014 backend/app/api/email.py:484", "shortDescription": {"text": "FastAPI POST `suggest_template` without auth dependency \u2014 backend/app/api/email.py:484"}, "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-59d4d0806657ca40", "name": "FastAPI DELETE `bulk_delete_messages` without auth dependency \u2014 backend/app/api/email.py:508", "shortDescription": {"text": "FastAPI DELETE `bulk_delete_messages` without auth dependency \u2014 backend/app/api/email.py:508"}, "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-988ee4f5fadaa517", "name": "FastAPI DELETE `delete_message` without auth dependency \u2014 backend/app/api/email.py:530", "shortDescription": {"text": "FastAPI DELETE `delete_message` without auth dependency \u2014 backend/app/api/email.py:530"}, "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-babafb9b82a9d10d", "name": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/app/api/email.py:547", "shortDescription": {"text": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/app/api/email.py:547"}, "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-1d31d0aab4884701", "name": "FastAPI POST `check_duplicate` without auth dependency \u2014 backend/app/api/suppliers.py:161", "shortDescription": {"text": "FastAPI POST `check_duplicate` without auth dependency \u2014 backend/app/api/suppliers.py:161"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a1aae62008a768db", "name": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:174", "shortDescription": {"text": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:174"}, "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-fb4c119436f5390a", "name": "FastAPI POST `search_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:311", "shortDescription": {"text": "FastAPI POST `search_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:311"}, "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-cd5326662362d5a6", "name": "FastAPI POST `check_requisites` without auth dependency \u2014 backend/app/api/suppliers.py:405", "shortDescription": {"text": "FastAPI POST `check_requisites` without auth dependency \u2014 backend/app/api/suppliers.py:405"}, "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-c7223e7d4c8679df", "name": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:643", "shortDescription": {"text": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:643"}, "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-0e342bcb795eb1de", "name": "FastAPI DELETE `bulk_delete_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:790", "shortDescription": {"text": "FastAPI DELETE `bulk_delete_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:790"}, "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-5a6aa1724ff77f85", "name": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:818", "shortDescription": {"text": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:818"}, "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-1316e46ad853a0e1", "name": "FastAPI POST `request_approval` without auth dependency \u2014 backend/app/api/approvals.py:111", "shortDescription": {"text": "FastAPI POST `request_approval` without auth dependency \u2014 backend/app/api/approvals.py:111"}, "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-272fdbba3d128cdf", "name": "FastAPI POST `create_approval_chain` without auth dependency \u2014 backend/app/api/approvals.py:224", "shortDescription": {"text": "FastAPI POST `create_approval_chain` without auth dependency \u2014 backend/app/api/approvals.py:224"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ae8e47fb2f243a8", "name": "Unused endpoint: POST /run/{skill_name}", "shortDescription": {"text": "Unused endpoint: POST /run/{skill_name}"}, "fullDescription": {"text": "`infra/skill-runner/runner.py` declares `POST /run/{skill_name}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-496861c0d4b936eb", "name": "Unused endpoint: POST /smoke", "shortDescription": {"text": "Unused endpoint: POST /smoke"}, "fullDescription": {"text": "`infra/skill-runner/runner.py` declares `POST /smoke` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-574e0277428b2c6c", "name": "Unused endpoint: GET /api/tasks/{task_id}", "shortDescription": {"text": "Unused endpoint: GET /api/tasks/{task_id}"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/tasks/{task_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30ebd8b02a460b20", "name": "Unused endpoint: GET /api/metrics", "shortDescription": {"text": "Unused endpoint: GET /api/metrics"}, "fullDescription": {"text": "`backend/app/main.py` declares `GET /api/metrics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-988fb34b62c4c25c", "name": "Unused endpoint: GET /api/notifications", "shortDescription": {"text": "Unused endpoint: GET /api/notifications"}, "fullDescription": {"text": "`backend/app/api/notifications.py` declares `GET /api/notifications` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1902f42e632e1fc7", "name": "Unused endpoint: GET /api/notifications/unread-count", "shortDescription": {"text": "Unused endpoint: GET /api/notifications/unread-count"}, "fullDescription": {"text": "`backend/app/api/notifications.py` declares `GET /api/notifications/unread-count` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c77d5d99c6c2931b", "name": "Unused endpoint: POST /api/notifications/{notification_id}/read", "shortDescription": {"text": "Unused endpoint: POST /api/notifications/{notification_id}/read"}, "fullDescription": {"text": "`backend/app/api/notifications.py` declares `POST /api/notifications/{notification_id}/read` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1aa4e33f42379323", "name": "Unused endpoint: POST /api/notifications/read-all", "shortDescription": {"text": "Unused endpoint: POST /api/notifications/read-all"}, "fullDescription": {"text": "`backend/app/api/notifications.py` declares `POST /api/notifications/read-all` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5139115071e5f5ee", "name": "Unused endpoint: POST /api/workspace/blocks/{block_id}/export", "shortDescription": {"text": "Unused endpoint: POST /api/workspace/blocks/{block_id}/export"}, "fullDescription": {"text": "`backend/app/api/workspace_export.py` declares `POST /api/workspace/blocks/{block_id}/export` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17534e44084f45be", "name": "Unused endpoint: POST /api/calendar/events", "shortDescription": {"text": "Unused endpoint: POST /api/calendar/events"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `POST /api/calendar/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98c3b71c4d647c62", "name": "Unused endpoint: GET /api/calendar/events", "shortDescription": {"text": "Unused endpoint: GET /api/calendar/events"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `GET /api/calendar/events` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c03a8ce6b1217172", "name": "Unused endpoint: POST /api/calendar/extract-dates", "shortDescription": {"text": "Unused endpoint: POST /api/calendar/extract-dates"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `POST /api/calendar/extract-dates` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51b0fa87010577e0", "name": "Unused endpoint: GET /api/calendar/upcoming", "shortDescription": {"text": "Unused endpoint: GET /api/calendar/upcoming"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `GET /api/calendar/upcoming` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db562ed3ad65b09b", "name": "Unused endpoint: POST /api/calendar/reminders", "shortDescription": {"text": "Unused endpoint: POST /api/calendar/reminders"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `POST /api/calendar/reminders` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30dc1771c1756fcc", "name": "Unused endpoint: GET /api/calendar/reminders", "shortDescription": {"text": "Unused endpoint: GET /api/calendar/reminders"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `GET /api/calendar/reminders` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03719921fcbefad7", "name": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/generate-followup", "shortDescription": {"text": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/generate-followup"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `POST /api/calendar/reminders/{reminder_id}/generate-followup` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0273826bfa71f566", "name": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/mark-sent", "shortDescription": {"text": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/mark-sent"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `POST /api/calendar/reminders/{reminder_id}/mark-sent` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b1b62b787f195d9", "name": "Unused endpoint: GET /api/calendar/export.ics", "shortDescription": {"text": "Unused endpoint: GET /api/calendar/export.ics"}, "fullDescription": {"text": "`backend/app/api/calendar.py` declares `GET /api/calendar/export.ics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efb944d0467aad29", "name": "Unused endpoint: GET /api/payment-schedules", "shortDescription": {"text": "Unused endpoint: GET /api/payment-schedules"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `GET /api/payment-schedules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68ed0e480f33d0e3", "name": "Unused endpoint: POST /api/payment-schedules", "shortDescription": {"text": "Unused endpoint: POST /api/payment-schedules"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `POST /api/payment-schedules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98fdaddcb4d093db", "name": "Unused endpoint: GET /api/payment-schedules/overdue", "shortDescription": {"text": "Unused endpoint: GET /api/payment-schedules/overdue"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `GET /api/payment-schedules/overdue` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abde5c1849aaae6a", "name": "Unused endpoint: GET /api/payment-schedules/upcoming", "shortDescription": {"text": "Unused endpoint: GET /api/payment-schedules/upcoming"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `GET /api/payment-schedules/upcoming` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c95476ac05d84ea4", "name": "Unused endpoint: GET /api/payment-schedules/{schedule_id}", "shortDescription": {"text": "Unused endpoint: GET /api/payment-schedules/{schedule_id}"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `GET /api/payment-schedules/{schedule_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae61fe4c87e63a3c", "name": "Unused endpoint: PATCH /api/payment-schedules/{schedule_id}", "shortDescription": {"text": "Unused endpoint: PATCH /api/payment-schedules/{schedule_id}"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `PATCH /api/payment-schedules/{schedule_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63e7bb01c2535793", "name": "Unused endpoint: POST /api/payment-schedules/{schedule_id}/mark-paid", "shortDescription": {"text": "Unused endpoint: POST /api/payment-schedules/{schedule_id}/mark-paid"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `POST /api/payment-schedules/{schedule_id}/mark-paid` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a1f3d60b88aeee6", "name": "Unused endpoint: POST /api/invoices/{invoice_id}/schedule-payment", "shortDescription": {"text": "Unused endpoint: POST /api/invoices/{invoice_id}/schedule-payment"}, "fullDescription": {"text": "`backend/app/api/payments.py` declares `POST /api/invoices/{invoice_id}/schedule-payment` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a60ed948238ae8f3", "name": "Unused endpoint: POST /backup", "shortDescription": {"text": "Unused endpoint: POST /backup"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `POST /backup` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5dfd6eb0c2d510e", "name": "Unused endpoint: GET /backups", "shortDescription": {"text": "Unused endpoint: GET /backups"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `GET /backups` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33d3b58e906edf91", "name": "Unused endpoint: GET /backups/{name}/download", "shortDescription": {"text": "Unused endpoint: GET /backups/{name}/download"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `GET /backups/{name}/download` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ae7b72144f7bbbe", "name": "Unused endpoint: POST /backups/upload", "shortDescription": {"text": "Unused endpoint: POST /backups/upload"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `POST /backups/upload` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa1e35dc79c1ea71", "name": "Unused endpoint: DELETE /backups/{name}", "shortDescription": {"text": "Unused endpoint: DELETE /backups/{name}"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `DELETE /backups/{name}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-011c572b3563a6f2", "name": "Unused endpoint: POST /backups/{name}/restore", "shortDescription": {"text": "Unused endpoint: POST /backups/{name}/restore"}, "fullDescription": {"text": "`backend/app/api/maintenance.py` declares `POST /backups/{name}/restore` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78cca46f4f7224cf", "name": "Unused endpoint: GET /api/providers", "shortDescription": {"text": "Unused endpoint: GET /api/providers"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `GET /api/providers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d17984999c826fe", "name": "Unused endpoint: GET /api/providers/", "shortDescription": {"text": "Unused endpoint: GET /api/providers/"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `GET /api/providers/` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b47ff0cf13b9692b", "name": "Unused endpoint: POST /api/providers", "shortDescription": {"text": "Unused endpoint: POST /api/providers"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `POST /api/providers` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea39439a577f43bd", "name": "Unused endpoint: POST /api/providers/", "shortDescription": {"text": "Unused endpoint: POST /api/providers/"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `POST /api/providers/` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-599c1eb33a6df42d", "name": "Unused endpoint: PUT /api/providers/{instance_id}", "shortDescription": {"text": "Unused endpoint: PUT /api/providers/{instance_id}"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `PUT /api/providers/{instance_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6891c01bfc88b39", "name": "Unused endpoint: DELETE /api/providers/{instance_id}", "shortDescription": {"text": "Unused endpoint: DELETE /api/providers/{instance_id}"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `DELETE /api/providers/{instance_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fb0a1da573c4ba2", "name": "Unused endpoint: POST /api/providers/{instance_id}/test", "shortDescription": {"text": "Unused endpoint: POST /api/providers/{instance_id}/test"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `POST /api/providers/{instance_id}/test` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15916620591ad349", "name": "Unused endpoint: POST /api/providers/{instance_id}/refresh-models", "shortDescription": {"text": "Unused endpoint: POST /api/providers/{instance_id}/refresh-models"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `POST /api/providers/{instance_id}/refresh-models` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0c751cc9bb2ec28", "name": "Unused endpoint: GET /api/providers/models", "shortDescription": {"text": "Unused endpoint: GET /api/providers/models"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `GET /api/providers/models` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-452f6c0f50401c7a", "name": "Unused endpoint: GET /api/providers/live-models", "shortDescription": {"text": "Unused endpoint: GET /api/providers/live-models"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `GET /api/providers/live-models` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e67af48ceb5e109", "name": "Unused endpoint: PATCH /api/providers/models/{model_key}/thinking", "shortDescription": {"text": "Unused endpoint: PATCH /api/providers/models/{model_key}/thinking"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `PATCH /api/providers/models/{model_key}/thinking` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84351512c77c9261", "name": "Unused endpoint: PATCH /api/providers/models/{model_key}/preferred-instance", "shortDescription": {"text": "Unused endpoint: PATCH /api/providers/models/{model_key}/preferred-instance"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `PATCH /api/providers/models/{model_key}/preferred-instance` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94ea69cb1c686be0", "name": "Unused endpoint: GET /api/providers/slots", "shortDescription": {"text": "Unused endpoint: GET /api/providers/slots"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `GET /api/providers/slots` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9117071176ba9ef", "name": "Unused endpoint: PUT /api/providers/slots/{slot}", "shortDescription": {"text": "Unused endpoint: PUT /api/providers/slots/{slot}"}, "fullDescription": {"text": "`backend/app/api/providers_api.py` declares `PUT /api/providers/slots/{slot}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4221670861e52f0", "name": "Unused endpoint: POST /api/compare", "shortDescription": {"text": "Unused endpoint: POST /api/compare"}, "fullDescription": {"text": "`backend/app/api/compare.py` declares `POST /api/compare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36aa9f8e622a0740", "name": "Unused endpoint: GET /api/compare", "shortDescription": {"text": "Unused endpoint: GET /api/compare"}, "fullDescription": {"text": "`backend/app/api/compare.py` declares `GET /api/compare` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-844a02cbecfebae4", "name": "Unused endpoint: GET /api/compare/{session_id}", "shortDescription": {"text": "Unused endpoint: GET /api/compare/{session_id}"}, "fullDescription": {"text": "`backend/app/api/compare.py` declares `GET /api/compare/{session_id}` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ed8d5cbf45211ce", "name": "Unused endpoint: POST /api/compare/{session_id}/align", "shortDescription": {"text": "Unused endpoint: POST /api/compare/{session_id}/align"}, "fullDescription": {"text": "`backend/app/api/compare.py` declares `POST /api/compare/{session_id}/align` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23579"}, "properties": {"repository": "Zeed80/ai-docs", "repoUrl": "https://github.com/Zeed80/ai-docs", "branch": "main"}, "results": [{"ruleId": "foundry_unresolved_feedback", "level": "warning", "message": {"text": "Foundry mined unresolved feedback: Zeed80/ai-docs"}, "properties": {"repobilityId": 423727, "scanner": "foundry_dataset", "fingerprint": "d978edd192680047088feb87eba5cb6e7d0d595e122007eed7b309e9a010e21c", "category": "practices", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback without linked fix evidence", "intent": "Negative/unresolved examples that should not be hallucinated into fixes.", "labels": {"test_or_ci": 1, "api_or_backend": 8, "deployment_env_gap": 1, "issue_or_pull_request_thread": 1, "not_resolved_or_not_observed": 3, "human_reported_issue_no_linked_fix": 1, "thread_has_human_issue_without_fix_context": 2}, "source": "graph_query_export", "motif_id": "unlinked_feedback_needs_evidence", "outcomes": {"not_resolved_or_not_observed": 6}, "polarity": "bad", "query_id": "unresolved_feedback", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 38, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 9, "chain_has_link_quality": 3, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 1, "comment_chain_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 18, "node_types": {"repo": 1, "thread": 1, "comment": 1, "pr_file": 9, "fix_outcome": 1, "issue_chain": 1, "link_quality": 3, "comment_chain": 1}, "query_type": "motif_query", "thread_key": "Zeed80/ai-docs#2", "issue_number": "2", "quality_tiers": {"unresolved": 3}, "repo_full_name": "Zeed80/ai-docs", "training_usage": "negative_or_unresolved", "source_motif_id": "graph-pattern-motif-thread-8cc7e983cdc31c4d", "graph_gold_label": "needs_more_evidence", "changed_file_labels": {"test_or_ci": 4, "api_or_backend": 32}}, "text": "Graph query export: Human feedback without linked fix evidence\nQuery id: unresolved_feedback\nQuery type: motif_query\nIntent: Negative/unresolved examples that should not be hallucinated into fixes.\nMotif: unlinked_feedback_needs_evidence\nTraining usage: negative_or_unresolved\nGraph gold label: needs_more_evidence\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nEvidence:\nGraph motif: Human feedback exists without a linked fix\nMotif id: unlinked_feedback_needs_evidence\nPolarity: bad\nTraining usage: negative_or_unresolved\nSeverity: medium\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nGraph gold label: needs_more_evidence\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#2\nRepo: Zeed80/ai-docs\nIssue/PR number: 2\nGraph consistency label: needs_more_evidence\nNodes: 18\nEdges: 38\nNode types: {'pr_file': 9, 'link_quality': 3, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1}\nEdge types: {'thread_touches_file': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, 'chain_has_link_quality': 3, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1}\nLabels: {'api_or_backend': 8, 'not_resolved_or_not_observed': 3, 'thread_has_human_issue_without_fix_context': 2, 'issue_or_pull_request_thread': 1, 'deployment_env_gap': 1, 'test_or_ci': 1, 'human_reported_issue_no_linked_fix': 1}\nOutcomes: {'not_resolved_or_not_observed': 6}\nQuality tiers: {'unresolved': 3}\nCI labels: {}\nCurriculum targets:\n- Teach models to preserve unresolved human feedback instead of hallucinating fixes.\n- Build issue-to-regression examples where no accepted fix exists yet.\nAssumption checks:\n- Can a commit be linked by issue number, SHA, changed path, or time window?\n- If no link exists, is this explicitly labelled unresolved?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "graph-query-motif_query-0135754697d58ce8", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/unresolved_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "graph_queries/unresolved_feedback", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: Zeed80/ai-docs"}, "properties": {"repobilityId": 395613, "scanner": "foundry_dataset", "fingerprint": "c79881b19d5a31fd64e85da88352f6f41ea6eb65b95e44294cca62001d69bfdf", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 3, "test_or_ci": 9, "test_ci_gap": 1, "api_or_backend": 19, "schema_or_data": 1, "ui_or_frontend": 7, "source_or_other": 3, "dependency_or_build": 2, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 85, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 41, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 58, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 41, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "Zeed80/ai-docs#4", "issue_number": "4", "quality_tiers": {"high_confidence": 3, "assumption_check": 1}, "repo_full_name": "Zeed80/ai-docs", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-7819e5db6adb4d38", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 36, "api_or_backend": 76, "schema_or_data": 4, "ui_or_frontend": 28, "source_or_other": 12, "dependency_or_build": 8}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#4\nRepo: Zeed80/ai-docs\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 85\nNode types: {'pr_file': 41, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 41, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 19, 'test_or_ci': 9, 'ui_or_frontend': 7, 'source_or_other': 3, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'dependency_or_build': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "graph-query-motif_query-ae33088621676419", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_blueprint_gap", "level": "warning", "message": {"text": "Foundry mined blueprint gap alignment: Zeed80/ai-docs"}, "properties": {"repobilityId": 395612, "scanner": "foundry_dataset", "fingerprint": "c1c12f5451486c942a7422232884c1f76c063351aec8e4c42d27f9c9383e28b0", "category": "tech_debt", "severity": "medium", "confidence": 0.7, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Human feedback aligned with blueprint or architecture gaps", "intent": "Curriculum-gap examples connecting issue threads to helicopter-view gaps.", "labels": {"bug_fix": 4, "test_or_ci": 2, "api_or_backend": 5, "ui_or_frontend": 2, "api_integration_gap": 1, "verification_or_tests": 1, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "blueprint_gap_alignment", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "mixed", "query_id": "blueprint_gap_alignment", "severity": "medium", "ci_labels": {}, "synthetic": false, "edge_count": 47, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 9, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 9, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 9, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 26, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 9, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "Zeed80/ai-docs#3", "issue_number": "3", "quality_tiers": {"assumption_check": 1, "weak_supervision": 3}, "repo_full_name": "Zeed80/ai-docs", "training_usage": "curriculum_gap", "source_motif_id": "graph-pattern-motif-thread-ad363645a54b1afb", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 8, "api_or_backend": 20, "ui_or_frontend": 8}}, "text": "Graph query export: Human feedback aligned with blueprint or architecture gaps\nQuery id: blueprint_gap_alignment\nQuery type: motif_query\nIntent: Curriculum-gap examples connecting issue threads to helicopter-view gaps.\nMotif: blueprint_gap_alignment\nTraining usage: curriculum_gap\nGraph gold label: supported_by_verification_signal\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#3\nEvidence:\nGraph motif: Human feedback aligns with blueprint or architecture gaps\nMotif id: blueprint_gap_alignment\nPolarity: mixed\nTraining usage: curriculum_gap\nSeverity: medium\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#3\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#3\nRepo: Zeed80/ai-docs\nIssue/PR number: 3\nGraph consistency label: supported_by_verification_signal\nNodes: 26\nEdges: 47\nNode types: {'pr_file': 9, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 9, 'comment_chain_touches_file': 9, 'issue_chain_touches_file': 9, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 5, 'bug_fix': 4, 'claimed_resolved_with_verification_signal': 3, 'test_or_ci': 2, 'ui_or_frontend': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'api_integration_gap': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'verification_or_tests': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'weak_supervision': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Use helicopter-view architecture/schema/design evidence beside issue threads.\n- Teach models to compare requested product class against implementation layers.\nAssumption checks:\n- Which blueprint layer is absent: frontend, API, data, auth, tests, or deployment?\n- Does human feedback confirm the same architectural gap?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "graph-query-motif_query-c970623ba2982a08", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/blueprint_gap_alignment/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "graph_queries/blueprint_gap_alignment", "training_usage": "curriculum_gap"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Zeed80/ai-docs"}, "properties": {"repobilityId": 374637, "scanner": "foundry_dataset", "fingerprint": "ce0c74e85e7e76baa2c638ad17185a542d342d457d9d69816951e9e21f96225f", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "Zeed80/ai-docs#5", "human_labels": ["api_or_backend", "deployment_env_gap", "docs_or_claims", "schema_or_data", "source_or_other", "test_or_ci", "ui_or_frontend"], "issue_number": "5", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.62, "repo_full_name": "Zeed80/ai-docs", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-a171b357f1dcfec7", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 6, "schemas": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 35, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 6, "api_or_backend": 17, "docs_or_claims": 1, "schema_or_data": 1, "ui_or_frontend": 1, "source_or_other": 9}, "linked_commit_count": 2, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#5\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Zeed80/ai-docs#5\nRepo: Zeed80/ai-docs\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 2\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 35\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 9, 'docs_or_claims': 1, 'api_or_backend': 17, 'schema_or_data': 1, 'test_or_ci': 6, 'ui_or_frontend': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-aaba38218a8872e0\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Zeed80/ai-docs/pull/5\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Zeed80/ai-docs\\nAuthor: Zeed80 (User)\\nURL: https://github.com/Zeed80/ai-docs/pull/5\\nTitle: \u0410\u0433\u0435\u043d\u0442: \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442/RAG/\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435 \u0441\u0430\u043c\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0449\u0438\u043a \u0438 \u0431\u044d\u043a\u0430\u043f\u044b\\nBody:\\n\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u0441\u0435\u0440\u0438\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0430\u0433\u0435\u043d\u0442\u0430 \u00ab\u0421\u0432\u0435\u0442\u0430\u00bb \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. 13 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u044b \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u0441\u0442\u044d\u043a\u0435.\\n\\n## 1. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u0430\\n- **\u0422\u043e\u043d\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 + \u0442\u043e\u043b\u0441\u0442\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435**: TurnVault (\u0431\u043e\u043b\u044c\u0448\u0438\u0435 tool-\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u2192 Redis, \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 envelope), eager prune \u0441\u0442\u0430\u0440\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432, cap memory/descriptions. ~60-70% \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 input-\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432.\\n- **\u041b\u0430\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c**: \u0443\u0441\u0442\u0440\u0430\u043d\u0451\u043d VRAM-\u0442\u0440\u0435\u0448\u0438\u043d\u0433 (\u043e\u0434\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c APEX \u043d\u0430 GPU \u0432\u043c\u0435\u0441\u0442\u043e 3 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u0445), \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 (`orchestrator_planning`\u2192APEX, keep_alive=-1), \u043f\u0440\u043e\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 workspace-\u0442\u0430\u0431\u043b\u0438\u0446 (\u043c\u0438\u043d\u0443\u044f LLM-\u043f\u043b\u0430\u043d \u0438 worker), skip model-\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f matched-route.\\n  - \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0447\u0435\u0442\u043e\u0432 116\u21920.9s, \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 54\u21920.9s, \u043f\u043e\u0438\u0441\u043a 27\u21920.9s, filtered count 10\u21921.2s.\\n\\n## 2. RAG-retrieval\\n- RRF (Reciprocal Rank Fusion) \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u0441\u043a\u043e\u0440\u043e\u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0448\u043a\u0430\u043b\\n- `ts_rank_cd` \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u043e\u0433\u043e term-overlap \u0434\u043b\u044f \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0432\u0435\u0442\u043a\u0438\\n- retrieval-gate: workspace/\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-eb127217e75aba13\",\n    \"filename\": \".gitignore\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 1,\n    \"deletions\": 0,\n    \"changes\": 1,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/888ab43072346f8720f0ee57fb0ba371529113e5/.gitignore\"\n  },\n  {\n    \"id\": \"github-pr-file-file-679a3a73233dc594\",\n    \"filename\": \"README.md\",\n    \"label\": \"docs_or_claims\",\n    \"status\": \"modified\",\n    \"additions\": 40,\n    \"deletions\": 0,\n    \"changes\": 40,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/888ab43072346f8720f0ee57f\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "comment-chain-pattern-assumption_checks-f743cd210993cf6f", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_assumption_check", "level": "warning", "message": {"text": "Foundry mined assumption checks: Zeed80/ai-docs"}, "properties": {"repobilityId": 374636, "scanner": "foundry_dataset", "fingerprint": "612e23b3fdce3676711a289a59e9729917cb10cd0809e1ddb6522c2a35842228", "category": "practices", "severity": "medium", "confidence": 0.62, "triageState": "open", "verdict": "needs_review", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "assumption_checks", "synthetic": false, "thread_key": "Zeed80/ai-docs#1", "human_labels": ["api_or_backend", "schema_or_data", "security_auth_secret", "source_or_other", "test_or_ci", "ui_or_frontend"], "issue_number": "1", "thread_label": "thread_has_human_issue_and_fix_context", "outcome_label": "claimed_resolved_unverified", "source_backed": true, "max_confidence": 0.607, "repo_full_name": "Zeed80/ai-docs", "training_usage": "weak_supervision", "confidence_tier": "weak_supervision", "source_chain_id": "evidence-chain-issue_chain-2d68009cf02ce6ec", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 6, "schemas": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 43, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 6, "api_or_backend": 27, "schema_or_data": 1, "ui_or_frontend": 6, "source_or_other": 3}, "linked_commit_count": 1, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_weak_supervision", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: assumption_checks\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#1\nOutcome: claimed_resolved_unverified\nThread label: thread_has_human_issue_and_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_weak_supervision, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Zeed80/ai-docs#1\nRepo: Zeed80/ai-docs\nThread label: thread_has_human_issue_and_fix_context\nOutcome: claimed_resolved_unverified\nComment count: 1\nLinked commit count: 1\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 43\nLabels: {'security_auth_secret': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'source_or_other': 3, 'api_or_backend': 27, 'schema_or_data': 1, 'test_or_ci': 6, 'ui_or_frontend': 6}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-b21d9ab5878b4db3\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"security_auth_secret\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Zeed80/ai-docs/pull/1\",\n    \"text\": \"GitHub feedback: security_auth_secret\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Zeed80/ai-docs\\nAuthor: Zeed80 (User)\\nURL: https://github.com/Zeed80/ai-docs/pull/1\\nTitle: \u0415\u0434\u0438\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438 \u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438: \u0440\u043e\u0443\u0442\u0438\u043d\u0433, UI, drawing-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, PWA-\u0444\u0438\u043a\u0441\\nBody:\\n## \u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e\\n\\n\u0415\u0434\u0438\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0438\u0441\u0442\u0438\u043d\u044b \u0434\u043b\u044f \u00ab\u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443\u00bb + \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 UI, \u0432\u043c\u0435\u0441\u0442\u043e \u0440\u0430\u0437\u0440\u043e\u0437\u043d\u0435\u043d\u043d\u044b\u0445 `ai_config` / YAML fallback-chains / \u0442\u0440\u0451\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a.\\n\\n### \u0411\u044d\u043a\u0435\u043d\u0434\\n- **`task_routing`** \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0442\u043e\u0440 (Redis+YAML): per-task `{models, profile, local_only, allow_cloud}`, confidential-lock (OCR/\u0447\u0435\u0440\u0442\u0435\u0436\u0438/\u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438/\u0440\u0435\u0440\u0430\u043d\u043a\u0438\u043d\u0433 \u0442\u043e\u043b\u044c\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, cloud-\u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u044e\u0442\u0441\u044f), \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0438\u0437 legacy `ai_config`.\\n- **AIRouter** \u2014 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0443\u0442\u044c: `run()` \u0431\u0435\u0440\u0451\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0438\u0437 `task_routing`; `_dispatch` \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 vision \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439; \u0437\u0430\u043f\u0438\u0441\u044c \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438.\\n- **model_resolver** \u2192 \u0442\u043e\u043d\u043a\u0438\u0439 \u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u043d\u0430\u0434 `task_routing`; **drawing-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d** (`drawing_extractor`, `assembly_extractor`, `drawing_analysis`) \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d \u043d\u0430 `AIRouter.run`, legacy `get_vlm_model`-\u0432\u0435\u0442\u043a\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b.\\n- **\u041a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 API** `/api/local-models/*`: `/routing` (GET/PUT/reset), `/{provider}/config|tokens|server/{action}|mod\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-08e3c93a39357de1\",\n    \"filename\": \"Makefile\",\n    \"label\": \"source_or_other\",\n    \"status\": \"modified\",\n    \"additions\": 155,\n    \"deletions\": 17,\n    \"changes\": 172,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/125fd67d4ff57786d932d6e530dd6b55e5cec572/Makefile\"\n  },\n  {\n    \"id\": \"github-pr-file-file-b2cec43e0a2eab26\",\n    \"filename\": \"backend/app/ai/agent_loop.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 23,\n    \"deletions\": 16,\n    \"changes\": 39,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/125fd67d4ff57786d932d6e\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "comment-chain-pattern-assumption_checks-41bd2e4a9944135d", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/assumption_checks/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "comment_chain_patterns/assumption_checks", "training_usage": "weak_supervision"}}}, {"ruleId": "foundry_test_ci_gap", "level": "error", "message": {"text": "Foundry mined test ci gap after feedback: Zeed80/ai-docs"}, "properties": {"repobilityId": 416778, "scanner": "foundry_dataset", "fingerprint": "c8fb51f95a21a0dca8341e25cddeba7298078917b4198e1bc01829a94b401e12", "category": "testing", "severity": "high", "confidence": 0.78, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "graph_query_record", "title": "Feedback exposes missing tests or CI", "intent": "Hard negatives for feedback/fix chains without adequate guardrails.", "labels": {"bug_fix": 3, "test_or_ci": 9, "test_ci_gap": 1, "api_or_backend": 19, "schema_or_data": 1, "ui_or_frontend": 7, "source_or_other": 3, "dependency_or_build": 2, "verification_or_tests": 2, "mostly follows blueprint": 1, "issue_or_pull_request_thread": 1, "blueprint_human_gap_disagreement": 1, "thread_has_human_issue_and_fix_context": 2, "claimed_resolved_with_verification_signal": 3, "human_reported_issue_then_verified_fix_attempt": 1}, "source": "graph_query_export", "motif_id": "test_ci_gap_after_feedback", "outcomes": {"claimed_resolved_with_verification_signal": 6}, "polarity": "bad", "query_id": "test_ci_gap_after_feedback", "severity": "high", "ci_labels": {}, "synthetic": false, "edge_count": 85, "edge_types": {"repo_has_thread": 1, "comment_has_chain": 1, "thread_has_comment": 1, "thread_touches_file": 41, "alignment_uses_comment": 1, "alignment_uses_finding": 1, "chain_has_link_quality": 4, "comment_aligns_finding": 1, "thread_has_fix_outcome": 1, "thread_has_issue_chain": 1, "issue_chain_touches_file": 12, "thread_has_comment_chain": 1, "comment_chain_links_commit": 5, "comment_chain_touches_file": 12, "issue_chain_has_fix_outcome": 1, "issue_chain_has_comment_chain": 1}, "node_count": 58, "node_types": {"repo": 1, "commit": 5, "thread": 1, "comment": 1, "pr_file": 41, "alignment": 1, "fix_outcome": 1, "issue_chain": 1, "link_quality": 4, "comment_chain": 1, "blueprint_finding": 1}, "query_type": "motif_query", "thread_key": "Zeed80/ai-docs#4", "issue_number": "4", "quality_tiers": {"high_confidence": 3, "assumption_check": 1}, "repo_full_name": "Zeed80/ai-docs", "training_usage": "hard_negative", "source_motif_id": "graph-pattern-motif-thread-178144cca0906778", "graph_gold_label": "supported_by_verification_signal", "changed_file_labels": {"test_or_ci": 36, "api_or_backend": 76, "schema_or_data": 4, "ui_or_frontend": 28, "source_or_other": 12, "dependency_or_build": 8}}, "text": "Graph query export: Feedback exposes missing tests or CI\nQuery id: test_ci_gap_after_feedback\nQuery type: motif_query\nIntent: Hard negatives for feedback/fix chains without adequate guardrails.\nMotif: test_ci_gap_after_feedback\nTraining usage: hard_negative\nGraph gold label: supported_by_verification_signal\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nEvidence:\nGraph motif: Feedback or fix context exposes missing test/CI guardrails\nMotif id: test_ci_gap_after_feedback\nPolarity: bad\nTraining usage: hard_negative\nSeverity: high\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#4\nGraph gold label: supported_by_verification_signal\nThread graph evidence:\nGitHub issue/PR evidence subgraph\nThread: Zeed80/ai-docs#4\nRepo: Zeed80/ai-docs\nIssue/PR number: 4\nGraph consistency label: supported_by_verification_signal\nNodes: 58\nEdges: 85\nNode types: {'pr_file': 41, 'commit': 5, 'link_quality': 4, 'thread': 1, 'repo': 1, 'comment': 1, 'comment_chain': 1, 'issue_chain': 1, 'fix_outcome': 1, 'alignment': 1, 'blueprint_finding': 1}\nEdge types: {'thread_touches_file': 41, 'comment_chain_touches_file': 12, 'issue_chain_touches_file': 12, 'comment_chain_links_commit': 5, 'chain_has_link_quality': 4, 'repo_has_thread': 1, 'thread_has_comment': 1, 'thread_has_comment_chain': 1, 'comment_has_chain': 1, 'thread_has_issue_chain': 1, 'issue_chain_has_comment_chain': 1, 'thread_has_fix_outcome': 1, 'issue_chain_has_fix_outcome': 1, 'alignment_uses_comment': 1, 'alignment_uses_finding': 1, 'comment_aligns_finding': 1}\nLabels: {'api_or_backend': 19, 'test_or_ci': 9, 'ui_or_frontend': 7, 'source_or_other': 3, 'bug_fix': 3, 'claimed_resolved_with_verification_signal': 3, 'dependency_or_build': 2, 'verification_or_tests': 2, 'thread_has_human_issue_and_fix_context': 2, 'issue_or_pull_request_thread': 1, 'test_ci_gap': 1, 'schema_or_data': 1, 'human_reported_issue_then_verified_fix_attempt': 1, 'blueprint_human_gap_disagreement': 1, 'mostly follows blueprint': 1}\nOutcomes: {'claimed_resolved_with_verification_signal': 6}\nQuality tiers: {'high_confidence': 3, 'assumption_check': 1}\nCI labels: {}\nCurriculum targets:\n- Turn human feedback into regression tests and CI gates.\n- Penalize fixes that do not add or exercise verification for affected workflows.\nAssumption checks:\n- Did the fix add tests for the exact complaint?\n- Does CI run those tests, or is verification only implied?", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "graph-query-motif_query-b7877ba36bc1bee6", "synthetic": false, "gold_label": "", "graph_label": "", "source_path": "/data/distillate/foundry_data/graph_queries/test_ci_gap_after_feedback/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "graph_queries/test_ci_gap_after_feedback", "training_usage": "hard_negative"}}}, {"ruleId": "foundry_bad_chain", "level": "error", "message": {"text": "Foundry mined bad chains: Zeed80/ai-docs"}, "properties": {"repobilityId": 386577, "scanner": "foundry_dataset", "fingerprint": "695752e91c91a8055122b575c4f90165c13e555b966be591ab482579d7afe1de", "category": "practices", "severity": "high", "confidence": 0.84, "triageState": "open", "verdict": "confirmed", "isResolved": false, "reason": "Imported from mined Foundry/Fable5 evidence with real GitHub/source provenance. Review source_id before acting.", "evidence": {"meta": {"kind": "comment_chain_pattern_product", "source": "comment_chain_pattern_miner", "product": "bad_chains", "synthetic": false, "thread_key": "Zeed80/ai-docs#2", "human_labels": ["api_or_backend", "deployment_env_gap", "test_or_ci"], "issue_number": "2", "thread_label": "thread_has_human_issue_without_fix_context", "outcome_label": "not_resolved_or_not_observed", "source_backed": true, "max_confidence": 0.0, "repo_full_name": "Zeed80/ai-docs", "training_usage": "negative_or_unresolved", "confidence_tier": "unresolved", "source_chain_id": "evidence-chain-issue_chain-13ee2e51e6bfefd4", "helicopter_views": {"graphs": 2, "schemas": 2}, "artifact_families": {"docs": 6, "schemas": 1, "generated_claims": 1}, "source_chain_kind": "issue_chain", "changed_file_count": 9, "source_graph_label": "source_backed_multi_signal_graph", "changed_file_labels": {"test_or_ci": 1, "api_or_backend": 8}, "linked_commit_count": 0, "helicopter_view_count": 4, "source_artifact_count": 8, "classification_reasons": ["source_graph_has_real_artifacts", "source_graph_has_verification_artifacts", "repo_has_isolated_helicopter_views", "link_quality_unresolved", "high_risk_human_feedback_label"], "linked_ci_commit_count": 0, "verification_artifact_count": 1, "design_schema_api_artifact_count": 1}, "text": "Comment chain pattern product: bad_chains\nRepo: Zeed80/ai-docs\nThread: Zeed80/ai-docs#2\nOutcome: not_resolved_or_not_observed\nThread label: thread_has_human_issue_without_fix_context\nSource graph label: source_backed_multi_signal_graph\nReasons: source_graph_has_real_artifacts, source_graph_has_verification_artifacts, repo_has_isolated_helicopter_views, link_quality_unresolved, high_risk_human_feedback_label\nChain evidence:\nIssue/PR evidence chain: Zeed80/ai-docs#2\nRepo: Zeed80/ai-docs\nThread label: thread_has_human_issue_without_fix_context\nOutcome: not_resolved_or_not_observed\nComment count: 1\nLinked commit count: 0\nLinked CI commit count: 0\nLinked CI labels: {}\nChanged file count: 9\nLabels: {'deployment_env_gap': 1}\nPolarities: {'bad': 1}\nChanged file labels: {'api_or_backend': 8, 'test_or_ci': 1}\nExamples:\n[\n  {\n    \"id\": \"github-feedback-comment-89d0db7ba063e0e1\",\n    \"kind\": \"pull_request_body\",\n    \"label\": \"deployment_env_gap\",\n    \"polarity\": \"bad\",\n    \"url\": \"https://github.com/Zeed80/ai-docs/pull/2\",\n    \"text\": \"GitHub feedback: deployment_env_gap\\nPolarity: bad\\nKind: pull_request_body\\nRepo: Zeed80/ai-docs\\nAuthor: Zeed80 (User)\\nURL: https://github.com/Zeed80/ai-docs/pull/2\\nTitle: On-demand \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 + \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440; \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f dispatch-\u0432\u044b\u0437\u043e\u0432\u043e\u0432\\nBody:\\n## VRAM-\u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0446\u0438\u044f (\u0433\u043b\u0430\u0432\u043d\u043e\u0435)\\n\u041c\u043e\u0434\u0435\u043b\u0438 \u0433\u0440\u0443\u0437\u044f\u0442\u0441\u044f \u043f\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044e, VRAM \u043d\u0435 \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f; **\u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0442\u043d\u0430** \u0434\u043b\u044f \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u0430 \u0430\u0433\u0435\u043d\u0442\u0430.\\n\\n- \u041d\u043e\u0432\u044b\u0439 `app/ai/model_lifecycle.py`:\\n  - \u041e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 (primary \u0440\u043e\u0443\u0442\u0430 `ORCHESTRATOR_PLANNING`) **\u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d**: Ollama-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 `keep_alive=-1`, \u043f\u0440\u043e\u0433\u0440\u0435\u0432 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435.\\n  - \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 Ollama-\u043c\u043e\u0434\u0435\u043b\u0438 **\u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b** (\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 `keep_alive`, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 60s, env `OLLAMA_EPHEMERAL_KEEP_ALIVE`) \u2014 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442 VRAM \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0435.\\n  - `gpu_manager.unload_all_ollama_models` \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e **\u0449\u0430\u0434\u0438\u0442 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0435** (`exclude_pinned`); `ensure_vram_for` \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0435.\\n  - \u041d\u0430\u0431\u043e\u0440 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0451\u043d\u043d\u044b\u0445 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0438\u0437 `task_routing` (\u043a\u044d\u0448, \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u0440\u043e\u0443\u0442\u0438\u043d\u0433\u0430).\\n\\n## \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f dispatch-\u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043d\u0430 AIRouter.run\\n\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 AI-\u0432\u044b\u0437\u043e\u0432\u044b \u0432 \u043e\u0431\u0445\u043e\u0434 `run()` \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u044b \u043d\u0430 \u0435\u0434\u0438\u043d\u044b\u0439 \u043f\u0443\u0442\u044c (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 + \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u044f): proactive-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f, \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 (extraction), \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0446\u0438\u044f \u0430\u0443\u0434\u0438\u043e \u0432 Telegram.\\n\\n\"\n  }\n]\nChanged files:\n[\n  {\n    \"id\": \"github-pr-file-file-ee2c1ef6dce1428f\",\n    \"filename\": \"backend/app/ai/gpu_manager.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"modified\",\n    \"additions\": 24,\n    \"deletions\": 3,\n    \"changes\": 27,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/4e23a9f3622c3d154842f0353b5089c57c1dd8ed/backend%2Fapp%2Fai%2Fgpu_manager.py\"\n  },\n  {\n    \"id\": \"github-pr-file-file-0b7448716874e70b\",\n    \"filename\": \"backend/app/ai/model_lifecycle.py\",\n    \"label\": \"api_or_backend\",\n    \"status\": \"added\",\n    \"additions\": 112,\n    \"deletions\": 0,\n    \"changes\": 112,\n    \"blob_url\": \"https://github.com/Zeed80/ai-docs/blob/4e23a9f3622c3d154842f0353b5089c57c1dd8ed/back\n[truncated by importer]", "source": "foundry_mined_dataset", "repo_url": "https://github.com/Zeed80/ai-docs", "source_id": "comment-chain-pattern-bad_chains-1ddb798e6cd8058a", "synthetic": false, "gold_label": "", "graph_label": "source_backed_multi_signal_graph", "source_path": "/data/distillate/foundry_data/comment_chain_patterns/bad_chains/shard-0.jsonl", "bundle_label": "", "priority_band": "", "priority_score": 0, "repo_full_name": "Zeed80/ai-docs", "source_dataset": "comment_chain_patterns/bad_chains", "training_usage": "negative_or_unresolved"}}}, {"ruleId": "scanner-5cf123f4e36b1979", "level": "note", "message": {"text": "Possibly dead Python function: restore_saved_limits"}, "properties": {"repobilityId": "2a8ed153885f63d0", "scanner": "scanner-primary", "fingerprint": "5cf123f4e36b1979", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/gpu-temp-helper/server.py:578"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3dcd8de71a17a9b", "level": "note", "message": {"text": "Possibly dead Python function: do_GET"}, "properties": {"repobilityId": "2d943bb45e4f13bd", "scanner": "scanner-primary", "fingerprint": "c3dcd8de71a17a9b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/gpu-temp-helper/server.py:643"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10bfb571a035382d", "level": "note", "message": {"text": "Possibly dead Python function: do_POST"}, "properties": {"repobilityId": "53357410ca9379a9", "scanner": "scanner-primary", "fingerprint": "10bfb571a035382d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/gpu-temp-helper/server.py:654"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-275f70190b0923ed", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "275f70190b0923ed", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/gpu-temp-helper/server.py:707"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27556460d7633e41", "level": "note", "message": {"text": "Possibly dead Python function: make_shaft_detail_png"}, "properties": {"repobilityId": "e2623e2337bad0ed", "scanner": "scanner-primary", "fingerprint": "27556460d7633e41", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:84"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4eb259de33fa6264", "level": "note", "message": {"text": "Possibly dead Python function: make_flange_detail_png"}, "properties": {"repobilityId": "6070f47260cfb4b5", "scanner": "scanner-primary", "fingerprint": "4eb259de33fa6264", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:172"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8b4a1bcb27b1986a", "level": "note", "message": {"text": "Possibly dead Python function: make_assembly_drawing_png"}, "properties": {"repobilityId": "b9f9c1797aa4712e", "scanner": "scanner-primary", "fingerprint": "8b4a1bcb27b1986a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:239"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-17865f828210364a", "level": "note", "message": {"text": "Possibly dead Python function: make_section_view_png"}, "properties": {"repobilityId": "251f18a3df65189a", "scanner": "scanner-primary", "fingerprint": "17865f828210364a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:319"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f8f99b10dbae299f", "level": "note", "message": {"text": "Possibly dead Python function: make_weld_drawing_png"}, "properties": {"repobilityId": "95b94c536fc1646a", "scanner": "scanner-primary", "fingerprint": "f8f99b10dbae299f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:389"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4267b6ef1873817a", "level": "note", "message": {"text": "Possibly dead Python function: make_gear_detail_dxf"}, "properties": {"repobilityId": "9b2d21543b9deba9", "scanner": "scanner-primary", "fingerprint": "4267b6ef1873817a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:457"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c1eb7977a3db208b", "level": "note", "message": {"text": "Possibly dead Python function: make_threaded_shaft_dxf"}, "properties": {"repobilityId": "b5f7379193df0b8e", "scanner": "scanner-primary", "fingerprint": "c1eb7977a3db208b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/scripts/download_public_drawings.py:488"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1bf50a086dab21fc", "level": "note", "message": {"text": "Possibly dead Python function: model_post_init"}, "properties": {"repobilityId": "92fde611a57364a6", "scanner": "scanner-primary", "fingerprint": "1bf50a086dab21fc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/config.py:143"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-96905b9864e9d563", "level": "note", "message": {"text": "Possibly dead Python function: create_signed_file_token"}, "properties": {"repobilityId": "26fe0ffd0a4c1b6c", "scanner": "scanner-primary", "fingerprint": "96905b9864e9d563", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/security.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-69467453dd0fe24e", "level": "note", "message": {"text": "Possibly dead Python function: verify_signed_file_token"}, "properties": {"repobilityId": "8c854a23b670cc68", "scanner": "scanner-primary", "fingerprint": "69467453dd0fe24e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/security.py:36"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d64b9eaa4ce0b5bd", "level": "note", "message": {"text": "Possibly dead Python function: send_fn"}, "properties": {"repobilityId": "f8ea5aaa564c9e00", "scanner": "scanner-primary", "fingerprint": "d64b9eaa4ce0b5bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/integrations/telegram_bot.py:106"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-120841ff59f6da0d", "level": "note", "message": {"text": "Possibly dead Python function: notify_document_processed"}, "properties": {"repobilityId": "e2f7f57d409f2aac", "scanner": "scanner-primary", "fingerprint": "120841ff59f6da0d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/integrations/telegram_notifier.py:51"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1aa95603395b89fb", "level": "note", "message": {"text": "Possibly dead Python function: notify_anomaly"}, "properties": {"repobilityId": "813ad075bbfa755a", "scanner": "scanner-primary", "fingerprint": "1aa95603395b89fb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/integrations/telegram_notifier.py:66"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-887e7e5fdf68c973", "level": "note", "message": {"text": "Possibly dead Python function: notify_approval_required"}, "properties": {"repobilityId": "7340d441bc844b47", "scanner": "scanner-primary", "fingerprint": "887e7e5fdf68c973", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/integrations/telegram_notifier.py:79"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2dcd931338243491", "level": "note", "message": {"text": "Possibly dead Python function: record_turn_feedback"}, "properties": {"repobilityId": "a8c3afc0675696ab", "scanner": "scanner-primary", "fingerprint": "2dcd931338243491", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/orchestrator_memory.py:75"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67a72d00a335c909", "level": "note", "message": {"text": "Possibly dead Python function: chat_with_images"}, "properties": {"repobilityId": "db20875a08565501", "scanner": "scanner-primary", "fingerprint": "67a72d00a335c909", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/ollama_client.py:788"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2f6867ef555f16c1", "level": "note", "message": {"text": "Possibly dead Python function: update_model"}, "properties": {"repobilityId": "1a704ca8ad3dedf7", "scanner": "scanner-primary", "fingerprint": "2f6867ef555f16c1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/context_compressor.py:137"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54b327950ab3aa67", "level": "note", "message": {"text": "Possibly dead Python function: extract_step_geometry"}, "properties": {"repobilityId": "21405e9234233d3b", "scanner": "scanner-primary", "fingerprint": "54b327950ab3aa67", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/step_extractor.py:49"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5942718f71439e6c", "level": "note", "message": {"text": "Possibly dead Python function: select_models"}, "properties": {"repobilityId": "e5eaa8da1ad7d059", "scanner": "scanner-primary", "fingerprint": "5942718f71439e6c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/model_tier.py:213"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fd9577785eee9ec", "level": "note", "message": {"text": "Possibly dead Python function: update_tier_models"}, "properties": {"repobilityId": "4bb7751648c7b976", "scanner": "scanner-primary", "fingerprint": "7fd9577785eee9ec", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/model_tier.py:246"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53d7b4ae8c64e58a", "level": "note", "message": {"text": "Possibly dead Python function: replacer"}, "properties": {"repobilityId": "4c6d041d83cc4187", "scanner": "scanner-primary", "fingerprint": "53d7b4ae8c64e58a", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/gateway_config.py:31"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a5dc9f817c2e846d", "level": "note", "message": {"text": "Possibly dead Python function: role_default_canvases"}, "properties": {"repobilityId": "db50a3ae7771cebd", "scanner": "scanner-primary", "fingerprint": "a5dc9f817c2e846d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/gateway_config.py:162"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-87d03c1a1a1d90e0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/CommandPalette.tsx:222"}, "properties": {"repobilityId": "21242966335c73c7", "scanner": "scanner-primary", "fingerprint": "87d03c1a1a1d90e0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-81959bbe40ba901d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/drawings/DrawingViewer.tsx:253"}, "properties": {"repobilityId": "d3be420dc2b7095c", "scanner": "scanner-primary", "fingerprint": "81959bbe40ba901d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1ea97c0ed5b7d8b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureEditor.tsx:561"}, "properties": {"repobilityId": "aa94bd14fbd0fad8", "scanner": "scanner-primary", "fingerprint": "1ea97c0ed5b7d8b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f7f0c126d9669066", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/ToolBindingPanel.tsx:150"}, "properties": {"repobilityId": "e5dd271ec6940212", "scanner": "scanner-primary", "fingerprint": "f7f0c126d9669066", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6506affcf6f02774", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/FeatureTree.tsx:153"}, "properties": {"repobilityId": "752325daea2f26da", "scanner": "scanner-primary", "fingerprint": "6506affcf6f02774", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fc45ec256f78ace8", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/components/drawings/DrawingWorkspace.tsx:1111"}, "properties": {"repobilityId": "18b179b711a2fa2f", "scanner": "scanner-primary", "fingerprint": "fc45ec256f78ace8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-745e68da07dde259", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/drawings/DrawingWorkspace.tsx:269"}, "properties": {"repobilityId": "be9f68dd13ca346e", "scanner": "scanner-primary", "fingerprint": "745e68da07dde259", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-90e224668999259d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/email-templates.tsx:248"}, "properties": {"repobilityId": "ef800845ae1ae762", "scanner": "scanner-primary", "fingerprint": "90e224668999259d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1349640ad836faf9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/email/email-templates.tsx:496"}, "properties": {"repobilityId": "eff7069aab055c18", "scanner": "scanner-primary", "fingerprint": "1349640ad836faf9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8511d4c3f9a89b6d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/email/mailbox-settings.tsx:239"}, "properties": {"repobilityId": "da7da70c4a85d78e", "scanner": "scanner-primary", "fingerprint": "8511d4c3f9a89b6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-767f26c71973d848", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/components/review/comment-thread.tsx:148"}, "properties": {"repobilityId": "8308a13d938356da", "scanner": "scanner-primary", "fingerprint": "767f26c71973d848", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-26e7f783a8277983", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/sidebar.tsx:701"}, "properties": {"repobilityId": "01c5e7bb9884dfe3", "scanner": "scanner-primary", "fingerprint": "26e7f783a8277983", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc4d11347bc24a3d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/catalogs/CatalogBrowser.tsx:191"}, "properties": {"repobilityId": "c6bf05c37c5a71d4", "scanner": "scanner-primary", "fingerprint": "cc4d11347bc24a3d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dad2a14dfcd8c9bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/workspace/agent-workspace-blocks.tsx:39"}, "properties": {"repobilityId": "466dcab1d7da30f6", "scanner": "scanner-primary", "fingerprint": "dad2a14dfcd8c9bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-36450ba2609f69f7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/chat-widget.tsx:419"}, "properties": {"repobilityId": "91cd7de9b94f3920", "scanner": "scanner-primary", "fingerprint": "36450ba2609f69f7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b7bba7672fa805a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/chat/sveta-panel.tsx:1083"}, "properties": {"repobilityId": "26e803f01e4b919e", "scanner": "scanner-primary", "fingerprint": "7b7bba7672fa805a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-62fe0fc7b7ed54d3", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/components/documents/share-to-chat-modal.tsx:93"}, "properties": {"repobilityId": "16c7103ec2e89a64", "scanner": "scanner-primary", "fingerprint": "62fe0fc7b7ed54d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-aadff81483e6bcf3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-documents.tsx:38"}, "properties": {"repobilityId": "87c813f1f94be3cc", "scanner": "scanner-primary", "fingerprint": "aadff81483e6bcf3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-80e25b65ede15366", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/canvas/canvas-chart.tsx:190"}, "properties": {"repobilityId": "b62a4532557d90fe", "scanner": "scanner-primary", "fingerprint": "80e25b65ede15366", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1d6314759e11d73", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/components/canvas/canvas-markdown.tsx:44"}, "properties": {"repobilityId": "1b18744779e53d51", "scanner": "scanner-primary", "fingerprint": "b1d6314759e11d73", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5f73460a3456cf6a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/page.tsx:1450"}, "properties": {"repobilityId": "c6260e7369967e2c", "scanner": "scanner-primary", "fingerprint": "5f73460a3456cf6a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec072ff468236cc9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/models/page.tsx:703"}, "properties": {"repobilityId": "f3f13c2de8918c6b", "scanner": "scanner-primary", "fingerprint": "ec072ff468236cc9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6846c09b30014128", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/normalization/page.tsx:312"}, "properties": {"repobilityId": "40b67f3362ade9dd", "scanner": "scanner-primary", "fingerprint": "6846c09b30014128", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef381cc74deeafd0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/ntd/page.tsx:340"}, "properties": {"repobilityId": "b1660e1fec4c8aa3", "scanner": "scanner-primary", "fingerprint": "ef381cc74deeafd0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd953aff6a1fc6f7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/skills/page.tsx:291"}, "properties": {"repobilityId": "61d1d4a8e6b9271f", "scanner": "scanner-primary", "fingerprint": "bd953aff6a1fc6f7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b83c67d733b4f23a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/settings/norm-cards/page.tsx:261"}, "properties": {"repobilityId": "b7da3ae247017c99", "scanner": "scanner-primary", "fingerprint": "b83c67d733b4f23a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5261b86ed8a2170f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/page.tsx:104"}, "properties": {"repobilityId": "0ae00530663a24eb", "scanner": "scanner-primary", "fingerprint": "5261b86ed8a2170f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f80df0c328feb5ef", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/cases/[caseId]/page.tsx:269"}, "properties": {"repobilityId": "43168c2e9e4507aa", "scanner": "scanner-primary", "fingerprint": "f80df0c328feb5ef", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2c3ed8ed5d73c133", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/page.tsx:355"}, "properties": {"repobilityId": "5959683e130c99ab", "scanner": "scanner-primary", "fingerprint": "2c3ed8ed5d73c133", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-79439566aa732057", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/procurement/compare/[id]/page.tsx:232"}, "properties": {"repobilityId": "88dc983f875720e6", "scanner": "scanner-primary", "fingerprint": "79439566aa732057", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ca2fbd332b7418e3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/drawings/page.tsx:461"}, "properties": {"repobilityId": "a42d9789568d416c", "scanner": "scanner-primary", "fingerprint": "ca2fbd332b7418e3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a0c295008fb6ef3c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/page.tsx:327"}, "properties": {"repobilityId": "7f686854dc33b43a", "scanner": "scanner-primary", "fingerprint": "a0c295008fb6ef3c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fb6ee781ae63c706", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/email/[id]/page.tsx:181"}, "properties": {"repobilityId": "040b20ebd2e90df8", "scanner": "scanner-primary", "fingerprint": "fb6ee781ae63c706", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-37bd8ea57e6edb41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/catalogs/page.tsx:177"}, "properties": {"repobilityId": "5ebf7a79a4777e3d", "scanner": "scanner-primary", "fingerprint": "37bd8ea57e6edb41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1cbc4ac6c5f84a2b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/page.tsx:199"}, "properties": {"repobilityId": "938969428721fe4b", "scanner": "scanner-primary", "fingerprint": "1cbc4ac6c5f84a2b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f8029a39b6920aa3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/chat/[id]/page.tsx:87"}, "properties": {"repobilityId": "8275e25f1b76878b", "scanner": "scanner-primary", "fingerprint": "f8029a39b6920aa3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a76857de3522c09", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/search/page.tsx:250"}, "properties": {"repobilityId": "df66eea6072a780b", "scanner": "scanner-primary", "fingerprint": "8a76857de3522c09", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bc46c8d6c8acd48c", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/app/admin/users/page.tsx:84"}, "properties": {"repobilityId": "dea204695c785136", "scanner": "scanner-primary", "fingerprint": "bc46c8d6c8acd48c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f69dd601ff7d5b44", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/admin/audit/page.tsx:345"}, "properties": {"repobilityId": "9ad0f39f11d162c5", "scanner": "scanner-primary", "fingerprint": "f69dd601ff7d5b44", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eddf996ba3e8aa00", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/page.tsx:221"}, "properties": {"repobilityId": "f0c814b70149991d", "scanner": "scanner-primary", "fingerprint": "eddf996ba3e8aa00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-456a76a2e21f3ca6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/collections/[id]/page.tsx:364"}, "properties": {"repobilityId": "bfb410528311f418", "scanner": "scanner-primary", "fingerprint": "456a76a2e21f3ca6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5383a3f1dfa6ebb8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/page.tsx:193"}, "properties": {"repobilityId": "9496c244780dafc2", "scanner": "scanner-primary", "fingerprint": "5383a3f1dfa6ebb8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1450c1dcaebd2f33", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/page.tsx:559"}, "properties": {"repobilityId": "4e8d31febbcf4dce", "scanner": "scanner-primary", "fingerprint": "1450c1dcaebd2f33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f73a9d7a7926317", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/technology/[id]/review/page.tsx:251"}, "properties": {"repobilityId": "c595b1a0364df4f4", "scanner": "scanner-primary", "fingerprint": "1f73a9d7a7926317", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1f2bf27be2897050", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/suppliers/[id]/page.tsx:657"}, "properties": {"repobilityId": "3917899cd41cc94e", "scanner": "scanner-primary", "fingerprint": "1f2bf27be2897050", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f22c1f2d91b09ed8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/warehouse/page.tsx:1044"}, "properties": {"repobilityId": "8dfd8670dd6e5971", "scanner": "scanner-primary", "fingerprint": "f22c1f2d91b09ed8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9eb38034ec56732d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/approvals/page.tsx:424"}, "properties": {"repobilityId": "241aced9e1d77df5", "scanner": "scanner-primary", "fingerprint": "9eb38034ec56732d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0128e707d5ccf2be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/anomalies/[id]/page.tsx:252"}, "properties": {"repobilityId": "1dd8a2939b15fe51", "scanner": "scanner-primary", "fingerprint": "0128e707d5ccf2be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-42cf99690c25ccb6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/quarantine/page.tsx:186"}, "properties": {"repobilityId": "472851759aaf8b71", "scanner": "scanner-primary", "fingerprint": "42cf99690c25ccb6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f1849cc8406cd5c3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/page.tsx:1343"}, "properties": {"repobilityId": "48274e8487f9f666", "scanner": "scanner-primary", "fingerprint": "f1849cc8406cd5c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ae6b1e96321fb1b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/page.tsx:279"}, "properties": {"repobilityId": "56086a47f103bc83", "scanner": "scanner-primary", "fingerprint": "4ae6b1e96321fb1b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-147bdea39db8e29a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/documents/[id]/review/page.tsx:541"}, "properties": {"repobilityId": "39a1466455b874f3", "scanner": "scanner-primary", "fingerprint": "147bdea39db8e29a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-33bf4789270ebbb4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/boms/page.tsx:272"}, "properties": {"repobilityId": "1b66c858e47fadce", "scanner": "scanner-primary", "fingerprint": "33bf4789270ebbb4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-382edb426a637c4f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/page.tsx:183"}, "properties": {"repobilityId": "4f4fe7bf60403115", "scanner": "scanner-primary", "fingerprint": "382edb426a637c4f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3ed8805021138a09", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/compare/[id]/page.tsx:325"}, "properties": {"repobilityId": "117b39355db06547", "scanner": "scanner-primary", "fingerprint": "3ed8805021138a09", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d13b7601afc5b41", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/inbox/page.tsx:168"}, "properties": {"repobilityId": "a43bfec12e2fb7c4", "scanner": "scanner-primary", "fingerprint": "6d13b7601afc5b41", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-01b28f686a025342", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/calendar/page.tsx:397"}, "properties": {"repobilityId": "a530f8075f78cd76", "scanner": "scanner-primary", "fingerprint": "01b28f686a025342", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-41994365eb42b9de", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 frontend/app/invoices/page.tsx:695"}, "properties": {"repobilityId": "b6220892372938a5", "scanner": "scanner-primary", "fingerprint": "41994365eb42b9de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-4bc0a22c84cf975a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/invoices/page.tsx:943"}, "properties": {"repobilityId": "80d579113c373975", "scanner": "scanner-primary", "fingerprint": "4bc0a22c84cf975a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0693fdca4ec55dd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check_agent_ws_adapter.js:113"}, "properties": {"repobilityId": "3561d43de045976a", "scanner": "scanner-primary", "fingerprint": "0693fdca4ec55dd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4354010fe822b087", "level": "warning", "message": {"text": "Privileged port 135 in use"}, "properties": {"repobilityId": "034402d382d67b92", "scanner": "scanner-primary", "fingerprint": "4354010fe822b087", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/ai/config/model_registry.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a7f39cdd5fa21931", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "6086a1867bf8e871", "scanner": "scanner-primary", "fingerprint": "a7f39cdd5fa21931", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a537b985767d1b1", "level": "warning", "message": {"text": "Dockerfile runs as root: infra/gpu-temp-helper/Dockerfile"}, "properties": {"repobilityId": "a37898413870123e", "scanner": "scanner-primary", "fingerprint": "0a537b985767d1b1", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-571dffe6b21f2bb1", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "4be3ce7a7bb280f0", "scanner": "scanner-primary", "fingerprint": "571dffe6b21f2bb1", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/gpu-temp-helper/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-607600f947ec6c08", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.13-slim"}, "properties": {"repobilityId": "11e7dcf598765f0d", "scanner": "scanner-primary", "fingerprint": "607600f947ec6c08", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/skill-runner/Dockerfile"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-1f66ad88286ca30a", "level": "warning", "message": {"text": "Dockerfile runs as root: backend/Dockerfile"}, "properties": {"repobilityId": "7afd2b0e8a8c9eeb", "scanner": "scanner-primary", "fingerprint": "1f66ad88286ca30a", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-8cd20d539467d2c5", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "05bb60cd35ebcf73", "scanner": "scanner-primary", "fingerprint": "8cd20d539467d2c5", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-8cd20d539467d2c5", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "7e36041fdb1bd5cc", "scanner": "scanner-primary", "fingerprint": "8cd20d539467d2c5", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/Dockerfile"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-554d27e37bd569e5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/drawings/DrawingViewer.tsx:253"}, "properties": {"repobilityId": "d6c15ba2d6252f27", "scanner": "scanner-primary", "fingerprint": "554d27e37bd569e5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/drawings/DrawingViewer.tsx"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-cf0a6d4f62e35170", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in frontend/components/review/pdf-viewer.tsx:71"}, "properties": {"repobilityId": "afb2dfbdf35bff2c", "scanner": "scanner-primary", "fingerprint": "cf0a6d4f62e35170", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/review/pdf-viewer.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-9d0a6d2f16860f74", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in frontend/components/chat/sveta-panel.tsx:221"}, "properties": {"repobilityId": "d8a494ebdf9e1510", "scanner": "scanner-primary", "fingerprint": "9d0a6d2f16860f74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/chat/sveta-panel.tsx"}, "region": {"startLine": 221}}}]}, {"ruleId": "scanner-d429a83b8a543e34", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/components/canvas/canvas-markdown.tsx:44"}, "properties": {"repobilityId": "0536c388f29d953b", "scanner": "scanner-primary", "fingerprint": "d429a83b8a543e34", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/components/canvas/canvas-markdown.tsx"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1b973fc5722bf04", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "86f821b931a15b71", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "86f821b931a15b71", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-c02a75843624a068", "level": "note", "message": {"text": "Very large file: frontend/components/chat/sveta-panel.tsx (1586 lines)"}, "properties": {"repobilityId": "1f72c5a0230bab84", "scanner": "scanner-primary", "fingerprint": "c02a75843624a068", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b981934a4f108575", "level": "note", "message": {"text": "Very large file: frontend/app/settings/page.tsx (3009 lines)"}, "properties": {"repobilityId": "2a4b75052a457057", "scanner": "scanner-primary", "fingerprint": "b981934a4f108575", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0e4906eb10bda9de", "level": "note", "message": {"text": "Very large file: frontend/app/settings/models/page.tsx (2819 lines)"}, "properties": {"repobilityId": "38dea383f75fdbb8", "scanner": "scanner-primary", "fingerprint": "0e4906eb10bda9de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-76976ea4073841f3", "level": "note", "message": {"text": "Very large file: frontend/app/warehouse/page.tsx (1648 lines)"}, "properties": {"repobilityId": "b7390ffaffd06fd9", "scanner": "scanner-primary", "fingerprint": "76976ea4073841f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ee02d764ad14b17", "level": "note", "message": {"text": "Very large file: frontend/app/documents/page.tsx (2360 lines)"}, "properties": {"repobilityId": "17e8bf31032bb90f", "scanner": "scanner-primary", "fingerprint": "8ee02d764ad14b17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2da98f9a04ffd81b", "level": "note", "message": {"text": "Very large file: backend/tests/test_real_invoice_pipeline.py (1223 lines)"}, "properties": {"repobilityId": "efa332daf717f904", "scanner": "scanner-primary", "fingerprint": "2da98f9a04ffd81b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbabcf3bcbaa9911", "level": "note", "message": {"text": "Very large file: backend/app/ai/orchestrator.py (2393 lines)"}, "properties": {"repobilityId": "44edcba8d22546a1", "scanner": "scanner-primary", "fingerprint": "bbabcf3bcbaa9911", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5cedabfbd2cc469b", "level": "note", "message": {"text": "Very large file: backend/app/ai/agent_loop.py (2503 lines)"}, "properties": {"repobilityId": "a45711992cf7acd7", "scanner": "scanner-primary", "fingerprint": "5cedabfbd2cc469b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-997cbb782e657fed", "level": "note", "message": {"text": "Very large file: backend/app/api/technology.py (1803 lines)"}, "properties": {"repobilityId": "01fe6e5608117e6f", "scanner": "scanner-primary", "fingerprint": "997cbb782e657fed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c933943976b52741", "level": "note", "message": {"text": "Very large file: backend/app/api/documents.py (1903 lines)"}, "properties": {"repobilityId": "5ae866b26b866eba", "scanner": "scanner-primary", "fingerprint": "c933943976b52741", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1afda83b40012532", "level": "note", "message": {"text": "Very large file: backend/app/tasks/extraction.py (2691 lines)"}, "properties": {"repobilityId": "6cd5a8262dc02325", "scanner": "scanner-primary", "fingerprint": "1afda83b40012532", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48c07b3677206ed5", "level": "note", "message": {"text": "Very large file: backend/app/tasks/drawing_analysis.py (1793 lines)"}, "properties": {"repobilityId": "47d69f5509f6280d", "scanner": "scanner-primary", "fingerprint": "48c07b3677206ed5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85b65655e6db3d3c", "level": "note", "message": {"text": "Very large file: backend/app/db/models.py (2856 lines)"}, "properties": {"repobilityId": "ba9e851e05693b67", "scanner": "scanner-primary", "fingerprint": "85b65655e6db3d3c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "84b68b8c0cd1ec40", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "40df22e151636fc9", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a160205f4279b686", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0cfe6db9e1a030ab", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "17c6b03e780d5d29", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-976a00a99cd4effc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/components/ui/notification-bell.tsx:115"}, "properties": {"repobilityId": "416784bf35353f8a", "scanner": "scanner-primary", "fingerprint": "976a00a99cd4effc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-02f9827981605002", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/models/page.tsx:356"}, "properties": {"repobilityId": "993502a27ae6b43e", "scanner": "scanner-primary", "fingerprint": "02f9827981605002", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1fc32caf65485140", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/settings/skills/page.tsx:78"}, "properties": {"repobilityId": "78de4681f323f297", "scanner": "scanner-primary", "fingerprint": "1fc32caf65485140", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1ed30bf64a4b699c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/email/[id]/page.tsx:57"}, "properties": {"repobilityId": "f695f5a0cbb94d34", "scanner": "scanner-primary", "fingerprint": "1ed30bf64a4b699c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-018a0c980a638211", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/catalogs/page.tsx:27"}, "properties": {"repobilityId": "86cc7dda58c995ba", "scanner": "scanner-primary", "fingerprint": "018a0c980a638211", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e83e8baadcf1ede", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/chat/[id]/page.tsx:65"}, "properties": {"repobilityId": "09ea5958c3a8315a", "scanner": "scanner-primary", "fingerprint": "9e83e8baadcf1ede", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1e0b327ab8c351f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/page.tsx:231"}, "properties": {"repobilityId": "19a193274e84f6f9", "scanner": "scanner-primary", "fingerprint": "d1e0b327ab8c351f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6417be5a55a151d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/users/[sub]/page.tsx:139"}, "properties": {"repobilityId": "e1f247f39ec9cd0f", "scanner": "scanner-primary", "fingerprint": "6417be5a55a151d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa3eb5487ab92889", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/admin/api-keys/page.tsx:84"}, "properties": {"repobilityId": "50ffbd0c338afe71", "scanner": "scanner-primary", "fingerprint": "fa3eb5487ab92889", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d8c27dc75b3bbb6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/page.tsx:72"}, "properties": {"repobilityId": "a05a629a88ef5919", "scanner": "scanner-primary", "fingerprint": "6d8c27dc75b3bbb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-343534e29139eadd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/new/page.tsx:38"}, "properties": {"repobilityId": "c64fd084d8238482", "scanner": "scanner-primary", "fingerprint": "343534e29139eadd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ac15af4d8431911", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/technology/[id]/page.tsx:107"}, "properties": {"repobilityId": "de3e8cadd22b519b", "scanner": "scanner-primary", "fingerprint": "5ac15af4d8431911", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f69fca8a664b9280", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/page.tsx:109"}, "properties": {"repobilityId": "ee7a435eb8dd8470", "scanner": "scanner-primary", "fingerprint": "f69fca8a664b9280", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aabe1f2e3740e50c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/suppliers/[id]/page.tsx:270"}, "properties": {"repobilityId": "458f09fb11f7b440", "scanner": "scanner-primary", "fingerprint": "aabe1f2e3740e50c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-adf6c7fe0de1ac3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/warehouse/page.tsx:103"}, "properties": {"repobilityId": "2d9958504e5d8132", "scanner": "scanner-primary", "fingerprint": "adf6c7fe0de1ac3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f21625e7bb44ff4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/approvals/page.tsx:110"}, "properties": {"repobilityId": "1261650f1b47c36a", "scanner": "scanner-primary", "fingerprint": "7f21625e7bb44ff4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03aa45f9b2b57e3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/payments/page.tsx:172"}, "properties": {"repobilityId": "92bf8fc329c89c06", "scanner": "scanner-primary", "fingerprint": "03aa45f9b2b57e3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-409c49b7baf066d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/documents/[id]/page.tsx:421"}, "properties": {"repobilityId": "02a0f5634fda903d", "scanner": "scanner-primary", "fingerprint": "409c49b7baf066d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ab28c50b360bce5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/compare/page.tsx:85"}, "properties": {"repobilityId": "c08208ed78424bf6", "scanner": "scanner-primary", "fingerprint": "3ab28c50b360bce5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3710ac2fa66a1041", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api.ts:136"}, "properties": {"repobilityId": "a1451913a3c9663d", "scanner": "scanner-primary", "fingerprint": "3710ac2fa66a1041", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85e0b594b98681ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/auth.ts:102"}, "properties": {"repobilityId": "7c6e2bcf7b4bb0bb", "scanner": "scanner-primary", "fingerprint": "85e0b594b98681ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8296281bf8e5cb8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/api-client.ts:27"}, "properties": {"repobilityId": "36a94a76ebcf1a9e", "scanner": "scanner-primary", "fingerprint": "b8296281bf8e5cb8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e458f60120ec180f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/lib/drawings-api.ts:26"}, "properties": {"repobilityId": "5999f6e0f4ea62a0", "scanner": "scanner-primary", "fingerprint": "e458f60120ec180f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-beb2900fed248e80", "level": "note", "message": {"text": "Legacy-named symbol `create_encrypted_backup` in scripts/encrypted_backup.py:15"}, "properties": {"repobilityId": "6afc22e28ca283f2", "scanner": "scanner-primary", "fingerprint": "beb2900fed248e80", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-02bbbda7929a2d74", "level": "note", "message": {"text": "Legacy-named symbol `hours_old` in backend/tests/test_proactive.py:26"}, "properties": {"repobilityId": "c97859d64c0f3235", "scanner": "scanner-primary", "fingerprint": "02bbbda7929a2d74", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-050adab3df9d00e9", "level": "note", "message": {"text": "Legacy-named symbol `renamed_copy` in backend/tests/test_regression_all_invoices.py:221"}, "properties": {"repobilityId": "02fbd396148c3cf0", "scanner": "scanner-primary", "fingerprint": "050adab3df9d00e9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c181716c986c0beb", "level": "note", "message": {"text": "Legacy-named symbol `fake_jwks_v1` in backend/tests/test_auth_jwks_cache.py:58"}, "properties": {"repobilityId": "f29533eeafed8e51", "scanner": "scanner-primary", "fingerprint": "c181716c986c0beb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c036f9a34b3cc3a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/tests/test_real_invoice_pipeline.py:1040"}, "properties": {"repobilityId": "3ab6091f8d08d159", "scanner": "scanner-primary", "fingerprint": "2c036f9a34b3cc3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a6b6f2a1b3c17c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/tests/test_invoice_extraction_quality.py:472"}, "properties": {"repobilityId": "293e48ff3d4ee220", "scanner": "scanner-primary", "fingerprint": "5a6b6f2a1b3c17c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-595fe6c26ab737e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/tests/test_scenario_skill_refs.py:30"}, "properties": {"repobilityId": "ae817ff487893e4b", "scanner": "scanner-primary", "fingerprint": "595fe6c26ab737e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22b02ce874b9489a", "level": "note", "message": {"text": "Legacy-named symbol `test_user_without_department_sees_only_own_and_legacy` in backend/tests/test_visibility.py:70"}, "properties": {"repobilityId": "92ae1ab551ce966f", "scanner": "scanner-primary", "fingerprint": "22b02ce874b9489a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30f3b98bea9d099d", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/tests/test_local_models_live.py:120"}, "properties": {"repobilityId": "a28b09dcb1afb6a8", "scanner": "scanner-primary", "fingerprint": "30f3b98bea9d099d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-541fc6c6f0831e09", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/tests/test_task_routing.py:67"}, "properties": {"repobilityId": "a6a15068593b1c70", "scanner": "scanner-primary", "fingerprint": "541fc6c6f0831e09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-30a203846d1b18a2", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/tests/ai/test_router.py:96"}, "properties": {"repobilityId": "9580762ccd60f830", "scanner": "scanner-primary", "fingerprint": "30a203846d1b18a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-281b07c2fb3fe4f4", "level": "note", "message": {"text": "Legacy-named symbol `scripts_encrypted_backup` in backend/tests/domain/test_encrypted_backup.py:6"}, "properties": {"repobilityId": "768508fdd3845122", "scanner": "scanner-primary", "fingerprint": "281b07c2fb3fe4f4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f8a80985891d5d7", "level": "note", "message": {"text": "Legacy-named symbol `_promote_v2` in backend/app/ai/skill_evolver.py:237"}, "properties": {"repobilityId": "a111b1bec240ceb3", "scanner": "scanner-primary", "fingerprint": "5f8a80985891d5d7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d269d65d1be6bdd0", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/task_routing.py:159"}, "properties": {"repobilityId": "48286205c92b7959", "scanner": "scanner-primary", "fingerprint": "d269d65d1be6bdd0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-480bec384dc39997", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/ai/extraction_prompts.py:316"}, "properties": {"repobilityId": "9a33814f8be31d26", "scanner": "scanner-primary", "fingerprint": "480bec384dc39997", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e8032a486635eb", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/assignment_groups.py:148"}, "properties": {"repobilityId": "cd4b8d343ed0ee13", "scanner": "scanner-primary", "fingerprint": "d7e8032a486635eb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-59985e091058e8d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/ai/confidence.py:15"}, "properties": {"repobilityId": "8f0a1d44369a8119", "scanner": "scanner-primary", "fingerprint": "59985e091058e8d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3eaef7de6d03a87", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/router.py:237"}, "properties": {"repobilityId": "41a0dac4fc724ed5", "scanner": "scanner-primary", "fingerprint": "f3eaef7de6d03a87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0b023599214e0189", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/ai/router.py:198"}, "properties": {"repobilityId": "ed7242fd281c1c8f", "scanner": "scanner-primary", "fingerprint": "0b023599214e0189", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-724f301e5bdfd23e", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/ai/model_tier.py:69"}, "properties": {"repobilityId": "96bf154f68d84e74", "scanner": "scanner-primary", "fingerprint": "724f301e5bdfd23e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3b9fcf202ae33b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/ai/route_table.py:311"}, "properties": {"repobilityId": "e3988b199aee2c64", "scanner": "scanner-primary", "fingerprint": "e3b9fcf202ae33b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1676a742f520fcf", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/orchestrator.py:2105"}, "properties": {"repobilityId": "108ff60e9261f76c", "scanner": "scanner-primary", "fingerprint": "c1676a742f520fcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9d98633b9b971179", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/ai/orchestrator.py:114"}, "properties": {"repobilityId": "31f5876a62868327", "scanner": "scanner-primary", "fingerprint": "9d98633b9b971179", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fa43fd5834ac33d", "level": "note", "message": {"text": "Stub function `stop` (body is just `pass`/`return`) \u2014 backend/app/ai/mcp_client.py:177"}, "properties": {"repobilityId": "7ed3f5bc04c11164", "scanner": "scanner-primary", "fingerprint": "4fa43fd5834ac33d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-32a933f94a4625ca", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/ai/agent_loop.py:36"}, "properties": {"repobilityId": "40704b675ea352d8", "scanner": "scanner-primary", "fingerprint": "32a933f94a4625ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e0f1163cd53b5fb", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/presets.py:71"}, "properties": {"repobilityId": "4623677a4a934b25", "scanner": "scanner-primary", "fingerprint": "8e0f1163cd53b5fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5c08ac68ae0e1777", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/ai/audit.py:51"}, "properties": {"repobilityId": "31dc503230f642ec", "scanner": "scanner-primary", "fingerprint": "5c08ac68ae0e1777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6b4df52d95157d1", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/model_registry.py:136"}, "properties": {"repobilityId": "c359ca2722a40fb7", "scanner": "scanner-primary", "fingerprint": "f6b4df52d95157d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3dbf9663a63cac76", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/ai/agent_config.py:293"}, "properties": {"repobilityId": "69d1e284fdd6da15", "scanner": "scanner-primary", "fingerprint": "3dbf9663a63cac76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2bca7f768b251bfa", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/app/ai/agent_config.py:25"}, "properties": {"repobilityId": "55c4a58e1bc95871", "scanner": "scanner-primary", "fingerprint": "2bca7f768b251bfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fff76f03540e67be", "level": "note", "message": {"text": "Legacy-named symbol `create_backup` in backend/app/api/maintenance.py:103"}, "properties": {"repobilityId": "f703d07a817cda49", "scanner": "scanner-primary", "fingerprint": "fff76f03540e67be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-334dbc78831524dd", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/api/providers_api.py:679"}, "properties": {"repobilityId": "04a368fce6daab1b", "scanner": "scanner-primary", "fingerprint": "334dbc78831524dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4bee5ed9bca1523a", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/api/auth.py:115"}, "properties": {"repobilityId": "917ea6b70edd34ad", "scanner": "scanner-primary", "fingerprint": "4bee5ed9bca1523a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b190a0678f798b28", "level": "note", "message": {"text": "Legacy-named symbol `is_v2` in backend/app/api/dynamic_skill_runner.py:80"}, "properties": {"repobilityId": "e36fc6e1292a5acf", "scanner": "scanner-primary", "fingerprint": "b190a0678f798b28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-262281fc65ebf6dc", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/api/memory.py:111"}, "properties": {"repobilityId": "f69875d7ee09065c", "scanner": "scanner-primary", "fingerprint": "262281fc65ebf6dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa1fa5f12c9afd58", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/api/spec_tables.py:138"}, "properties": {"repobilityId": "2fc1d3577d504ece", "scanner": "scanner-primary", "fingerprint": "aa1fa5f12c9afd58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c4338f1743b3d73a", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/app/api/ai_settings.py:51"}, "properties": {"repobilityId": "1c38dadbcc046852", "scanner": "scanner-primary", "fingerprint": "c4338f1743b3d73a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b766335e83f11ce3", "level": "none", "message": {"text": "Commented-code block (6 lines) in backend/app/api/documents.py:79"}, "properties": {"repobilityId": "4b9f4870e557f80d", "scanner": "scanner-primary", "fingerprint": "b766335e83f11ce3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92697621d4647da2", "level": "none", "message": {"text": "Commented-code block (5 lines) in backend/app/tasks/extraction.py:431"}, "properties": {"repobilityId": "71d99f85b7bcfa4f", "scanner": "scanner-primary", "fingerprint": "92697621d4647da2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-652bf0cc41a85e67", "level": "none", "message": {"text": "Commented-code block (8 lines) in backend/app/tasks/embedding.py:149"}, "properties": {"repobilityId": "530b5a3447fa0396", "scanner": "scanner-primary", "fingerprint": "652bf0cc41a85e67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93e380618699d963", "level": "none", "message": {"text": "Commented-code block (7 lines) in backend/app/tasks/celery_app.py:36"}, "properties": {"repobilityId": "7bbd405480e22f3c", "scanner": "scanner-primary", "fingerprint": "93e380618699d963", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4245ecf19a6e8e40", "level": "note", "message": {"text": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/app/db/migrations/versions/2bc89634b9df_saved_queries_auto_approval_norm_cards.py:83"}, "properties": {"repobilityId": "facb38219c61e639", "scanner": "scanner-primary", "fingerprint": "4245ecf19a6e8e40", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-6610358a7580edfd", "level": "note", "message": {"text": "Legacy-named symbol `model_copy` in backend/app/domain/table_spec.py:877"}, "properties": {"repobilityId": "3379dac90968f820", "scanner": "scanner-primary", "fingerprint": "6610358a7580edfd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2130d6e6d67e5f10", "level": "note", "message": {"text": "Stub function `downgrade` (body is just `pass`/`return`) \u2014 backend/migrations/versions/2bc89634b9df_saved_queries_auto_approval_norm_cards.py:27"}, "properties": {"repobilityId": "59ded1f718e48b8c", "scanner": "scanner-primary", "fingerprint": "2130d6e6d67e5f10", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-b673918452ee2583", "level": "note", "message": {"text": "70 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "abf836fe9ec81133", "scanner": "scanner-primary", "fingerprint": "b673918452ee2583", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "8a54553b4b72c1f5", "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": "03ddd293a35cfc0a", "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": "5fdfd8f67675ebea", "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": "04a85f7c00743754", "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": "1844b07c120f07da", "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": "93156a5f9287a3cf", "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": "2019dfc29392fca4", "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": "d056cce37c895e00", "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": "4ac23448fdbea4ee", "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": "168b06d0ba4b3bb1", "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": "3c04e1d76b71e354", "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": "614b0650cc3c104e", "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": "df2332fca479a783", "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": "078dc7fbb5a97a28", "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": "6739965cb4ed07b5", "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": "f1308bc262823b8f", "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": "fa36bde25753ff73", "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": "0f64995f12c8e3ad", "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": "087760db0fdc8c26", "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": "14b5c1a6e799be8c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2247b6e17149fd7c", "level": "error", "message": {"text": "FastAPI POST `run_skill` without auth dependency \u2014 infra/skill-runner/runner.py:56"}, "properties": {"repobilityId": "48c2b8380e344d1e", "scanner": "scanner-primary", "fingerprint": "2247b6e17149fd7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/skill-runner/runner.py"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-eb9c980862f7ff84", "level": "error", "message": {"text": "FastAPI POST `smoke` without auth dependency \u2014 infra/skill-runner/runner.py:90"}, "properties": {"repobilityId": "138525c433c9043f", "scanner": "scanner-primary", "fingerprint": "eb9c980862f7ff84", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infra/skill-runner/runner.py"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-40e7056f941fb8b7", "level": "error", "message": {"text": "FastAPI POST `export_workspace_block` without auth dependency \u2014 backend/app/api/workspace_export.py:25"}, "properties": {"repobilityId": "098930be78fa0ce3", "scanner": "scanner-primary", "fingerprint": "40e7056f941fb8b7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace_export.py"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-09eb214125165be6", "level": "error", "message": {"text": "FastAPI POST `create_event` without auth dependency \u2014 backend/app/api/calendar.py:32"}, "properties": {"repobilityId": "bd2745b0090f5ff5", "scanner": "scanner-primary", "fingerprint": "09eb214125165be6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/calendar.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-ecd815d556d38b92", "level": "error", "message": {"text": "FastAPI POST `extract_dates` without auth dependency \u2014 backend/app/api/calendar.py:82"}, "properties": {"repobilityId": "cc7bd2f2806b0d77", "scanner": "scanner-primary", "fingerprint": "ecd815d556d38b92", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/calendar.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-b87bfa413e4b1e7c", "level": "error", "message": {"text": "FastAPI POST `create_reminder` without auth dependency \u2014 backend/app/api/calendar.py:229"}, "properties": {"repobilityId": "bcb4453a8d94387f", "scanner": "scanner-primary", "fingerprint": "b87bfa413e4b1e7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/calendar.py"}, "region": {"startLine": 229}}}]}, {"ruleId": "scanner-b8188f62752b2b76", "level": "error", "message": {"text": "FastAPI POST `generate_followup_draft` without auth dependency \u2014 backend/app/api/calendar.py:272"}, "properties": {"repobilityId": "ce575cee69a482f2", "scanner": "scanner-primary", "fingerprint": "b8188f62752b2b76", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/calendar.py"}, "region": {"startLine": 272}}}]}, {"ruleId": "scanner-fcde69c6eab8d834", "level": "error", "message": {"text": "FastAPI POST `mark_sent` without auth dependency \u2014 backend/app/api/calendar.py:314"}, "properties": {"repobilityId": "e881bfb6ebed5dd5", "scanner": "scanner-primary", "fingerprint": "fcde69c6eab8d834", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/calendar.py"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-a6f1417641604565", "level": "error", "message": {"text": "FastAPI POST `create_payment_schedule` without auth dependency \u2014 backend/app/api/payments.py:109"}, "properties": {"repobilityId": "4d4a28fa28fa0914", "scanner": "scanner-primary", "fingerprint": "a6f1417641604565", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/payments.py"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-229e685bb333289f", "level": "error", "message": {"text": "FastAPI PATCH `update_payment_schedule` without auth dependency \u2014 backend/app/api/payments.py:209"}, "properties": {"repobilityId": "7f18c28b3af9c2a7", "scanner": "scanner-primary", "fingerprint": "229e685bb333289f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/payments.py"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-94834c20ad397220", "level": "error", "message": {"text": "FastAPI POST `mark_paid` without auth dependency \u2014 backend/app/api/payments.py:228"}, "properties": {"repobilityId": "a143ebff5732fb9a", "scanner": "scanner-primary", "fingerprint": "94834c20ad397220", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/payments.py"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-77ebaf715da39c7c", "level": "error", "message": {"text": "FastAPI POST `schedule_invoice_payment` without auth dependency \u2014 backend/app/api/payments.py:264"}, "properties": {"repobilityId": "4d13653413c31852", "scanner": "scanner-primary", "fingerprint": "77ebaf715da39c7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/payments.py"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-66bd7c2f905288ec", "level": "error", "message": {"text": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.py:165"}, "properties": {"repobilityId": "eefe4f25fbe828b8", "scanner": "scanner-primary", "fingerprint": "66bd7c2f905288ec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-641321b87c98e5e1", "level": "error", "message": {"text": "FastAPI POST `create_provider` without auth dependency \u2014 backend/app/api/providers_api.py:166"}, "properties": {"repobilityId": "1e33fc2f882a0861", "scanner": "scanner-primary", "fingerprint": "641321b87c98e5e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-12d7be62cc16609a", "level": "error", "message": {"text": "FastAPI PUT `update_provider` without auth dependency \u2014 backend/app/api/providers_api.py:209"}, "properties": {"repobilityId": "87e1c37c3217f10b", "scanner": "scanner-primary", "fingerprint": "12d7be62cc16609a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-ac199a619a2a9cdc", "level": "error", "message": {"text": "FastAPI DELETE `delete_provider` without auth dependency \u2014 backend/app/api/providers_api.py:237"}, "properties": {"repobilityId": "baed4d6a60e7b8e3", "scanner": "scanner-primary", "fingerprint": "ac199a619a2a9cdc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-e3d3291e389c5948", "level": "error", "message": {"text": "FastAPI POST `test_provider` without auth dependency \u2014 backend/app/api/providers_api.py:249"}, "properties": {"repobilityId": "1d48bb7363bba2bd", "scanner": "scanner-primary", "fingerprint": "e3d3291e389c5948", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 249}}}]}, {"ruleId": "scanner-14e4cf137d2c5de9", "level": "error", "message": {"text": "FastAPI POST `refresh_models` without auth dependency \u2014 backend/app/api/providers_api.py:288"}, "properties": {"repobilityId": "c728ed684b9f5d81", "scanner": "scanner-primary", "fingerprint": "14e4cf137d2c5de9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 288}}}]}, {"ruleId": "scanner-a0156a23e7ab4d38", "level": "error", "message": {"text": "FastAPI PATCH `set_model_thinking` without auth dependency \u2014 backend/app/api/providers_api.py:537"}, "properties": {"repobilityId": "67c8697f080d7e3c", "scanner": "scanner-primary", "fingerprint": "a0156a23e7ab4d38", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 537}}}]}, {"ruleId": "scanner-f59b31b42a74c281", "level": "error", "message": {"text": "FastAPI PATCH `set_model_preferred_instance` without auth dependency \u2014 backend/app/api/providers_api.py:553"}, "properties": {"repobilityId": "3adebba62179b87f", "scanner": "scanner-primary", "fingerprint": "f59b31b42a74c281", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-9e24ab8545dfe519", "level": "error", "message": {"text": "FastAPI PUT `set_slot` without auth dependency \u2014 backend/app/api/providers_api.py:653"}, "properties": {"repobilityId": "27bcad2621579234", "scanner": "scanner-primary", "fingerprint": "9e24ab8545dfe519", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/providers_api.py"}, "region": {"startLine": 653}}}]}, {"ruleId": "scanner-9b0fb5d962690822", "level": "error", "message": {"text": "FastAPI POST `create_session` without auth dependency \u2014 backend/app/api/compare.py:32"}, "properties": {"repobilityId": "5b961b88e912fd48", "scanner": "scanner-primary", "fingerprint": "9b0fb5d962690822", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/compare.py"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-f8eb98f9568cd64d", "level": "error", "message": {"text": "FastAPI POST `align_items` without auth dependency \u2014 backend/app/api/compare.py:101"}, "properties": {"repobilityId": "4bf186100588bc38", "scanner": "scanner-primary", "fingerprint": "f8eb98f9568cd64d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/compare.py"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-64471e4739d4c88a", "level": "error", "message": {"text": "FastAPI POST `decide` without auth dependency \u2014 backend/app/api/compare.py:183"}, "properties": {"repobilityId": "2a44b30796dcc833", "scanner": "scanner-primary", "fingerprint": "64471e4739d4c88a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/compare.py"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-e7c6ee41b09fc1d1", "level": "error", "message": {"text": "FastAPI POST `create_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:114"}, "properties": {"repobilityId": "bf7b111471f033f0", "scanner": "scanner-primary", "fingerprint": "e7c6ee41b09fc1d1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/draft_email.py"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-46fecc2d7414235b", "level": "error", "message": {"text": "FastAPI PATCH `update_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:197"}, "properties": {"repobilityId": "4eca71201edb6a23", "scanner": "scanner-primary", "fingerprint": "46fecc2d7414235b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/draft_email.py"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-774738bd6d930aee", "level": "error", "message": {"text": "FastAPI POST `send_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:224"}, "properties": {"repobilityId": "8cc8a730ec006177", "scanner": "scanner-primary", "fingerprint": "774738bd6d930aee", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/draft_email.py"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-5078b1893b82c04c", "level": "error", "message": {"text": "FastAPI DELETE `cancel_draft_email` without auth dependency \u2014 backend/app/api/draft_email.py:281"}, "properties": {"repobilityId": "b5cfa10ced2d5ea9", "scanner": "scanner-primary", "fingerprint": "5078b1893b82c04c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/draft_email.py"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-e65eb928ade18f98", "level": "error", "message": {"text": "FastAPI POST `run_draft_risk_check` without auth dependency \u2014 backend/app/api/draft_email.py:307"}, "properties": {"repobilityId": "edea329cd12d63ae", "scanner": "scanner-primary", "fingerprint": "e65eb928ade18f98", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/draft_email.py"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-d36e87d9705f4955", "level": "error", "message": {"text": "FastAPI POST `dispatch_vault` without auth dependency \u2014 backend/app/api/capability_router.py:345"}, "properties": {"repobilityId": "5cd6f1fbd7f7a2da", "scanner": "scanner-primary", "fingerprint": "d36e87d9705f4955", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/capability_router.py"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-924d1a6f75c7a3ad", "level": "error", "message": {"text": "FastAPI POST `dispatch_capability` without auth dependency \u2014 backend/app/api/capability_router.py:368"}, "properties": {"repobilityId": "4bb1e57406cf3231", "scanner": "scanner-primary", "fingerprint": "924d1a6f75c7a3ad", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/capability_router.py"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-142a9c8ee9af0f19", "level": "error", "message": {"text": "FastAPI POST `run_scenario` without auth dependency \u2014 backend/app/api/scenarios.py:51"}, "properties": {"repobilityId": "810f591f765e97ce", "scanner": "scanner-primary", "fingerprint": "142a9c8ee9af0f19", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/scenarios.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-9deebaed415f77f2", "level": "error", "message": {"text": "FastAPI POST `reload_agent_config` without auth dependency \u2014 backend/app/api/scenarios.py:151"}, "properties": {"repobilityId": "83298cc4bb5f4c1f", "scanner": "scanner-primary", "fingerprint": "9deebaed415f77f2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/scenarios.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-5febf548cbb295eb", "level": "error", "message": {"text": "FastAPI POST `re_extract_invoice` without auth dependency \u2014 backend/app/api/invoices.py:133"}, "properties": {"repobilityId": "910561c5449d3319", "scanner": "scanner-primary", "fingerprint": "5febf548cbb295eb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-82c0b71550cbeace", "level": "error", "message": {"text": "FastAPI POST `validate_invoice` without auth dependency \u2014 backend/app/api/invoices.py:164"}, "properties": {"repobilityId": "b9ffd9cd465b4d39", "scanner": "scanner-primary", "fingerprint": "82c0b71550cbeace", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-5ac9f60096b2ce40", "level": "error", "message": {"text": "FastAPI PATCH `update_invoice` without auth dependency \u2014 backend/app/api/invoices.py:225"}, "properties": {"repobilityId": "8cb58d95f6a4583c", "scanner": "scanner-primary", "fingerprint": "5ac9f60096b2ce40", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-162950a7f2959949", "level": "error", "message": {"text": "FastAPI PATCH `update_invoice_line` without auth dependency \u2014 backend/app/api/invoices.py:265"}, "properties": {"repobilityId": "d572f28ec509bd11", "scanner": "scanner-primary", "fingerprint": "162950a7f2959949", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-a1404e26fbd6ff29", "level": "error", "message": {"text": "FastAPI DELETE `delete_invoice` without auth dependency \u2014 backend/app/api/invoices.py:534"}, "properties": {"repobilityId": "e32d857210c94889", "scanner": "scanner-primary", "fingerprint": "a1404e26fbd6ff29", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 534}}}]}, {"ruleId": "scanner-ca312ae0691e4df4", "level": "error", "message": {"text": "FastAPI DELETE `bulk_delete_invoices` without auth dependency \u2014 backend/app/api/invoices.py:570"}, "properties": {"repobilityId": "993170f226807c8d", "scanner": "scanner-primary", "fingerprint": "ca312ae0691e4df4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 570}}}]}, {"ruleId": "scanner-0b1121abf2472a9b", "level": "error", "message": {"text": "FastAPI POST `bulk_approve_invoices` without auth dependency \u2014 backend/app/api/invoices.py:626"}, "properties": {"repobilityId": "8418551d540af20c", "scanner": "scanner-primary", "fingerprint": "0b1121abf2472a9b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 626}}}]}, {"ruleId": "scanner-d400a341150d2dd8", "level": "error", "message": {"text": "FastAPI POST `bulk_reject_invoices` without auth dependency \u2014 backend/app/api/invoices.py:656"}, "properties": {"repobilityId": "090f419097eb9782", "scanner": "scanner-primary", "fingerprint": "d400a341150d2dd8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 656}}}]}, {"ruleId": "scanner-f178ad444a26223a", "level": "error", "message": {"text": "FastAPI POST `receive_invoice` without auth dependency \u2014 backend/app/api/invoices.py:686"}, "properties": {"repobilityId": "d00b65c2e50087af", "scanner": "scanner-primary", "fingerprint": "f178ad444a26223a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/invoices.py"}, "region": {"startLine": 686}}}]}, {"ruleId": "scanner-81a28804058ee5a2", "level": "error", "message": {"text": "FastAPI POST `create_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:240"}, "properties": {"repobilityId": "d952cf4fea040578", "scanner": "scanner-primary", "fingerprint": "81a28804058ee5a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 240}}}]}, {"ruleId": "scanner-492d7e42ad743af7", "level": "error", "message": {"text": "FastAPI PATCH `update_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:288"}, "properties": {"repobilityId": "9dda798f2e6d23ab", "scanner": "scanner-primary", "fingerprint": "492d7e42ad743af7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 288}}}]}, {"ruleId": "scanner-eddfbdddd21f0c93", "level": "error", "message": {"text": "FastAPI DELETE `delete_inventory_item` without auth dependency \u2014 backend/app/api/warehouse.py:308"}, "properties": {"repobilityId": "0aef0a16733517c6", "scanner": "scanner-primary", "fingerprint": "eddfbdddd21f0c93", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 308}}}]}, {"ruleId": "scanner-916a4e7b5392c031", "level": "error", "message": {"text": "FastAPI POST `issue_stock` without auth dependency \u2014 backend/app/api/warehouse.py:338"}, "properties": {"repobilityId": "67d5073b94b8a101", "scanner": "scanner-primary", "fingerprint": "916a4e7b5392c031", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-9661eb6af58da2a8", "level": "error", "message": {"text": "FastAPI POST `adjust_stock` without auth dependency \u2014 backend/app/api/warehouse.py:379"}, "properties": {"repobilityId": "99e9ce04f8b79194", "scanner": "scanner-primary", "fingerprint": "9661eb6af58da2a8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-5c3b2b4a0cf28674", "level": "error", "message": {"text": "FastAPI POST `bulk_confirm_receipts` without auth dependency \u2014 backend/app/api/warehouse.py:508"}, "properties": {"repobilityId": "43722c01a9168339", "scanner": "scanner-primary", "fingerprint": "5c3b2b4a0cf28674", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-985fe0f354545766", "level": "error", "message": {"text": "FastAPI POST `create_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:540"}, "properties": {"repobilityId": "9f5e32f38c933ff1", "scanner": "scanner-primary", "fingerprint": "985fe0f354545766", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 540}}}]}, {"ruleId": "scanner-4fa918635ea1cb7b", "level": "error", "message": {"text": "FastAPI PATCH `update_receipt_line` without auth dependency \u2014 backend/app/api/warehouse.py:617"}, "properties": {"repobilityId": "7fa7560e46daddda", "scanner": "scanner-primary", "fingerprint": "4fa918635ea1cb7b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 617}}}]}, {"ruleId": "scanner-d590d90d67d5aa2b", "level": "error", "message": {"text": "FastAPI POST `confirm_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:637"}, "properties": {"repobilityId": "c63f58960c5b7fc2", "scanner": "scanner-primary", "fingerprint": "d590d90d67d5aa2b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 637}}}]}, {"ruleId": "scanner-d226665c213e7b24", "level": "error", "message": {"text": "FastAPI PATCH `update_receipt_status` without auth dependency \u2014 backend/app/api/warehouse.py:662"}, "properties": {"repobilityId": "a83f4bf4f73256de", "scanner": "scanner-primary", "fingerprint": "d226665c213e7b24", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 662}}}]}, {"ruleId": "scanner-31f22e3ee2f5a671", "level": "error", "message": {"text": "FastAPI DELETE `cancel_receipt` without auth dependency \u2014 backend/app/api/warehouse.py:700"}, "properties": {"repobilityId": "35f8b5f0b8730fd3", "scanner": "scanner-primary", "fingerprint": "31f22e3ee2f5a671", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/warehouse.py"}, "region": {"startLine": 700}}}]}, {"ruleId": "scanner-fed7b28e62154bd3", "level": "error", "message": {"text": "FastAPI POST `create_bom` without auth dependency \u2014 backend/app/api/boms.py:132"}, "properties": {"repobilityId": "225799a07b777bf6", "scanner": "scanner-primary", "fingerprint": "fed7b28e62154bd3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-7489865a5750364b", "level": "error", "message": {"text": "FastAPI PATCH `update_bom` without auth dependency \u2014 backend/app/api/boms.py:176"}, "properties": {"repobilityId": "9452ff8bae7f8846", "scanner": "scanner-primary", "fingerprint": "7489865a5750364b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-c8558a0dc7c5193e", "level": "error", "message": {"text": "FastAPI POST `add_bom_line` without auth dependency \u2014 backend/app/api/boms.py:203"}, "properties": {"repobilityId": "935fa49f3e190fa7", "scanner": "scanner-primary", "fingerprint": "c8558a0dc7c5193e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-401c4d647f011044", "level": "error", "message": {"text": "FastAPI DELETE `delete_bom_line` without auth dependency \u2014 backend/app/api/boms.py:222"}, "properties": {"repobilityId": "98d35b81a9f799f9", "scanner": "scanner-primary", "fingerprint": "401c4d647f011044", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-67dc1171cf0b786d", "level": "error", "message": {"text": "FastAPI POST `approve_bom` without auth dependency \u2014 backend/app/api/boms.py:243"}, "properties": {"repobilityId": "db3eadb5145e8010", "scanner": "scanner-primary", "fingerprint": "67dc1171cf0b786d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-2edd837a0790b77d", "level": "error", "message": {"text": "FastAPI POST `create_purchase_request_from_bom` without auth dependency \u2014 backend/app/api/boms.py:343"}, "properties": {"repobilityId": "0cb1e6558a328901", "scanner": "scanner-primary", "fingerprint": "2edd837a0790b77d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/boms.py"}, "region": {"startLine": 343}}}]}, {"ruleId": "scanner-383f4796d8a73ecc", "level": "error", "message": {"text": "FastAPI POST `suggest_rules` without auth dependency \u2014 backend/app/api/normalization.py:73"}, "properties": {"repobilityId": "43f5a678b2cf534c", "scanner": "scanner-primary", "fingerprint": "383f4796d8a73ecc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-0a809ad6c3a3ad2e", "level": "error", "message": {"text": "FastAPI POST `activate_rule` without auth dependency \u2014 backend/app/api/normalization.py:146"}, "properties": {"repobilityId": "daf3d2f6f176b93e", "scanner": "scanner-primary", "fingerprint": "0a809ad6c3a3ad2e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-e0eabdee756525ed", "level": "error", "message": {"text": "FastAPI POST `disable_rule` without auth dependency \u2014 backend/app/api/normalization.py:184"}, "properties": {"repobilityId": "b496876a3af0299a", "scanner": "scanner-primary", "fingerprint": "e0eabdee756525ed", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-f5daa32503130c99", "level": "error", "message": {"text": "FastAPI POST `apply_rules` without auth dependency \u2014 backend/app/api/normalization.py:213"}, "properties": {"repobilityId": "84684a3177a2aead", "scanner": "scanner-primary", "fingerprint": "f5daa32503130c99", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-3378a67b3febb80d", "level": "error", "message": {"text": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/normalization.py:305"}, "properties": {"repobilityId": "4137db1f8ce918c3", "scanner": "scanner-primary", "fingerprint": "3378a67b3febb80d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-e51883930c8f9bf3", "level": "error", "message": {"text": "FastAPI POST `create_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:426"}, "properties": {"repobilityId": "63a7a12f1398eb68", "scanner": "scanner-primary", "fingerprint": "e51883930c8f9bf3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 426}}}]}, {"ruleId": "scanner-f063981316468cca", "level": "error", "message": {"text": "FastAPI PATCH `update_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:456"}, "properties": {"repobilityId": "6c1cbe6d906d35a0", "scanner": "scanner-primary", "fingerprint": "f063981316468cca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 456}}}]}, {"ruleId": "scanner-d45e35df0101789d", "level": "error", "message": {"text": "FastAPI DELETE `delete_norm_card` without auth dependency \u2014 backend/app/api/normalization.py:473"}, "properties": {"repobilityId": "cd717e1bc141580b", "scanner": "scanner-primary", "fingerprint": "d45e35df0101789d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-2a28fa978bb984f8", "level": "error", "message": {"text": "FastAPI PATCH `update_canonical_item_classification` without auth dependency \u2014 backend/app/api/normalization.py:525"}, "properties": {"repobilityId": "8f53f673ca1e9d28", "scanner": "scanner-primary", "fingerprint": "2a28fa978bb984f8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/normalization.py"}, "region": {"startLine": 525}}}]}, {"ruleId": "scanner-23e2e9128c10b414", "level": "error", "message": {"text": "FastAPI POST `table_query` without auth dependency \u2014 backend/app/api/tables.py:82"}, "properties": {"repobilityId": "7a4f0f6a09f90ec9", "scanner": "scanner-primary", "fingerprint": "23e2e9128c10b414", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-1466bbd4a9dc79f7", "level": "error", "message": {"text": "FastAPI POST `export_excel` without auth dependency \u2014 backend/app/api/tables.py:267"}, "properties": {"repobilityId": "587f5620e981b5ea", "scanner": "scanner-primary", "fingerprint": "1466bbd4a9dc79f7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-6474894fae5f6fa9", "level": "error", "message": {"text": "FastAPI POST `export_1c` without auth dependency \u2014 backend/app/api/tables.py:458"}, "properties": {"repobilityId": "84fcc6a092c46555", "scanner": "scanner-primary", "fingerprint": "6474894fae5f6fa9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 458}}}]}, {"ruleId": "scanner-97d307efc11d3fb3", "level": "error", "message": {"text": "FastAPI POST `create_saved_view` without auth dependency \u2014 backend/app/api/tables.py:610"}, "properties": {"repobilityId": "f1deed7eb45d0ea0", "scanner": "scanner-primary", "fingerprint": "97d307efc11d3fb3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 610}}}]}, {"ruleId": "scanner-de2df48df0f69d19", "level": "error", "message": {"text": "FastAPI DELETE `delete_saved_view` without auth dependency \u2014 backend/app/api/tables.py:643"}, "properties": {"repobilityId": "0306093758f4f101", "scanner": "scanner-primary", "fingerprint": "de2df48df0f69d19", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 643}}}]}, {"ruleId": "scanner-802679676c76b552", "level": "error", "message": {"text": "FastAPI POST `import_excel` without auth dependency \u2014 backend/app/api/tables.py:661"}, "properties": {"repobilityId": "5ea3b999bdeda6b8", "scanner": "scanner-primary", "fingerprint": "802679676c76b552", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 661}}}]}, {"ruleId": "scanner-150768daa43f9464", "level": "error", "message": {"text": "FastAPI POST `inline_edit` without auth dependency \u2014 backend/app/api/tables.py:850"}, "properties": {"repobilityId": "964b0a50ccdf7345", "scanner": "scanner-primary", "fingerprint": "150768daa43f9464", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 850}}}]}, {"ruleId": "scanner-26a322d16979f465", "level": "error", "message": {"text": "FastAPI POST `batch_action` without auth dependency \u2014 backend/app/api/tables.py:910"}, "properties": {"repobilityId": "76f6dff4217608e7", "scanner": "scanner-primary", "fingerprint": "26a322d16979f465", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tables.py"}, "region": {"startLine": 910}}}]}, {"ruleId": "scanner-00cc4037a58520de", "level": "error", "message": {"text": "FastAPI PATCH `update_ntd_control_settings` without auth dependency \u2014 backend/app/api/ntd.py:102"}, "properties": {"repobilityId": "f40ac68635bcbbc5", "scanner": "scanner-primary", "fingerprint": "00cc4037a58520de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-cbe9bf721c330ada", "level": "error", "message": {"text": "FastAPI POST `create_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:141"}, "properties": {"repobilityId": "2eb9cfa61b2a34b7", "scanner": "scanner-primary", "fingerprint": "cbe9bf721c330ada", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-a07c1a0f71f0a5d1", "level": "error", "message": {"text": "FastAPI POST `create_normative_document_from_source` without auth dependency \u2014 backend/app/api/ntd.py:183"}, "properties": {"repobilityId": "8cfecda09302a984", "scanner": "scanner-primary", "fingerprint": "a07c1a0f71f0a5d1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-2ef1e449cd5b6bc6", "level": "error", "message": {"text": "FastAPI POST `index_normative_document` without auth dependency \u2014 backend/app/api/ntd.py:251"}, "properties": {"repobilityId": "ee1b1a65c9effb6a", "scanner": "scanner-primary", "fingerprint": "2ef1e449cd5b6bc6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-11ef0c24d841442b", "level": "error", "message": {"text": "FastAPI POST `create_normative_clause` without auth dependency \u2014 backend/app/api/ntd.py:371"}, "properties": {"repobilityId": "f769fb70214bc876", "scanner": "scanner-primary", "fingerprint": "11ef0c24d841442b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 371}}}]}, {"ruleId": "scanner-129ba8364b7c9f23", "level": "error", "message": {"text": "FastAPI POST `create_normative_requirement` without auth dependency \u2014 backend/app/api/ntd.py:399"}, "properties": {"repobilityId": "2c117baf94f9a990", "scanner": "scanner-primary", "fingerprint": "129ba8364b7c9f23", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 399}}}]}, {"ruleId": "scanner-d145a36f0f47d1a9", "level": "error", "message": {"text": "FastAPI POST `run_document_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:463"}, "properties": {"repobilityId": "6dc5b501c7f7dc02", "scanner": "scanner-primary", "fingerprint": "d145a36f0f47d1a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-a5917aafab6b3d46", "level": "error", "message": {"text": "FastAPI POST `run_ntd_check` without auth dependency \u2014 backend/app/api/ntd.py:513"}, "properties": {"repobilityId": "c3c8cdc8d714c867", "scanner": "scanner-primary", "fingerprint": "a5917aafab6b3d46", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-334f80700bb9759e", "level": "error", "message": {"text": "FastAPI POST `decide_ntd_finding` without auth dependency \u2014 backend/app/api/ntd.py:553"}, "properties": {"repobilityId": "b73b6c8ad00af10d", "scanner": "scanner-primary", "fingerprint": "334f80700bb9759e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ntd.py"}, "region": {"startLine": 553}}}]}, {"ruleId": "scanner-e7389713c631a7ec", "level": "error", "message": {"text": "FastAPI POST `create_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:117"}, "properties": {"repobilityId": "e86550523025cfd3", "scanner": "scanner-primary", "fingerprint": "e7389713c631a7ec", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canonical.py"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-512901b4c562fb5c", "level": "error", "message": {"text": "FastAPI PATCH `update_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:149"}, "properties": {"repobilityId": "581140ccdaaffa00", "scanner": "scanner-primary", "fingerprint": "512901b4c562fb5c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canonical.py"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-a53c8985e368320d", "level": "error", "message": {"text": "FastAPI DELETE `delete_canonical_item` without auth dependency \u2014 backend/app/api/canonical.py:166"}, "properties": {"repobilityId": "c3205616c5e9d84b", "scanner": "scanner-primary", "fingerprint": "a53c8985e368320d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canonical.py"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-74676bd6b29a8e43", "level": "error", "message": {"text": "FastAPI POST `suggest_mapping` without auth dependency \u2014 backend/app/api/canonical.py:204"}, "properties": {"repobilityId": "daf7d533026f9cb5", "scanner": "scanner-primary", "fingerprint": "74676bd6b29a8e43", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canonical.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-0bd264aa934c12e6", "level": "error", "message": {"text": "FastAPI POST `confirm_mapping` without auth dependency \u2014 backend/app/api/canonical.py:254"}, "properties": {"repobilityId": "b5abe2f1f9d64d3e", "scanner": "scanner-primary", "fingerprint": "0bd264aa934c12e6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canonical.py"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-c904360813deaa2a", "level": "error", "message": {"text": "FastAPI POST `create_collection` without auth dependency \u2014 backend/app/api/collections.py:44"}, "properties": {"repobilityId": "595327a06e7ace9e", "scanner": "scanner-primary", "fingerprint": "c904360813deaa2a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/collections.py"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-d9078570e62cff60", "level": "error", "message": {"text": "FastAPI POST `add_item` without auth dependency \u2014 backend/app/api/collections.py:107"}, "properties": {"repobilityId": "e561e59d5affa4fc", "scanner": "scanner-primary", "fingerprint": "d9078570e62cff60", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/collections.py"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-e8380360c76780e2", "level": "error", "message": {"text": "FastAPI DELETE `remove_item` without auth dependency \u2014 backend/app/api/collections.py:158"}, "properties": {"repobilityId": "b644942778133bc2", "scanner": "scanner-primary", "fingerprint": "e8380360c76780e2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/collections.py"}, "region": {"startLine": 158}}}]}, {"ruleId": "scanner-fe6d7fe8a53fed0d", "level": "error", "message": {"text": "FastAPI POST `close_collection` without auth dependency \u2014 backend/app/api/collections.py:182"}, "properties": {"repobilityId": "cefdf114fe4f3729", "scanner": "scanner-primary", "fingerprint": "fe6d7fe8a53fed0d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/collections.py"}, "region": {"startLine": 182}}}]}, {"ruleId": "scanner-d442b900a60f56bf", "level": "error", "message": {"text": "FastAPI POST `summarize_collection` without auth dependency \u2014 backend/app/api/collections.py:220"}, "properties": {"repobilityId": "1430ae17dd079272", "scanner": "scanner-primary", "fingerprint": "d442b900a60f56bf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/collections.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-ba39e8d29f928f49", "level": "error", "message": {"text": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:50"}, "properties": {"repobilityId": "d425c608ffdea558", "scanner": "scanner-primary", "fingerprint": "ba39e8d29f928f49", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-b4599c9d98442149", "level": "error", "message": {"text": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:106"}, "properties": {"repobilityId": "75bd60162cefecab", "scanner": "scanner-primary", "fingerprint": "b4599c9d98442149", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-6fca8df26b993b9c", "level": "error", "message": {"text": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/tool_catalog.py:126"}, "properties": {"repobilityId": "50bfb62e672726a4", "scanner": "scanner-primary", "fingerprint": "6fca8df26b993b9c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-09051d031c02bbb9", "level": "error", "message": {"text": "FastAPI POST `upload_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:170"}, "properties": {"repobilityId": "8c2ef2e18b3ccfb0", "scanner": "scanner-primary", "fingerprint": "09051d031c02bbb9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-f7de40d277eb2db6", "level": "error", "message": {"text": "FastAPI POST `refresh_catalog` without auth dependency \u2014 backend/app/api/tool_catalog.py:212"}, "properties": {"repobilityId": "544c347eeeaa5ad1", "scanner": "scanner-primary", "fingerprint": "f7de40d277eb2db6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-e637c19a903ef15e", "level": "error", "message": {"text": "FastAPI POST `create_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:277"}, "properties": {"repobilityId": "e2601a6815646a40", "scanner": "scanner-primary", "fingerprint": "e637c19a903ef15e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 277}}}]}, {"ruleId": "scanner-ed3ccc2290fba999", "level": "error", "message": {"text": "FastAPI PATCH `update_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:323"}, "properties": {"repobilityId": "38483a61a8596b40", "scanner": "scanner-primary", "fingerprint": "ed3ccc2290fba999", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 323}}}]}, {"ruleId": "scanner-2b0730c431673c92", "level": "error", "message": {"text": "FastAPI DELETE `bulk_delete_entries` without auth dependency \u2014 backend/app/api/tool_catalog.py:350"}, "properties": {"repobilityId": "4b82cdfce90db07a", "scanner": "scanner-primary", "fingerprint": "2b0730c431673c92", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 350}}}]}, {"ruleId": "scanner-4f6d27734cd00e14", "level": "error", "message": {"text": "FastAPI DELETE `delete_entry` without auth dependency \u2014 backend/app/api/tool_catalog.py:382"}, "properties": {"repobilityId": "35a335beafb1293d", "scanner": "scanner-primary", "fingerprint": "4f6d27734cd00e14", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 382}}}]}, {"ruleId": "scanner-3fb7eee9d62171b0", "level": "error", "message": {"text": "FastAPI POST `upload_catalog_for_party` without auth dependency \u2014 backend/app/api/tool_catalog.py:699"}, "properties": {"repobilityId": "a33f94c6541f0c87", "scanner": "scanner-primary", "fingerprint": "3fb7eee9d62171b0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/tool_catalog.py"}, "region": {"startLine": 699}}}]}, {"ruleId": "scanner-a9cb67ae260f2907", "level": "error", "message": {"text": "FastAPI POST `check_all_anomalies` without auth dependency \u2014 backend/app/api/anomalies.py:45"}, "properties": {"repobilityId": "4726b7cf84617e7c", "scanner": "scanner-primary", "fingerprint": "a9cb67ae260f2907", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/anomalies.py"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-38f14fb474ca0e06", "level": "error", "message": {"text": "FastAPI POST `create_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:309"}, "properties": {"repobilityId": "2e92761281dbe2cd", "scanner": "scanner-primary", "fingerprint": "38f14fb474ca0e06", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/anomalies.py"}, "region": {"startLine": 309}}}]}, {"ruleId": "scanner-c301b092a7b1c6a8", "level": "error", "message": {"text": "FastAPI POST `bulk_resolve_anomalies` without auth dependency \u2014 backend/app/api/anomalies.py:379"}, "properties": {"repobilityId": "766bb88b3723f63a", "scanner": "scanner-primary", "fingerprint": "c301b092a7b1c6a8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/anomalies.py"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-160e49edbfd2c62e", "level": "error", "message": {"text": "FastAPI POST `resolve_anomaly` without auth dependency \u2014 backend/app/api/anomalies.py:419"}, "properties": {"repobilityId": "ea7cc219e46d3d24", "scanner": "scanner-primary", "fingerprint": "160e49edbfd2c62e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/anomalies.py"}, "region": {"startLine": 419}}}]}, {"ruleId": "scanner-5f08e10dcd0d6638", "level": "error", "message": {"text": "FastAPI POST `create_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:77"}, "properties": {"repobilityId": "9fdd1300683002d8", "scanner": "scanner-primary", "fingerprint": "5f08e10dcd0d6638", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/auto_approval.py"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-a7f9fa9e7013caf9", "level": "error", "message": {"text": "FastAPI PATCH `update_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:99"}, "properties": {"repobilityId": "0523770fcf11187b", "scanner": "scanner-primary", "fingerprint": "a7f9fa9e7013caf9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/auto_approval.py"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-b71d216b5ab07711", "level": "error", "message": {"text": "FastAPI DELETE `delete_rule` without auth dependency \u2014 backend/app/api/auto_approval.py:116"}, "properties": {"repobilityId": "683cf54e45adfb3b", "scanner": "scanner-primary", "fingerprint": "b71d216b5ab07711", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/auto_approval.py"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-e370598d94178f8c", "level": "error", "message": {"text": "FastAPI POST `check_invoice` without auth dependency \u2014 backend/app/api/auto_approval.py:129"}, "properties": {"repobilityId": "eb26ae7b2955f0ae", "scanner": "scanner-primary", "fingerprint": "e370598d94178f8c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/auto_approval.py"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-a18f73f9e47e0f19", "level": "error", "message": {"text": "FastAPI POST `search_memory` without auth dependency \u2014 backend/app/api/memory.py:96"}, "properties": {"repobilityId": "358395e5f16dd48f", "scanner": "scanner-primary", "fingerprint": "a18f73f9e47e0f19", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-e9d893e1b6d674a2", "level": "error", "message": {"text": "FastAPI POST `store_chat_turn_memory` without auth dependency \u2014 backend/app/api/memory.py:162"}, "properties": {"repobilityId": "543fa13fae069d3d", "scanner": "scanner-primary", "fingerprint": "e9d893e1b6d674a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-9a3d4712a2eb833c", "level": "error", "message": {"text": "FastAPI POST `pin_memory_fact` without auth dependency \u2014 backend/app/api/memory.py:196"}, "properties": {"repobilityId": "c284c8720fb1adab", "scanner": "scanner-primary", "fingerprint": "9a3d4712a2eb833c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-c64c06c75e501269", "level": "error", "message": {"text": "FastAPI POST `prune_memory_facts` without auth dependency \u2014 backend/app/api/memory.py:233"}, "properties": {"repobilityId": "bb0a1237d32294b9", "scanner": "scanner-primary", "fingerprint": "c64c06c75e501269", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-8d1b1590ecc02d4c", "level": "error", "message": {"text": "FastAPI POST `explain_memory` without auth dependency \u2014 backend/app/api/memory.py:766"}, "properties": {"repobilityId": "6060b090f70c5672", "scanner": "scanner-primary", "fingerprint": "8d1b1590ecc02d4c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-06859fc8c45984b8", "level": "error", "message": {"text": "FastAPI POST `rebuild_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:837"}, "properties": {"repobilityId": "9164ad9c031fbc52", "scanner": "scanner-primary", "fingerprint": "06859fc8c45984b8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 837}}}]}, {"ruleId": "scanner-77b0fb6c2e5cc6c8", "level": "error", "message": {"text": "FastAPI POST `rebuild_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:916"}, "properties": {"repobilityId": "c530ed632c95eee7", "scanner": "scanner-primary", "fingerprint": "77b0fb6c2e5cc6c8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 916}}}]}, {"ruleId": "scanner-5e756cfd0a70dde2", "level": "error", "message": {"text": "FastAPI POST `index_active_memory_embeddings` without auth dependency \u2014 backend/app/api/memory.py:936"}, "properties": {"repobilityId": "e52615fb040ae625", "scanner": "scanner-primary", "fingerprint": "5e756cfd0a70dde2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 936}}}]}, {"ruleId": "scanner-c678a3898609c536", "level": "error", "message": {"text": "FastAPI POST `reindex_memory` without auth dependency \u2014 backend/app/api/memory.py:1012"}, "properties": {"repobilityId": "074c2c0e50c98109", "scanner": "scanner-primary", "fingerprint": "c678a3898609c536", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 1012}}}]}, {"ruleId": "scanner-0399af7b8142ed7c", "level": "error", "message": {"text": "FastAPI POST `rate_message` without auth dependency \u2014 backend/app/api/memory.py:1216"}, "properties": {"repobilityId": "8c0b31f4a21c4171", "scanner": "scanner-primary", "fingerprint": "0399af7b8142ed7c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/memory.py"}, "region": {"startLine": 1216}}}]}, {"ruleId": "scanner-1aa5d16def3f8077", "level": "error", "message": {"text": "FastAPI POST `release_quarantine` without auth dependency \u2014 backend/app/api/quarantine.py:97"}, "properties": {"repobilityId": "ce80aeb747ff0d7e", "scanner": "scanner-primary", "fingerprint": "1aa5d16def3f8077", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/quarantine.py"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-054e0a2a8bd3b51e", "level": "error", "message": {"text": "FastAPI DELETE `delete_quarantine` without auth dependency \u2014 backend/app/api/quarantine.py:146"}, "properties": {"repobilityId": "8220fec21c5f92ac", "scanner": "scanner-primary", "fingerprint": "054e0a2a8bd3b51e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/quarantine.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-c821fff54bf2ead8", "level": "error", "message": {"text": "FastAPI POST `add_to_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:195"}, "properties": {"repobilityId": "beb02102fa87d565", "scanner": "scanner-primary", "fingerprint": "c821fff54bf2ead8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/quarantine.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-0a6f4a40e3028687", "level": "error", "message": {"text": "FastAPI DELETE `remove_from_allowlist` without auth dependency \u2014 backend/app/api/quarantine.py:217"}, "properties": {"repobilityId": "839f6b7e833e0250", "scanner": "scanner-primary", "fingerprint": "0a6f4a40e3028687", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/quarantine.py"}, "region": {"startLine": 217}}}]}, {"ruleId": "scanner-08dcbe7908f7d285", "level": "error", "message": {"text": "FastAPI POST `create_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:146"}, "properties": {"repobilityId": "fda7357d2da3abcb", "scanner": "scanner-primary", "fingerprint": "08dcbe7908f7d285", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-86c7ddce465e567c", "level": "error", "message": {"text": "FastAPI PATCH `update_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:179"}, "properties": {"repobilityId": "328eebc51131cdd0", "scanner": "scanner-primary", "fingerprint": "86c7ddce465e567c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-3ba840df2f84558b", "level": "error", "message": {"text": "FastAPI DELETE `cancel_purchase_request` without auth dependency \u2014 backend/app/api/procurement.py:196"}, "properties": {"repobilityId": "789768c3f4db7d15", "scanner": "scanner-primary", "fingerprint": "3ba840df2f84558b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 196}}}]}, {"ruleId": "scanner-c23b2d65e901b6cb", "level": "error", "message": {"text": "FastAPI POST `send_rfq` without auth dependency \u2014 backend/app/api/procurement.py:212"}, "properties": {"repobilityId": "ddff75830a25120c", "scanner": "scanner-primary", "fingerprint": "c23b2d65e901b6cb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-902d4f1fa6fbad33", "level": "error", "message": {"text": "FastAPI POST `create_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:295"}, "properties": {"repobilityId": "03d0ac925fc422b8", "scanner": "scanner-primary", "fingerprint": "902d4f1fa6fbad33", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 295}}}]}, {"ruleId": "scanner-13e0f7ff223b2b6a", "level": "error", "message": {"text": "FastAPI PATCH `update_supplier_contract` without auth dependency \u2014 backend/app/api/procurement.py:325"}, "properties": {"repobilityId": "4f9dc363882035c7", "scanner": "scanner-primary", "fingerprint": "13e0f7ff223b2b6a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/procurement.py"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-2c463fd026c30429", "level": "error", "message": {"text": "FastAPI PATCH `update_telegram_config` without auth dependency \u2014 backend/app/api/telegram.py:204"}, "properties": {"repobilityId": "d99bb8a11ce1a03f", "scanner": "scanner-primary", "fingerprint": "2c463fd026c30429", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/telegram.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-d2a144fce7125422", "level": "error", "message": {"text": "FastAPI POST `telegram_restart` without auth dependency \u2014 backend/app/api/telegram.py:228"}, "properties": {"repobilityId": "cbcec948376dcea5", "scanner": "scanner-primary", "fingerprint": "d2a144fce7125422", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/telegram.py"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-0d4e3433b135c4a7", "level": "error", "message": {"text": "FastAPI POST `telegram_stop` without auth dependency \u2014 backend/app/api/telegram.py:238"}, "properties": {"repobilityId": "9e8c590c27c0dd36", "scanner": "scanner-primary", "fingerprint": "0d4e3433b135c4a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/telegram.py"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-887e51b11d78328f", "level": "error", "message": {"text": "FastAPI POST `telegram_notify` without auth dependency \u2014 backend/app/api/telegram.py:245"}, "properties": {"repobilityId": "1d725b11455ae00d", "scanner": "scanner-primary", "fingerprint": "887e51b11d78328f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/telegram.py"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-33e8d60f9a7df64f", "level": "error", "message": {"text": "FastAPI POST `telegram_test` without auth dependency \u2014 backend/app/api/telegram.py:264"}, "properties": {"repobilityId": "9b8115df0d85f89d", "scanner": "scanner-primary", "fingerprint": "33e8d60f9a7df64f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/telegram.py"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-0e00cd194c8f70dc", "level": "error", "message": {"text": "FastAPI POST `publish_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:112"}, "properties": {"repobilityId": "a6ca3fda27a3bf60", "scanner": "scanner-primary", "fingerprint": "0e00cd194c8f70dc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/spec_tables.py"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-91d6cd77a2c25b69", "level": "error", "message": {"text": "FastAPI POST `patch_spec_table` without auth dependency \u2014 backend/app/api/spec_tables.py:151"}, "properties": {"repobilityId": "10d15631e87a7770", "scanner": "scanner-primary", "fingerprint": "91d6cd77a2c25b69", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/spec_tables.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-244318d8f169b8df", "level": "error", "message": {"text": "FastAPI POST `create_node` without auth dependency \u2014 backend/app/api/graph.py:47"}, "properties": {"repobilityId": "201ef37ab0cc2c0c", "scanner": "scanner-primary", "fingerprint": "244318d8f169b8df", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-7fdb473b74c4a28c", "level": "error", "message": {"text": "FastAPI POST `create_edge` without auth dependency \u2014 backend/app/api/graph.py:89"}, "properties": {"repobilityId": "908c43cac4822ef6", "scanner": "scanner-primary", "fingerprint": "7fdb473b74c4a28c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-2b81b4370fae49f2", "level": "error", "message": {"text": "FastAPI POST `create_chunk` without auth dependency \u2014 backend/app/api/graph.py:236"}, "properties": {"repobilityId": "15a413bbdff172de", "scanner": "scanner-primary", "fingerprint": "2b81b4370fae49f2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-1f8ba673dd9eaa85", "level": "error", "message": {"text": "FastAPI POST `create_evidence` without auth dependency \u2014 backend/app/api/graph.py:251"}, "properties": {"repobilityId": "e425d10a3de6d2e8", "scanner": "scanner-primary", "fingerprint": "1f8ba673dd9eaa85", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-4195ec3aca10aaa0", "level": "error", "message": {"text": "FastAPI POST `create_mention` without auth dependency \u2014 backend/app/api/graph.py:268"}, "properties": {"repobilityId": "17cd7cc54f131f18", "scanner": "scanner-primary", "fingerprint": "4195ec3aca10aaa0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 268}}}]}, {"ruleId": "scanner-7ab76beb7f957ee6", "level": "error", "message": {"text": "FastAPI POST `decide_review_item` without auth dependency \u2014 backend/app/api/graph.py:307"}, "properties": {"repobilityId": "5da749e59ec7cf3c", "scanner": "scanner-primary", "fingerprint": "7ab76beb7f957ee6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/graph.py"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-33d8c0e2223cb432", "level": "error", "message": {"text": "FastAPI POST `create_user` without auth dependency \u2014 backend/app/api/admin.py:51"}, "properties": {"repobilityId": "8548bda46f8ac032", "scanner": "scanner-primary", "fingerprint": "33d8c0e2223cb432", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-6db4811c5b501b7d", "level": "error", "message": {"text": "FastAPI POST `set_user_password` without auth dependency \u2014 backend/app/api/admin.py:123"}, "properties": {"repobilityId": "8f21bd6f4c966966", "scanner": "scanner-primary", "fingerprint": "6db4811c5b501b7d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-a7cd1a8ae73a236e", "level": "error", "message": {"text": "FastAPI PATCH `update_user` without auth dependency \u2014 backend/app/api/admin.py:220"}, "properties": {"repobilityId": "16dc27ff8f2923b7", "scanner": "scanner-primary", "fingerprint": "a7cd1a8ae73a236e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-c7ca459622c0e7ea", "level": "error", "message": {"text": "FastAPI POST `deactivate_user` without auth dependency \u2014 backend/app/api/admin.py:307"}, "properties": {"repobilityId": "62657a5e45236516", "scanner": "scanner-primary", "fingerprint": "c7ca459622c0e7ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-1c6113410f892c0f", "level": "error", "message": {"text": "FastAPI POST `create_department` without auth dependency \u2014 backend/app/api/admin.py:355"}, "properties": {"repobilityId": "794ce15ac1069f94", "scanner": "scanner-primary", "fingerprint": "1c6113410f892c0f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 355}}}]}, {"ruleId": "scanner-3a467b4fa4a44ed5", "level": "error", "message": {"text": "FastAPI PATCH `update_department` without auth dependency \u2014 backend/app/api/admin.py:390"}, "properties": {"repobilityId": "fe406e3618326f80", "scanner": "scanner-primary", "fingerprint": "3a467b4fa4a44ed5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 390}}}]}, {"ruleId": "scanner-9876ec0d25931bc3", "level": "error", "message": {"text": "FastAPI DELETE `delete_department` without auth dependency \u2014 backend/app/api/admin.py:424"}, "properties": {"repobilityId": "4a6ad54b706d9366", "scanner": "scanner-primary", "fingerprint": "9876ec0d25931bc3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-211736a27cdad0df", "level": "error", "message": {"text": "FastAPI PUT `update_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:488"}, "properties": {"repobilityId": "3db9b4769805a7e1", "scanner": "scanner-primary", "fingerprint": "211736a27cdad0df", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 488}}}]}, {"ruleId": "scanner-6ed473302ae21a1f", "level": "error", "message": {"text": "FastAPI POST `test_authentik_integration` without auth dependency \u2014 backend/app/api/admin.py:513"}, "properties": {"repobilityId": "7fe9ed7dd5c22ae5", "scanner": "scanner-primary", "fingerprint": "6ed473302ae21a1f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 513}}}]}, {"ruleId": "scanner-06c635e73446dc6e", "level": "error", "message": {"text": "FastAPI POST `create_api_key` without auth dependency \u2014 backend/app/api/admin.py:609"}, "properties": {"repobilityId": "f3e5d23aac9f795c", "scanner": "scanner-primary", "fingerprint": "06c635e73446dc6e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 609}}}]}, {"ruleId": "scanner-2e61a530dd145293", "level": "error", "message": {"text": "FastAPI DELETE `revoke_api_key` without auth dependency \u2014 backend/app/api/admin.py:642"}, "properties": {"repobilityId": "eed26d12cd8cd43a", "scanner": "scanner-primary", "fingerprint": "2e61a530dd145293", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/admin.py"}, "region": {"startLine": 642}}}]}, {"ruleId": "scanner-4c04440ffcff9168", "level": "error", "message": {"text": "FastAPI POST `create_agent_action` without auth dependency \u2014 backend/app/api/agent_actions.py:52"}, "properties": {"repobilityId": "72a7de29e17b5f95", "scanner": "scanner-primary", "fingerprint": "4c04440ffcff9168", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/agent_actions.py"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-0ddeb156cd819a42", "level": "error", "message": {"text": "FastAPI POST `set_gpu_budget` without auth dependency \u2014 backend/app/api/local_models_api.py:315"}, "properties": {"repobilityId": "d767fb98d08889c6", "scanner": "scanner-primary", "fingerprint": "0ddeb156cd819a42", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 315}}}]}, {"ruleId": "scanner-fb40931974facb00", "level": "error", "message": {"text": "FastAPI POST `unload_all_ollama` without auth dependency \u2014 backend/app/api/local_models_api.py:473"}, "properties": {"repobilityId": "51111a8d8ce7e3f2", "scanner": "scanner-primary", "fingerprint": "fb40931974facb00", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 473}}}]}, {"ruleId": "scanner-f7e2b9c802ecb1a5", "level": "error", "message": {"text": "FastAPI POST `unload_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:480"}, "properties": {"repobilityId": "a9da5d19cddaa51a", "scanner": "scanner-primary", "fingerprint": "f7e2b9c802ecb1a5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 480}}}]}, {"ruleId": "scanner-26ae5a4cbbb397ba", "level": "error", "message": {"text": "FastAPI POST `pull_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:491"}, "properties": {"repobilityId": "2e0cbaefa2ef7ed6", "scanner": "scanner-primary", "fingerprint": "26ae5a4cbbb397ba", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 491}}}]}, {"ruleId": "scanner-52ecbdead67abecf", "level": "error", "message": {"text": "FastAPI DELETE `delete_ollama_model` without auth dependency \u2014 backend/app/api/local_models_api.py:519"}, "properties": {"repobilityId": "de1c9bc7ab1dc434", "scanner": "scanner-primary", "fingerprint": "52ecbdead67abecf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 519}}}]}, {"ruleId": "scanner-ecb029ae269225f1", "level": "error", "message": {"text": "FastAPI POST `activate_provider_model` without auth dependency \u2014 backend/app/api/local_models_api.py:543"}, "properties": {"repobilityId": "0d378353f6bb183a", "scanner": "scanner-primary", "fingerprint": "ecb029ae269225f1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 543}}}]}, {"ruleId": "scanner-6d5e2f9cb966bdc3", "level": "error", "message": {"text": "FastAPI POST `start_model_download` without auth dependency \u2014 backend/app/api/local_models_api.py:578"}, "properties": {"repobilityId": "66238606314dea97", "scanner": "scanner-primary", "fingerprint": "6d5e2f9cb966bdc3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 578}}}]}, {"ruleId": "scanner-627e5052fec2ff76", "level": "error", "message": {"text": "FastAPI POST `save_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:660"}, "properties": {"repobilityId": "81704844ffbefe71", "scanner": "scanner-primary", "fingerprint": "627e5052fec2ff76", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 660}}}]}, {"ruleId": "scanner-0b275d0f52bdb339", "level": "error", "message": {"text": "FastAPI DELETE `remove_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:669"}, "properties": {"repobilityId": "3411c3831d9cc0b5", "scanner": "scanner-primary", "fingerprint": "0b275d0f52bdb339", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 669}}}]}, {"ruleId": "scanner-ce567f52a77c10d3", "level": "error", "message": {"text": "FastAPI POST `update_task_profile` without auth dependency \u2014 backend/app/api/local_models_api.py:698"}, "properties": {"repobilityId": "fe5e08b4b1d63741", "scanner": "scanner-primary", "fingerprint": "ce567f52a77c10d3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 698}}}]}, {"ruleId": "scanner-4df818ddce8307b0", "level": "error", "message": {"text": "FastAPI PUT `update_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:780"}, "properties": {"repobilityId": "5fe1eef91030724f", "scanner": "scanner-primary", "fingerprint": "4df818ddce8307b0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 780}}}]}, {"ruleId": "scanner-6d996fc14d39918c", "level": "error", "message": {"text": "FastAPI POST `reset_routing` without auth dependency \u2014 backend/app/api/local_models_api.py:795"}, "properties": {"repobilityId": "0462b49d56720d3b", "scanner": "scanner-primary", "fingerprint": "6d996fc14d39918c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 795}}}]}, {"ruleId": "scanner-12e9d27801af272b", "level": "error", "message": {"text": "FastAPI PUT `set_document_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:833"}, "properties": {"repobilityId": "9e210e5f6173fa47", "scanner": "scanner-primary", "fingerprint": "12e9d27801af272b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 833}}}]}, {"ruleId": "scanner-994b7a6693f4d753", "level": "error", "message": {"text": "FastAPI PUT `set_agent_assignment` without auth dependency \u2014 backend/app/api/local_models_api.py:844"}, "properties": {"repobilityId": "687e7847c4ea7150", "scanner": "scanner-primary", "fingerprint": "994b7a6693f4d753", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 844}}}]}, {"ruleId": "scanner-aa4eaefa7486294f", "level": "error", "message": {"text": "FastAPI PATCH `patch_provider_config` without auth dependency \u2014 backend/app/api/local_models_api.py:889"}, "properties": {"repobilityId": "b5c4203e8e7c371a", "scanner": "scanner-primary", "fingerprint": "aa4eaefa7486294f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 889}}}]}, {"ruleId": "scanner-9a2f78ec276a692e", "level": "error", "message": {"text": "FastAPI PATCH `patch_tokens` without auth dependency \u2014 backend/app/api/local_models_api.py:915"}, "properties": {"repobilityId": "59879d4c133c1a3d", "scanner": "scanner-primary", "fingerprint": "9a2f78ec276a692e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 915}}}]}, {"ruleId": "scanner-a2dc376c0ca189d9", "level": "error", "message": {"text": "FastAPI DELETE `delete_token` without auth dependency \u2014 backend/app/api/local_models_api.py:930"}, "properties": {"repobilityId": "4a42c7af96491e7c", "scanner": "scanner-primary", "fingerprint": "a2dc376c0ca189d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 930}}}]}, {"ruleId": "scanner-1e971b351074a814", "level": "error", "message": {"text": "FastAPI POST `control_provider_server` without auth dependency \u2014 backend/app/api/local_models_api.py:942"}, "properties": {"repobilityId": "8053b64b501e835c", "scanner": "scanner-primary", "fingerprint": "1e971b351074a814", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 942}}}]}, {"ruleId": "scanner-5badc4567372c04e", "level": "error", "message": {"text": "FastAPI POST `apply_hardware_preset` without auth dependency \u2014 backend/app/api/local_models_api.py:992"}, "properties": {"repobilityId": "9053ef9d181dbb81", "scanner": "scanner-primary", "fingerprint": "5badc4567372c04e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 992}}}]}, {"ruleId": "scanner-119209fe4a1dbf41", "level": "error", "message": {"text": "FastAPI POST `telemetry_reset` without auth dependency \u2014 backend/app/api/local_models_api.py:1011"}, "properties": {"repobilityId": "65d2a2da40729f4d", "scanner": "scanner-primary", "fingerprint": "119209fe4a1dbf41", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 1011}}}]}, {"ruleId": "scanner-7f880e95717260bf", "level": "error", "message": {"text": "FastAPI POST `benchmark_model` without auth dependency \u2014 backend/app/api/local_models_api.py:1028"}, "properties": {"repobilityId": "fb3e10fac036e178", "scanner": "scanner-primary", "fingerprint": "7f880e95717260bf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/local_models_api.py"}, "region": {"startLine": 1028}}}]}, {"ruleId": "scanner-695e83a5f847b031", "level": "error", "message": {"text": "FastAPI POST `pull_model` without auth dependency \u2014 backend/app/api/ai_settings.py:195"}, "properties": {"repobilityId": "2e55269aa3922059", "scanner": "scanner-primary", "fingerprint": "695e83a5f847b031", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 195}}}]}, {"ruleId": "scanner-30d49eab85a275a9", "level": "error", "message": {"text": "FastAPI DELETE `delete_model` without auth dependency \u2014 backend/app/api/ai_settings.py:221"}, "properties": {"repobilityId": "44197cc60392bb11", "scanner": "scanner-primary", "fingerprint": "30d49eab85a275a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 221}}}]}, {"ruleId": "scanner-e8f7a0105606a1a9", "level": "error", "message": {"text": "FastAPI PATCH `update_config` without auth dependency \u2014 backend/app/api/ai_settings.py:324"}, "properties": {"repobilityId": "b9220e8df3c5c5df", "scanner": "scanner-primary", "fingerprint": "e8f7a0105606a1a9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 324}}}]}, {"ruleId": "scanner-8202f331f74d54da", "level": "error", "message": {"text": "FastAPI PATCH `patch_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:361"}, "properties": {"repobilityId": "733171247caf8a48", "scanner": "scanner-primary", "fingerprint": "8202f331f74d54da", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 361}}}]}, {"ruleId": "scanner-a7a1bb353fba591c", "level": "error", "message": {"text": "FastAPI POST `apply_stable_local_agent_preset` without auth dependency \u2014 backend/app/api/ai_settings.py:398"}, "properties": {"repobilityId": "5c691f79ce563e81", "scanner": "scanner-primary", "fingerprint": "a7a1bb353fba591c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 398}}}]}, {"ruleId": "scanner-9718f326ee9c91a6", "level": "error", "message": {"text": "FastAPI POST `reset_agent_config` without auth dependency \u2014 backend/app/api/ai_settings.py:460"}, "properties": {"repobilityId": "e5a4a9be24e2840f", "scanner": "scanner-primary", "fingerprint": "9718f326ee9c91a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/ai_settings.py"}, "region": {"startLine": 460}}}]}, {"ruleId": "scanner-7c6e591b0c6c86de", "level": "error", "message": {"text": "FastAPI POST `create_resource` without auth dependency \u2014 backend/app/api/technology.py:111"}, "properties": {"repobilityId": "e615a6da10da063d", "scanner": "scanner-primary", "fingerprint": "7c6e591b0c6c86de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-efe41460c1114f8b", "level": "error", "message": {"text": "FastAPI POST `create_operation_template` without auth dependency \u2014 backend/app/api/technology.py:161"}, "properties": {"repobilityId": "8d588434426d65ce", "scanner": "scanner-primary", "fingerprint": "efe41460c1114f8b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-a839de91f018d91c", "level": "error", "message": {"text": "FastAPI POST `create_process_plan` without auth dependency \u2014 backend/app/api/technology.py:206"}, "properties": {"repobilityId": "e5779320d17344ef", "scanner": "scanner-primary", "fingerprint": "a839de91f018d91c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-d1177299012d6e0c", "level": "error", "message": {"text": "FastAPI POST `draft_process_plan_from_document` without auth dependency \u2014 backend/app/api/technology.py:244"}, "properties": {"repobilityId": "0b03aff8b7193e8d", "scanner": "scanner-primary", "fingerprint": "d1177299012d6e0c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-ff20e6a2913e534c", "level": "error", "message": {"text": "FastAPI POST `approve_process_plan` without auth dependency \u2014 backend/app/api/technology.py:574"}, "properties": {"repobilityId": "72d2a7a38e7926ee", "scanner": "scanner-primary", "fingerprint": "ff20e6a2913e534c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 574}}}]}, {"ruleId": "scanner-a9a2f9077cff4504", "level": "error", "message": {"text": "FastAPI POST `validate_process_plan` without auth dependency \u2014 backend/app/api/technology.py:615"}, "properties": {"repobilityId": "f6688ffef7362fd4", "scanner": "scanner-primary", "fingerprint": "a9a2f9077cff4504", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 615}}}]}, {"ruleId": "scanner-010c0ea98c966ba5", "level": "error", "message": {"text": "FastAPI POST `estimate_process_plan_norms` without auth dependency \u2014 backend/app/api/technology.py:659"}, "properties": {"repobilityId": "9bce7f789693d3a3", "scanner": "scanner-primary", "fingerprint": "010c0ea98c966ba5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 659}}}]}, {"ruleId": "scanner-077f5c53b56e00de", "level": "error", "message": {"text": "FastAPI POST `add_operation` without auth dependency \u2014 backend/app/api/technology.py:719"}, "properties": {"repobilityId": "c6a36dc5aa615e56", "scanner": "scanner-primary", "fingerprint": "077f5c53b56e00de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 719}}}]}, {"ruleId": "scanner-27ff3b28b540ba7a", "level": "error", "message": {"text": "FastAPI POST `create_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:750"}, "properties": {"repobilityId": "8f72c2e869677a1c", "scanner": "scanner-primary", "fingerprint": "27ff3b28b540ba7a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 750}}}]}, {"ruleId": "scanner-c410976bbf59c39c", "level": "error", "message": {"text": "FastAPI POST `approve_norm_estimate` without auth dependency \u2014 backend/app/api/technology.py:782"}, "properties": {"repobilityId": "ec039dbd8d7dcd13", "scanner": "scanner-primary", "fingerprint": "c410976bbf59c39c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 782}}}]}, {"ruleId": "scanner-a22f4a07d0cb6418", "level": "error", "message": {"text": "FastAPI POST `record_correction` without auth dependency \u2014 backend/app/api/technology.py:811"}, "properties": {"repobilityId": "d3c7c6e951c83dff", "scanner": "scanner-primary", "fingerprint": "a22f4a07d0cb6418", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 811}}}]}, {"ruleId": "scanner-cb5a9e68f3f6baf4", "level": "error", "message": {"text": "FastAPI POST `create_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:895"}, "properties": {"repobilityId": "c056dc259aad141f", "scanner": "scanner-primary", "fingerprint": "cb5a9e68f3f6baf4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 895}}}]}, {"ruleId": "scanner-8433b5d8e1d8ce2e", "level": "error", "message": {"text": "FastAPI POST `activate_learning_rule` without auth dependency \u2014 backend/app/api/technology.py:916"}, "properties": {"repobilityId": "fecdba9ed7db940c", "scanner": "scanner-primary", "fingerprint": "8433b5d8e1d8ce2e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 916}}}]}, {"ruleId": "scanner-df60c17201420afb", "level": "error", "message": {"text": "FastAPI POST `generate_tp_from_drawing` without auth dependency \u2014 backend/app/api/technology.py:1364"}, "properties": {"repobilityId": "4ba9a209ed14b7f2", "scanner": "scanner-primary", "fingerprint": "df60c17201420afb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1364}}}]}, {"ruleId": "scanner-185d008332c54f55", "level": "error", "message": {"text": "FastAPI POST `analyze_surfaces` without auth dependency \u2014 backend/app/api/technology.py:1426"}, "properties": {"repobilityId": "cd682c1a3f092061", "scanner": "scanner-primary", "fingerprint": "185d008332c54f55", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1426}}}]}, {"ruleId": "scanner-87188f588d3324a8", "level": "error", "message": {"text": "FastAPI POST `select_equipment_for_op` without auth dependency \u2014 backend/app/api/technology.py:1468"}, "properties": {"repobilityId": "3a578ab33e57c9df", "scanner": "scanner-primary", "fingerprint": "87188f588d3324a8", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1468}}}]}, {"ruleId": "scanner-05f59fafb0309123", "level": "error", "message": {"text": "FastAPI POST `calculate_cutting_params` without auth dependency \u2014 backend/app/api/technology.py:1500"}, "properties": {"repobilityId": "dc9e084acc5b8531", "scanner": "scanner-primary", "fingerprint": "05f59fafb0309123", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1500}}}]}, {"ruleId": "scanner-2c55ee5c34c61273", "level": "error", "message": {"text": "FastAPI POST `run_normcontrol` without auth dependency \u2014 backend/app/api/technology.py:1533"}, "properties": {"repobilityId": "b2f68b3668976f39", "scanner": "scanner-primary", "fingerprint": "2c55ee5c34c61273", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1533}}}]}, {"ruleId": "scanner-5e85b199d865407e", "level": "error", "message": {"text": "FastAPI POST `resolve_normcontrol_check` without auth dependency \u2014 backend/app/api/technology.py:1548"}, "properties": {"repobilityId": "a0ade14003fa15d1", "scanner": "scanner-primary", "fingerprint": "5e85b199d865407e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1548}}}]}, {"ruleId": "scanner-747aac449ff63cf7", "level": "error", "message": {"text": "FastAPI POST `set_blank_spec` without auth dependency \u2014 backend/app/api/technology.py:1572"}, "properties": {"repobilityId": "d0c52978d0e4dd34", "scanner": "scanner-primary", "fingerprint": "747aac449ff63cf7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1572}}}]}, {"ruleId": "scanner-54fa5acc27596a15", "level": "error", "message": {"text": "FastAPI POST `export_gost_forms` without auth dependency \u2014 backend/app/api/technology.py:1653"}, "properties": {"repobilityId": "b9cf66a3e625566d", "scanner": "scanner-primary", "fingerprint": "54fa5acc27596a15", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/technology.py"}, "region": {"startLine": 1653}}}]}, {"ruleId": "scanner-0c279d1b4c07b37d", "level": "error", "message": {"text": "FastAPI POST `bootstrap_admin` without auth dependency \u2014 backend/app/api/setup.py:29"}, "properties": {"repobilityId": "abcf2b7874ace69d", "scanner": "scanner-primary", "fingerprint": "0c279d1b4c07b37d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/setup.py"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-131cfa051411f0f9", "level": "error", "message": {"text": "FastAPI POST `verify_workspace_block` without auth dependency \u2014 backend/app/api/workspace.py:111"}, "properties": {"repobilityId": "728acfa9b954d0bb", "scanner": "scanner-primary", "fingerprint": "131cfa051411f0f9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-18fc097d2b3b6caf", "level": "error", "message": {"text": "FastAPI DELETE `delete_workspace_block_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:135"}, "properties": {"repobilityId": "e83a485398342d9e", "scanner": "scanner-primary", "fingerprint": "18fc097d2b3b6caf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-85d45b1495810363", "level": "error", "message": {"text": "FastAPI DELETE `clear_workspace_blocks_endpoint` without auth dependency \u2014 backend/app/api/workspace.py:143"}, "properties": {"repobilityId": "2e1c34128c943a4c", "scanner": "scanner-primary", "fingerprint": "85d45b1495810363", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-f1c101f089aa8d94", "level": "error", "message": {"text": "FastAPI POST `publish_invoice_table` without auth dependency \u2014 backend/app/api/workspace.py:151"}, "properties": {"repobilityId": "1078dff82bc3791b", "scanner": "scanner-primary", "fingerprint": "f1c101f089aa8d94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-48909ca04253dd94", "level": "error", "message": {"text": "FastAPI POST `publish_invoice_items_table` without auth dependency \u2014 backend/app/api/workspace.py:200"}, "properties": {"repobilityId": "9b2abbd0bc9961b5", "scanner": "scanner-primary", "fingerprint": "48909ca04253dd94", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-18df23969eb853b1", "level": "error", "message": {"text": "FastAPI POST `publish_invoice_items_grouped_table` without auth dependency \u2014 backend/app/api/workspace.py:283"}, "properties": {"repobilityId": "8f838c235a9746ee", "scanner": "scanner-primary", "fingerprint": "18df23969eb853b1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 283}}}]}, {"ruleId": "scanner-b529ee5f0d334812", "level": "error", "message": {"text": "FastAPI POST `publish_invoice_items_by_supplier_table` without auth dependency \u2014 backend/app/api/workspace.py:340"}, "properties": {"repobilityId": "b7c801c6f71228d8", "scanner": "scanner-primary", "fingerprint": "b529ee5f0d334812", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-cc85a5c2d20a558b", "level": "error", "message": {"text": "FastAPI POST `publish_invoice_pivot_table` without auth dependency \u2014 backend/app/api/workspace.py:539"}, "properties": {"repobilityId": "3138bb193c25bf08", "scanner": "scanner-primary", "fingerprint": "cc85a5c2d20a558b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 539}}}]}, {"ruleId": "scanner-b24a4124b6520313", "level": "error", "message": {"text": "FastAPI POST `publish_sql_table` without auth dependency \u2014 backend/app/api/workspace.py:662"}, "properties": {"repobilityId": "7ef470af908391bb", "scanner": "scanner-primary", "fingerprint": "b24a4124b6520313", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 662}}}]}, {"ruleId": "scanner-177b35fab12fd832", "level": "error", "message": {"text": "FastAPI POST `publish_general_block` without auth dependency \u2014 backend/app/api/workspace.py:724"}, "properties": {"repobilityId": "b73470f4d2f6a4d0", "scanner": "scanner-primary", "fingerprint": "177b35fab12fd832", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/workspace.py"}, "region": {"startLine": 724}}}]}, {"ruleId": "scanner-0be01edf810e7a7d", "level": "error", "message": {"text": "FastAPI POST `export_invoice_excel` without auth dependency \u2014 backend/app/api/export.py:42"}, "properties": {"repobilityId": "fbcc32ab1ead3744", "scanner": "scanner-primary", "fingerprint": "0be01edf810e7a7d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/export.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-e995c4e1c52a2ba5", "level": "error", "message": {"text": "FastAPI POST `export_invoice_1c` without auth dependency \u2014 backend/app/api/export.py:81"}, "properties": {"repobilityId": "f59d498b97245651", "scanner": "scanner-primary", "fingerprint": "e995c4e1c52a2ba5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/export.py"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-9d3396c4cd4d84f5", "level": "error", "message": {"text": "FastAPI POST `search_documents` without auth dependency \u2014 backend/app/api/search.py:67"}, "properties": {"repobilityId": "1ad7d8e421055afe", "scanner": "scanner-primary", "fingerprint": "9d3396c4cd4d84f5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/search.py"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-5b8cd629a16076d4", "level": "error", "message": {"text": "FastAPI POST `nl_to_query` without auth dependency \u2014 backend/app/api/search.py:141"}, "properties": {"repobilityId": "5b3d99902c9141cf", "scanner": "scanner-primary", "fingerprint": "5b8cd629a16076d4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/search.py"}, "region": {"startLine": 141}}}]}, {"ruleId": "scanner-dba68524f06e11d6", "level": "error", "message": {"text": "FastAPI POST `hybrid_search` without auth dependency \u2014 backend/app/api/search.py:215"}, "properties": {"repobilityId": "995d576c212b1f35", "scanner": "scanner-primary", "fingerprint": "dba68524f06e11d6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/search.py"}, "region": {"startLine": 215}}}]}, {"ruleId": "scanner-1643ab68975f894b", "level": "error", "message": {"text": "FastAPI POST `create_saved_query` without auth dependency \u2014 backend/app/api/search.py:344"}, "properties": {"repobilityId": "974de05051461579", "scanner": "scanner-primary", "fingerprint": "1643ab68975f894b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/search.py"}, "region": {"startLine": 344}}}]}, {"ruleId": "scanner-5b601c008a2b2659", "level": "error", "message": {"text": "FastAPI DELETE `delete_saved_query` without auth dependency \u2014 backend/app/api/search.py:364"}, "properties": {"repobilityId": "541a474bf664174f", "scanner": "scanner-primary", "fingerprint": "5b601c008a2b2659", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/search.py"}, "region": {"startLine": 364}}}]}, {"ruleId": "scanner-36bd2344c5c8124b", "level": "error", "message": {"text": "FastAPI POST `create_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:125"}, "properties": {"repobilityId": "765b899d0b0d0eb3", "scanner": "scanner-primary", "fingerprint": "36bd2344c5c8124b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/mailbox.py"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-ec545b3aceaea959", "level": "error", "message": {"text": "FastAPI PATCH `update_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:189"}, "properties": {"repobilityId": "d2809f8b83d22d9c", "scanner": "scanner-primary", "fingerprint": "ec545b3aceaea959", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/mailbox.py"}, "region": {"startLine": 189}}}]}, {"ruleId": "scanner-fc2aac5ed6247d90", "level": "error", "message": {"text": "FastAPI DELETE `delete_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:213"}, "properties": {"repobilityId": "81f43af133287700", "scanner": "scanner-primary", "fingerprint": "fc2aac5ed6247d90", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/mailbox.py"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-cfc29caad5f0c6d4", "level": "error", "message": {"text": "FastAPI POST `test_mailbox` without auth dependency \u2014 backend/app/api/mailbox.py:226"}, "properties": {"repobilityId": "62e66687dc200d34", "scanner": "scanner-primary", "fingerprint": "cfc29caad5f0c6d4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/mailbox.py"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-cdab1c77ce2f2239", "level": "error", "message": {"text": "FastAPI POST `publish_to_canvas` without auth dependency \u2014 backend/app/api/canvas.py:64"}, "properties": {"repobilityId": "e9d844d9249a38e8", "scanner": "scanner-primary", "fingerprint": "cdab1c77ce2f2239", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/canvas.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-79779b279d3318a2", "level": "error", "message": {"text": "FastAPI POST `upload_drawing` without auth dependency \u2014 backend/app/api/drawings.py:70"}, "properties": {"repobilityId": "eaab997aeba0d1eb", "scanner": "scanner-primary", "fingerprint": "79779b279d3318a2", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-eb65b662336a14b0", "level": "error", "message": {"text": "FastAPI PATCH `update_drawing` without auth dependency \u2014 backend/app/api/drawings.py:181"}, "properties": {"repobilityId": "b6bf694d24d865cb", "scanner": "scanner-primary", "fingerprint": "eb65b662336a14b0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-3edcfdd01e43e590", "level": "error", "message": {"text": "FastAPI DELETE `bulk_delete_drawings` without auth dependency \u2014 backend/app/api/drawings.py:204"}, "properties": {"repobilityId": "74a58ade4a615fa2", "scanner": "scanner-primary", "fingerprint": "3edcfdd01e43e590", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-e5cc9965a6e5855c", "level": "error", "message": {"text": "FastAPI DELETE `delete_drawing` without auth dependency \u2014 backend/app/api/drawings.py:274"}, "properties": {"repobilityId": "afa26b1c81cd782a", "scanner": "scanner-primary", "fingerprint": "e5cc9965a6e5855c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-22202552db1e55de", "level": "error", "message": {"text": "FastAPI POST `reanalyze_drawing` without auth dependency \u2014 backend/app/api/drawings.py:339"}, "properties": {"repobilityId": "3394068d6f3ab885", "scanner": "scanner-primary", "fingerprint": "22202552db1e55de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-2db571e8bcb7f624", "level": "error", "message": {"text": "FastAPI POST `bulk_reanalyze_drawings` without auth dependency \u2014 backend/app/api/drawings.py:380"}, "properties": {"repobilityId": "87da1844ce39e98f", "scanner": "scanner-primary", "fingerprint": "2db571e8bcb7f624", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 380}}}]}, {"ruleId": "scanner-36d9b895206d4518", "level": "error", "message": {"text": "FastAPI PATCH `set_drawing_status` without auth dependency \u2014 backend/app/api/drawings.py:451"}, "properties": {"repobilityId": "049e334c7af3c1d7", "scanner": "scanner-primary", "fingerprint": "36d9b895206d4518", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 451}}}]}, {"ruleId": "scanner-a980fe48ec6ef1f0", "level": "error", "message": {"text": "FastAPI POST `correct_drawing_feature` without auth dependency \u2014 backend/app/api/drawings.py:606"}, "properties": {"repobilityId": "2d24659dda8d9b0e", "scanner": "scanner-primary", "fingerprint": "a980fe48ec6ef1f0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 606}}}]}, {"ruleId": "scanner-f41b0d196e196218", "level": "error", "message": {"text": "FastAPI POST `create_feature` without auth dependency \u2014 backend/app/api/drawings.py:784"}, "properties": {"repobilityId": "b4b150c3c33c3a59", "scanner": "scanner-primary", "fingerprint": "f41b0d196e196218", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 784}}}]}, {"ruleId": "scanner-5ece21caca80b801", "level": "error", "message": {"text": "FastAPI PATCH `update_feature` without auth dependency \u2014 backend/app/api/drawings.py:850"}, "properties": {"repobilityId": "8fadaf2f7dd6f127", "scanner": "scanner-primary", "fingerprint": "5ece21caca80b801", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 850}}}]}, {"ruleId": "scanner-19b13eee39a9aebe", "level": "error", "message": {"text": "FastAPI POST `review_feature` without auth dependency \u2014 backend/app/api/drawings.py:885"}, "properties": {"repobilityId": "0bf549a2ea279883", "scanner": "scanner-primary", "fingerprint": "19b13eee39a9aebe", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 885}}}]}, {"ruleId": "scanner-79cead3df9926408", "level": "error", "message": {"text": "FastAPI DELETE `delete_feature` without auth dependency \u2014 backend/app/api/drawings.py:917"}, "properties": {"repobilityId": "949818e5c2cc1d7a", "scanner": "scanner-primary", "fingerprint": "79cead3df9926408", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 917}}}]}, {"ruleId": "scanner-c0d1b9c391f5814b", "level": "error", "message": {"text": "FastAPI PUT `update_contours` without auth dependency \u2014 backend/app/api/drawings.py:971"}, "properties": {"repobilityId": "2de3aaf096e96884", "scanner": "scanner-primary", "fingerprint": "c0d1b9c391f5814b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 971}}}]}, {"ruleId": "scanner-2efe4d537aa7856c", "level": "error", "message": {"text": "FastAPI POST `bind_tool` without auth dependency \u2014 backend/app/api/drawings.py:1048"}, "properties": {"repobilityId": "ac890dbc7916b57a", "scanner": "scanner-primary", "fingerprint": "2efe4d537aa7856c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 1048}}}]}, {"ruleId": "scanner-86625832490ba0dc", "level": "error", "message": {"text": "FastAPI PATCH `update_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1108"}, "properties": {"repobilityId": "5f18120b77f5c2e6", "scanner": "scanner-primary", "fingerprint": "86625832490ba0dc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 1108}}}]}, {"ruleId": "scanner-f735d013c92b135f", "level": "error", "message": {"text": "FastAPI DELETE `remove_tool_binding` without auth dependency \u2014 backend/app/api/drawings.py:1134"}, "properties": {"repobilityId": "17164c21e5e691fc", "scanner": "scanner-primary", "fingerprint": "f735d013c92b135f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/drawings.py"}, "region": {"startLine": 1134}}}]}, {"ruleId": "scanner-93053af12eea6630", "level": "error", "message": {"text": "FastAPI POST `ingest_document` without auth dependency \u2014 backend/app/api/documents.py:469"}, "properties": {"repobilityId": "ab8b555d67e08bfc", "scanner": "scanner-primary", "fingerprint": "93053af12eea6630", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 469}}}]}, {"ruleId": "scanner-d790bf086316a1a1", "level": "error", "message": {"text": "FastAPI POST `batch_process_documents` without auth dependency \u2014 backend/app/api/documents.py:1088"}, "properties": {"repobilityId": "1d94dcc0d6a40a63", "scanner": "scanner-primary", "fingerprint": "d790bf086316a1a1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1088}}}]}, {"ruleId": "scanner-21112c948dc139ac", "level": "error", "message": {"text": "FastAPI POST `batch_classify_documents` without auth dependency \u2014 backend/app/api/documents.py:1131"}, "properties": {"repobilityId": "8326d557d8dd9206", "scanner": "scanner-primary", "fingerprint": "21112c948dc139ac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1131}}}]}, {"ruleId": "scanner-638b33e8249a197a", "level": "error", "message": {"text": "FastAPI POST `batch_reindex_document_embeddings` without auth dependency \u2014 backend/app/api/documents.py:1165"}, "properties": {"repobilityId": "691bca5dae9e68bf", "scanner": "scanner-primary", "fingerprint": "638b33e8249a197a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1165}}}]}, {"ruleId": "scanner-eacfadeab75e0f26", "level": "error", "message": {"text": "FastAPI POST `batch_rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1190"}, "properties": {"repobilityId": "ad94aa5cf9480322", "scanner": "scanner-primary", "fingerprint": "eacfadeab75e0f26", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1190}}}]}, {"ruleId": "scanner-787412b4fa8ba31e", "level": "error", "message": {"text": "FastAPI POST `batch_run_ntd_checks` without auth dependency \u2014 backend/app/api/documents.py:1228"}, "properties": {"repobilityId": "10a1b54eccf2c560", "scanner": "scanner-primary", "fingerprint": "787412b4fa8ba31e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1228}}}]}, {"ruleId": "scanner-c76871c326a1daac", "level": "error", "message": {"text": "FastAPI PATCH `update_document` without auth dependency \u2014 backend/app/api/documents.py:1315"}, "properties": {"repobilityId": "2651d42112d09555", "scanner": "scanner-primary", "fingerprint": "c76871c326a1daac", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1315}}}]}, {"ruleId": "scanner-ad1ae4d379573925", "level": "error", "message": {"text": "FastAPI POST `link_document` without auth dependency \u2014 backend/app/api/documents.py:1370"}, "properties": {"repobilityId": "aa65ff7ed7e7b556", "scanner": "scanner-primary", "fingerprint": "ad1ae4d379573925", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1370}}}]}, {"ruleId": "scanner-b75260ea41b6dc7b", "level": "error", "message": {"text": "FastAPI PATCH `update_document_link` without auth dependency \u2014 backend/app/api/documents.py:1405"}, "properties": {"repobilityId": "d2f8b20e089824b6", "scanner": "scanner-primary", "fingerprint": "b75260ea41b6dc7b", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1405}}}]}, {"ruleId": "scanner-f7f5d15ca9dba42c", "level": "error", "message": {"text": "FastAPI DELETE `delete_document_link` without auth dependency \u2014 backend/app/api/documents.py:1439"}, "properties": {"repobilityId": "01d55637e79ca07e", "scanner": "scanner-primary", "fingerprint": "f7f5d15ca9dba42c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1439}}}]}, {"ruleId": "scanner-3d19415690423a11", "level": "error", "message": {"text": "FastAPI POST `classify_document` without auth dependency \u2014 backend/app/api/documents.py:1558"}, "properties": {"repobilityId": "7e7f1abe2fa7f367", "scanner": "scanner-primary", "fingerprint": "3d19415690423a11", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1558}}}]}, {"ruleId": "scanner-2b64b731660deab3", "level": "error", "message": {"text": "FastAPI POST `extract_document` without auth dependency \u2014 backend/app/api/documents.py:1615"}, "properties": {"repobilityId": "bd5ec0bf2dc5b1a5", "scanner": "scanner-primary", "fingerprint": "2b64b731660deab3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1615}}}]}, {"ruleId": "scanner-025e2f197537a2fb", "level": "error", "message": {"text": "FastAPI POST `rebuild_document_memory` without auth dependency \u2014 backend/app/api/documents.py:1666"}, "properties": {"repobilityId": "4b3d1f09fbe60312", "scanner": "scanner-primary", "fingerprint": "025e2f197537a2fb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1666}}}]}, {"ruleId": "scanner-b12eca919f1b1581", "level": "error", "message": {"text": "FastAPI DELETE `delete_document_hard` without auth dependency \u2014 backend/app/api/documents.py:1717"}, "properties": {"repobilityId": "72e0dd3dab887cf1", "scanner": "scanner-primary", "fingerprint": "b12eca919f1b1581", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1717}}}]}, {"ruleId": "scanner-06ada470d97383ea", "level": "error", "message": {"text": "FastAPI POST `correct_extraction_field` without auth dependency \u2014 backend/app/api/documents.py:1734"}, "properties": {"repobilityId": "5106b6b2e2fff737", "scanner": "scanner-primary", "fingerprint": "06ada470d97383ea", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1734}}}]}, {"ruleId": "scanner-5508c0eeda0f18a5", "level": "error", "message": {"text": "FastAPI POST `summarize_document` without auth dependency \u2014 backend/app/api/documents.py:1804"}, "properties": {"repobilityId": "c7c5d2d0ae5b8936", "scanner": "scanner-primary", "fingerprint": "5508c0eeda0f18a5", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1804}}}]}, {"ruleId": "scanner-7e63f642e5a8897c", "level": "error", "message": {"text": "FastAPI POST `snooze_document` without auth dependency \u2014 backend/app/api/documents.py:1874"}, "properties": {"repobilityId": "574448a55161150e", "scanner": "scanner-primary", "fingerprint": "7e63f642e5a8897c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/documents.py"}, "region": {"startLine": 1874}}}]}, {"ruleId": "scanner-8e04bfa2f28d2502", "level": "error", "message": {"text": "FastAPI POST `fetch_new_emails` without auth dependency \u2014 backend/app/api/email.py:39"}, "properties": {"repobilityId": "31a10ff4852875e8", "scanner": "scanner-primary", "fingerprint": "8e04bfa2f28d2502", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-cf97b630e920362e", "level": "error", "message": {"text": "FastAPI POST `search_emails` without auth dependency \u2014 backend/app/api/email.py:64"}, "properties": {"repobilityId": "d1c4ec012a525e40", "scanner": "scanner-primary", "fingerprint": "cf97b630e920362e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-1e2292e8e5721984", "level": "error", "message": {"text": "FastAPI POST `create_draft` without auth dependency \u2014 backend/app/api/email.py:148"}, "properties": {"repobilityId": "05721fb13e16896f", "scanner": "scanner-primary", "fingerprint": "1e2292e8e5721984", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-7f8a14e5819275eb", "level": "error", "message": {"text": "FastAPI POST `analyze_style` without auth dependency \u2014 backend/app/api/email.py:244"}, "properties": {"repobilityId": "09255b9f93fc8f4a", "scanner": "scanner-primary", "fingerprint": "7f8a14e5819275eb", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-a02051bd45644ed3", "level": "error", "message": {"text": "FastAPI POST `risk_check` without auth dependency \u2014 backend/app/api/email.py:307"}, "properties": {"repobilityId": "06506553f57070f1", "scanner": "scanner-primary", "fingerprint": "a02051bd45644ed3", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-0a0c4627fe23c719", "level": "error", "message": {"text": "FastAPI POST `send_email` without auth dependency \u2014 backend/app/api/email.py:404"}, "properties": {"repobilityId": "19de806cebad87c0", "scanner": "scanner-primary", "fingerprint": "0a0c4627fe23c719", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-9a9a13fa231844f1", "level": "error", "message": {"text": "FastAPI POST `suggest_template` without auth dependency \u2014 backend/app/api/email.py:484"}, "properties": {"repobilityId": "dc5db1ac62d01940", "scanner": "scanner-primary", "fingerprint": "9a9a13fa231844f1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 484}}}]}, {"ruleId": "scanner-59d4d0806657ca40", "level": "error", "message": {"text": "FastAPI DELETE `bulk_delete_messages` without auth dependency \u2014 backend/app/api/email.py:508"}, "properties": {"repobilityId": "4be8558efb9cec1d", "scanner": "scanner-primary", "fingerprint": "59d4d0806657ca40", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 508}}}]}, {"ruleId": "scanner-988ee4f5fadaa517", "level": "error", "message": {"text": "FastAPI DELETE `delete_message` without auth dependency \u2014 backend/app/api/email.py:530"}, "properties": {"repobilityId": "0987fbb8fcfe0011", "scanner": "scanner-primary", "fingerprint": "988ee4f5fadaa517", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 530}}}]}, {"ruleId": "scanner-babafb9b82a9d10d", "level": "error", "message": {"text": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/app/api/email.py:547"}, "properties": {"repobilityId": "08a921aa7c799493", "scanner": "scanner-primary", "fingerprint": "babafb9b82a9d10d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/email.py"}, "region": {"startLine": 547}}}]}, {"ruleId": "scanner-1d31d0aab4884701", "level": "error", "message": {"text": "FastAPI POST `check_duplicate` without auth dependency \u2014 backend/app/api/suppliers.py:161"}, "properties": {"repobilityId": "1dd6a349e7d372ff", "scanner": "scanner-primary", "fingerprint": "1d31d0aab4884701", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 161}}}]}, {"ruleId": "scanner-a1aae62008a768db", "level": "error", "message": {"text": "FastAPI POST `create_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:174"}, "properties": {"repobilityId": "b043dddc4ff90a3a", "scanner": "scanner-primary", "fingerprint": "a1aae62008a768db", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-fb4c119436f5390a", "level": "error", "message": {"text": "FastAPI POST `search_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:311"}, "properties": {"repobilityId": "ee9565a260339a41", "scanner": "scanner-primary", "fingerprint": "fb4c119436f5390a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-cd5326662362d5a6", "level": "error", "message": {"text": "FastAPI POST `check_requisites` without auth dependency \u2014 backend/app/api/suppliers.py:405"}, "properties": {"repobilityId": "e48366ccb291379a", "scanner": "scanner-primary", "fingerprint": "cd5326662362d5a6", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 405}}}]}, {"ruleId": "scanner-c7223e7d4c8679df", "level": "error", "message": {"text": "FastAPI PATCH `update_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:643"}, "properties": {"repobilityId": "7eadfad9e127b253", "scanner": "scanner-primary", "fingerprint": "c7223e7d4c8679df", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 643}}}]}, {"ruleId": "scanner-0e342bcb795eb1de", "level": "error", "message": {"text": "FastAPI DELETE `bulk_delete_suppliers` without auth dependency \u2014 backend/app/api/suppliers.py:790"}, "properties": {"repobilityId": "b5cbfe82b810b543", "scanner": "scanner-primary", "fingerprint": "0e342bcb795eb1de", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 790}}}]}, {"ruleId": "scanner-5a6aa1724ff77f85", "level": "error", "message": {"text": "FastAPI DELETE `delete_supplier` without auth dependency \u2014 backend/app/api/suppliers.py:818"}, "properties": {"repobilityId": "c7781d0aff82d1c4", "scanner": "scanner-primary", "fingerprint": "5a6aa1724ff77f85", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/suppliers.py"}, "region": {"startLine": 818}}}]}, {"ruleId": "scanner-1316e46ad853a0e1", "level": "error", "message": {"text": "FastAPI POST `request_approval` without auth dependency \u2014 backend/app/api/approvals.py:111"}, "properties": {"repobilityId": "7e78bfa5e32bab1a", "scanner": "scanner-primary", "fingerprint": "1316e46ad853a0e1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/approvals.py"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-272fdbba3d128cdf", "level": "error", "message": {"text": "FastAPI POST `create_approval_chain` without auth dependency \u2014 backend/app/api/approvals.py:224"}, "properties": {"repobilityId": "8fe353c0f772772e", "scanner": "scanner-primary", "fingerprint": "272fdbba3d128cdf", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/app/api/approvals.py"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-4ae8e47fb2f243a8", "level": "note", "message": {"text": "Unused endpoint: POST /run/{skill_name}"}, "properties": {"repobilityId": "d17175116a0ff08d", "scanner": "scanner-primary", "fingerprint": "4ae8e47fb2f243a8", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-496861c0d4b936eb", "level": "note", "message": {"text": "Unused endpoint: POST /smoke"}, "properties": {"repobilityId": "4b5acbab7cfd329d", "scanner": "scanner-primary", "fingerprint": "496861c0d4b936eb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-574e0277428b2c6c", "level": "note", "message": {"text": "Unused endpoint: GET /api/tasks/{task_id}"}, "properties": {"repobilityId": "f0e19b834665a9e5", "scanner": "scanner-primary", "fingerprint": "574e0277428b2c6c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-30ebd8b02a460b20", "level": "note", "message": {"text": "Unused endpoint: GET /api/metrics"}, "properties": {"repobilityId": "40b76e9a4adaa288", "scanner": "scanner-primary", "fingerprint": "30ebd8b02a460b20", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-988fb34b62c4c25c", "level": "note", "message": {"text": "Unused endpoint: GET /api/notifications"}, "properties": {"repobilityId": "cfd624aa3d39c171", "scanner": "scanner-primary", "fingerprint": "988fb34b62c4c25c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1902f42e632e1fc7", "level": "note", "message": {"text": "Unused endpoint: GET /api/notifications/unread-count"}, "properties": {"repobilityId": "4bbfba9f27c0ffee", "scanner": "scanner-primary", "fingerprint": "1902f42e632e1fc7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c77d5d99c6c2931b", "level": "note", "message": {"text": "Unused endpoint: POST /api/notifications/{notification_id}/read"}, "properties": {"repobilityId": "a9e596ede5f985ff", "scanner": "scanner-primary", "fingerprint": "c77d5d99c6c2931b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1aa4e33f42379323", "level": "note", "message": {"text": "Unused endpoint: POST /api/notifications/read-all"}, "properties": {"repobilityId": "76278b124bf4c1a3", "scanner": "scanner-primary", "fingerprint": "1aa4e33f42379323", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5139115071e5f5ee", "level": "note", "message": {"text": "Unused endpoint: POST /api/workspace/blocks/{block_id}/export"}, "properties": {"repobilityId": "081f25d3166ae99b", "scanner": "scanner-primary", "fingerprint": "5139115071e5f5ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-17534e44084f45be", "level": "note", "message": {"text": "Unused endpoint: POST /api/calendar/events"}, "properties": {"repobilityId": "666db76efc72c029", "scanner": "scanner-primary", "fingerprint": "17534e44084f45be", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98c3b71c4d647c62", "level": "note", "message": {"text": "Unused endpoint: GET /api/calendar/events"}, "properties": {"repobilityId": "68492b4c31a8f4db", "scanner": "scanner-primary", "fingerprint": "98c3b71c4d647c62", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c03a8ce6b1217172", "level": "note", "message": {"text": "Unused endpoint: POST /api/calendar/extract-dates"}, "properties": {"repobilityId": "0b3a2d69ab0d72f2", "scanner": "scanner-primary", "fingerprint": "c03a8ce6b1217172", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51b0fa87010577e0", "level": "note", "message": {"text": "Unused endpoint: GET /api/calendar/upcoming"}, "properties": {"repobilityId": "c7b79103d70cfc56", "scanner": "scanner-primary", "fingerprint": "51b0fa87010577e0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-db562ed3ad65b09b", "level": "note", "message": {"text": "Unused endpoint: POST /api/calendar/reminders"}, "properties": {"repobilityId": "4924b05d4b26e753", "scanner": "scanner-primary", "fingerprint": "db562ed3ad65b09b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-30dc1771c1756fcc", "level": "note", "message": {"text": "Unused endpoint: GET /api/calendar/reminders"}, "properties": {"repobilityId": "b36d0f997ffad18d", "scanner": "scanner-primary", "fingerprint": "30dc1771c1756fcc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-03719921fcbefad7", "level": "note", "message": {"text": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/generate-followup"}, "properties": {"repobilityId": "d36dbfa946de82d0", "scanner": "scanner-primary", "fingerprint": "03719921fcbefad7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0273826bfa71f566", "level": "note", "message": {"text": "Unused endpoint: POST /api/calendar/reminders/{reminder_id}/mark-sent"}, "properties": {"repobilityId": "49b45e3a9657f706", "scanner": "scanner-primary", "fingerprint": "0273826bfa71f566", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2b1b62b787f195d9", "level": "note", "message": {"text": "Unused endpoint: GET /api/calendar/export.ics"}, "properties": {"repobilityId": "30c612f5766aac19", "scanner": "scanner-primary", "fingerprint": "2b1b62b787f195d9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-efb944d0467aad29", "level": "note", "message": {"text": "Unused endpoint: GET /api/payment-schedules"}, "properties": {"repobilityId": "44d9ff85127e7785", "scanner": "scanner-primary", "fingerprint": "efb944d0467aad29", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68ed0e480f33d0e3", "level": "note", "message": {"text": "Unused endpoint: POST /api/payment-schedules"}, "properties": {"repobilityId": "2ddd8df854d32a41", "scanner": "scanner-primary", "fingerprint": "68ed0e480f33d0e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98fdaddcb4d093db", "level": "note", "message": {"text": "Unused endpoint: GET /api/payment-schedules/overdue"}, "properties": {"repobilityId": "c02810372ab7d703", "scanner": "scanner-primary", "fingerprint": "98fdaddcb4d093db", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-abde5c1849aaae6a", "level": "note", "message": {"text": "Unused endpoint: GET /api/payment-schedules/upcoming"}, "properties": {"repobilityId": "2d3f8b38e98464a0", "scanner": "scanner-primary", "fingerprint": "abde5c1849aaae6a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c95476ac05d84ea4", "level": "note", "message": {"text": "Unused endpoint: GET /api/payment-schedules/{schedule_id}"}, "properties": {"repobilityId": "c2d8c9c571a28cde", "scanner": "scanner-primary", "fingerprint": "c95476ac05d84ea4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae61fe4c87e63a3c", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/payment-schedules/{schedule_id}"}, "properties": {"repobilityId": "9e8797a0ab01f258", "scanner": "scanner-primary", "fingerprint": "ae61fe4c87e63a3c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-63e7bb01c2535793", "level": "note", "message": {"text": "Unused endpoint: POST /api/payment-schedules/{schedule_id}/mark-paid"}, "properties": {"repobilityId": "563922bc315c96ed", "scanner": "scanner-primary", "fingerprint": "63e7bb01c2535793", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a1f3d60b88aeee6", "level": "note", "message": {"text": "Unused endpoint: POST /api/invoices/{invoice_id}/schedule-payment"}, "properties": {"repobilityId": "6c94764ee362b5c5", "scanner": "scanner-primary", "fingerprint": "3a1f3d60b88aeee6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a60ed948238ae8f3", "level": "note", "message": {"text": "Unused endpoint: POST /backup"}, "properties": {"repobilityId": "6d333a8197e47986", "scanner": "scanner-primary", "fingerprint": "a60ed948238ae8f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5dfd6eb0c2d510e", "level": "note", "message": {"text": "Unused endpoint: GET /backups"}, "properties": {"repobilityId": "b85b8a2c113d5629", "scanner": "scanner-primary", "fingerprint": "a5dfd6eb0c2d510e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-33d3b58e906edf91", "level": "note", "message": {"text": "Unused endpoint: GET /backups/{name}/download"}, "properties": {"repobilityId": "b2ac13c77b29a314", "scanner": "scanner-primary", "fingerprint": "33d3b58e906edf91", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4ae7b72144f7bbbe", "level": "note", "message": {"text": "Unused endpoint: POST /backups/upload"}, "properties": {"repobilityId": "a489df7c63028f8f", "scanner": "scanner-primary", "fingerprint": "4ae7b72144f7bbbe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fa1e35dc79c1ea71", "level": "note", "message": {"text": "Unused endpoint: DELETE /backups/{name}"}, "properties": {"repobilityId": "1e3d8ab057f78e19", "scanner": "scanner-primary", "fingerprint": "fa1e35dc79c1ea71", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-011c572b3563a6f2", "level": "note", "message": {"text": "Unused endpoint: POST /backups/{name}/restore"}, "properties": {"repobilityId": "bc61e1697668ba8f", "scanner": "scanner-primary", "fingerprint": "011c572b3563a6f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-78cca46f4f7224cf", "level": "note", "message": {"text": "Unused endpoint: GET /api/providers"}, "properties": {"repobilityId": "c57c2eecaa3b864e", "scanner": "scanner-primary", "fingerprint": "78cca46f4f7224cf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d17984999c826fe", "level": "note", "message": {"text": "Unused endpoint: GET /api/providers/"}, "properties": {"repobilityId": "ff82386378f399df", "scanner": "scanner-primary", "fingerprint": "8d17984999c826fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b47ff0cf13b9692b", "level": "note", "message": {"text": "Unused endpoint: POST /api/providers"}, "properties": {"repobilityId": "a8e6750e0d76ba08", "scanner": "scanner-primary", "fingerprint": "b47ff0cf13b9692b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ea39439a577f43bd", "level": "note", "message": {"text": "Unused endpoint: POST /api/providers/"}, "properties": {"repobilityId": "d4e419e8ec78916d", "scanner": "scanner-primary", "fingerprint": "ea39439a577f43bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-599c1eb33a6df42d", "level": "note", "message": {"text": "Unused endpoint: PUT /api/providers/{instance_id}"}, "properties": {"repobilityId": "1ed8a3d5ab6bca71", "scanner": "scanner-primary", "fingerprint": "599c1eb33a6df42d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6891c01bfc88b39", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/providers/{instance_id}"}, "properties": {"repobilityId": "f7036a4ea15707aa", "scanner": "scanner-primary", "fingerprint": "a6891c01bfc88b39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8fb0a1da573c4ba2", "level": "note", "message": {"text": "Unused endpoint: POST /api/providers/{instance_id}/test"}, "properties": {"repobilityId": "dd78e32de351e4fd", "scanner": "scanner-primary", "fingerprint": "8fb0a1da573c4ba2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-15916620591ad349", "level": "note", "message": {"text": "Unused endpoint: POST /api/providers/{instance_id}/refresh-models"}, "properties": {"repobilityId": "08c39c05a18ea13e", "scanner": "scanner-primary", "fingerprint": "15916620591ad349", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e0c751cc9bb2ec28", "level": "note", "message": {"text": "Unused endpoint: GET /api/providers/models"}, "properties": {"repobilityId": "070bd27ed10ffb27", "scanner": "scanner-primary", "fingerprint": "e0c751cc9bb2ec28", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-452f6c0f50401c7a", "level": "note", "message": {"text": "Unused endpoint: GET /api/providers/live-models"}, "properties": {"repobilityId": "a0a56a3ef89ca2be", "scanner": "scanner-primary", "fingerprint": "452f6c0f50401c7a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e67af48ceb5e109", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/providers/models/{model_key}/thinking"}, "properties": {"repobilityId": "6a8b109d6c18ea42", "scanner": "scanner-primary", "fingerprint": "7e67af48ceb5e109", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-84351512c77c9261", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/providers/models/{model_key}/preferred-instance"}, "properties": {"repobilityId": "771d7d2b7fec3f64", "scanner": "scanner-primary", "fingerprint": "84351512c77c9261", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-94ea69cb1c686be0", "level": "note", "message": {"text": "Unused endpoint: GET /api/providers/slots"}, "properties": {"repobilityId": "c66d3854f8330f08", "scanner": "scanner-primary", "fingerprint": "94ea69cb1c686be0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e9117071176ba9ef", "level": "note", "message": {"text": "Unused endpoint: PUT /api/providers/slots/{slot}"}, "properties": {"repobilityId": "2af2153a21005ffc", "scanner": "scanner-primary", "fingerprint": "e9117071176ba9ef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c4221670861e52f0", "level": "note", "message": {"text": "Unused endpoint: POST /api/compare"}, "properties": {"repobilityId": "216282e4dffeb0ab", "scanner": "scanner-primary", "fingerprint": "c4221670861e52f0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36aa9f8e622a0740", "level": "note", "message": {"text": "Unused endpoint: GET /api/compare"}, "properties": {"repobilityId": "841f2405f0198408", "scanner": "scanner-primary", "fingerprint": "36aa9f8e622a0740", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-844a02cbecfebae4", "level": "note", "message": {"text": "Unused endpoint: GET /api/compare/{session_id}"}, "properties": {"repobilityId": "0a504d50e9563884", "scanner": "scanner-primary", "fingerprint": "844a02cbecfebae4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2ed8d5cbf45211ce", "level": "note", "message": {"text": "Unused endpoint: POST /api/compare/{session_id}/align"}, "properties": {"repobilityId": "985be5b38cf976a2", "scanner": "scanner-primary", "fingerprint": "2ed8d5cbf45211ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}