{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-534a1a800a6a1ac8", "name": "Possibly dead Python function: init_db", "shortDescription": {"text": "Possibly dead Python function: init_db"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e294ac7294ed1ee", "name": "Possibly dead Python function: init_v1", "shortDescription": {"text": "Possibly dead Python function: init_v1"}, "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-64f5df30fd393d00", "name": "Possibly dead Python function: formatting_func", "shortDescription": {"text": "Possibly dead Python function: formatting_func"}, "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-201692bf89305021", "name": "Possibly dead Python function: save_merged_model", "shortDescription": {"text": "Possibly dead Python function: save_merged_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-704e9fbfc56687b1", "name": "Possibly dead Python function: formatting_func", "shortDescription": {"text": "Possibly dead Python function: formatting_func"}, "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-f611b1e8fd7de2d6", "name": "Possibly dead Python function: is_redis_token_valid", "shortDescription": {"text": "Possibly dead Python function: is_redis_token_valid"}, "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-fad7034fdbfa1c5e", "name": "Possibly dead Python function: create_embedding_job_inline", "shortDescription": {"text": "Possibly dead Python function: create_embedding_job_inline"}, "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-7b26e3471f608148", "name": "Possibly dead Python function: create_access_token", "shortDescription": {"text": "Possibly dead Python function: create_access_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-fc6c663e145e0d05", "name": "Possibly dead Python function: verify_access_token", "shortDescription": {"text": "Possibly dead Python function: verify_access_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-05157c0375bfabf1", "name": "Possibly dead Python function: set_session", "shortDescription": {"text": "Possibly dead Python function: set_session"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d93fb54321da3f46", "name": "Possibly dead Python function: run_embedding_sync_task", "shortDescription": {"text": "Possibly dead Python function: run_embedding_sync_task"}, "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-a717f6eda51cf6d3", "name": "Possibly dead Python function: analyze_resume_by_file_id", "shortDescription": {"text": "Possibly dead Python function: analyze_resume_by_file_id"}, "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-ef1f8c918a778e03", "name": "Possibly dead Python function: include_object", "shortDescription": {"text": "Possibly dead Python function: include_object"}, "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-f27f2860b7edd409", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f606e64e9bf3e5b6", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-368ab4bce37553bb", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3f32d28683803e3", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ece17544425d29fe", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d5f0e26255bdc36", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4992245fe57e77d0", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04759ed677e46fdc", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24e37e51c264c839", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be9bb62eac2de949", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2749a6965734aab2", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c23036ca062a5113", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-968a71116171c112", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9b010b70d1c386b", "name": "Possibly dead Python function: downgrade", "shortDescription": {"text": "Possibly dead Python function: downgrade"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7580b7f4d39ac417", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/layout.tsx:36", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/layout.tsx:36"}, "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-1d7a7e6ec1307cd9", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/apply/page.tsx:431", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/apply/page.tsx:431"}, "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-54e6a7ad1ac3556f", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(dashboard)/performance/activities/page.tsx:201", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(dashboard)/performance/activities/page.tsx:201"}, "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-0f53ca9f52721068", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/workspace/mail/page.tsx:972", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/workspace/mail/page.tsx:972"}, "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-57c962e4766473b9", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/generate-sw.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/generate-sw.js:43"}, "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-bebddd5074896e08", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/chat/components/ChatPanel.tsx:523", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/chat/components/ChatPanel.tsx:523"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71cfbf9214a228d7", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/hr-profile/components/ProfileSheet.tsx:155", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/hr-profile/components/ProfileSheet.tsx:155"}, "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-6eafc01a75d98ebc", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/select.tsx:124", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/select.tsx:124"}, "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-cf0147cc53b0a2e4", "name": "Insecure pattern 'cors_wildcard' in backend/ontology/apps/gateway/middleware.py:21", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in backend/ontology/apps/gateway/middleware.py:21"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c5bcb654be6d597", "name": "Insecure pattern 'eval_used' in backend/ontology/apps/domain/spokes/chat/mcp/chat_server.py:42", "shortDescription": {"text": "Insecure pattern 'eval_used' in backend/ontology/apps/domain/spokes/chat/mcp/chat_server.py:42"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-aafa550a66dc90dd", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/app/layout.tsx:36", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/layout.tsx:36"}, "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-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 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": "low", "confidence": 1.0}}, {"id": "scanner-674da1e346486ad9", "name": "Very large file: backend/ontology/apps/domain/hub/orchestrators/graph_orchestrator.py (1429 lines)", "shortDescription": {"text": "Very large file: backend/ontology/apps/domain/hub/orchestrators/graph_orchestrator.py (1429 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-8ca06751776155c3", "name": "Very large file: frontend/app/workspace/mail/page.tsx (1085 lines)", "shortDescription": {"text": "Very large file: frontend/app/workspace/mail/page.tsx (1085 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 358 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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 559 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 94 placeholder/mock markers across 23 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-5c434107c8caa284", "name": "Legacy-named symbol `init_v1` in backend/ontology/apps/fastapi_server.py:49", "shortDescription": {"text": "Legacy-named symbol `init_v1` in backend/ontology/apps/fastapi_server.py:49"}, "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-0cd66da8a2595172", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/generate_ec2_env.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/generate_ec2_env.py:77"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d19da4d6888a5bec", "name": "Commented-code block (5 lines) in frontend/app/opencv/__init__.py:112", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/app/opencv/__init__.py:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-29ef7812ed781cfd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(dashboard)/risk/page.tsx:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(dashboard)/risk/page.tsx:44"}, "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-833adffe15ded683", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/workspace/mail/page.tsx:299", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/workspace/mail/page.tsx:299"}, "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-426f10136776987d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/services.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/services.ts:42"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9f86c62d07f38b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/components/ChatPanel.tsx:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/components/ChatPanel.tsx:66"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fdab2a21ce7fd4ec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/performance/services/activityServices.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/performance/services/activityServices.ts:55"}, "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-cfad25b6164d11df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/auth/gatewayAuth.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/auth/gatewayAuth.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-e4b0c5392afdb9de", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/core/services.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/core/services.ts:37"}, "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-d0b0ea33d3bc31cd", "name": "Legacy-named symbol `educationLegacy` in frontend/components/portfolio-landing/ResumeSection.tsx:181", "shortDescription": {"text": "Legacy-named symbol `educationLegacy` in frontend/components/portfolio-landing/ResumeSection.tsx:181"}, "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-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/ontology/apps/training/pipelines/performance_samples/run_import_performance_samples.py:load_jsonl, backend/ontology/apps/training/pipelines/address_book/run_import_internal_addresses.py:load_jsonl\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/ontology/apps/domain/models/bases/spam_model.py:to_dict, backend/ontology/apps/domain/models/bases/spam_model.py:to_dict, backend/ontology/apps/domain/models/bases/spam_model.py:to_dict\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nbackend/ontology/apps/domain/hub/mcp/central_control_server.py:analyze_email, backend/ontology/apps/domain/hub/mcp/http_client.py:exaone_analyze_email, backend/ontology/apps/domain/spokes/spam/mcp/spam_server.py:analyze_email, backend/ontology/apps/domain/spokes/spam/mcp/spam_server.py:analyze_email\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aef39c90dc518613", "name": "FastAPI POST `analyze_employee_resume` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_analysis_rou", "shortDescription": {"text": "FastAPI POST `analyze_employee_resume` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_analysis_router.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-9ab5788191e2d535", "name": "FastAPI POST `submit_activity` without auth dependency \u2014 backend/ontology/apps/api/routers/activity_router.py:108", "shortDescription": {"text": "FastAPI POST `submit_activity` without auth dependency \u2014 backend/ontology/apps/api/routers/activity_router.py:108"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2412084a694ec54f", "name": "FastAPI POST `agent_upload` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:152", "shortDescription": {"text": "FastAPI POST `agent_upload` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:152"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c58ea4035509b15", "name": "FastAPI POST `agent_chat_stream` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:180", "shortDescription": {"text": "FastAPI POST `agent_chat_stream` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:180"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1fd09fbe6ca844f1", "name": "FastAPI POST `resume_analyze` without auth dependency \u2014 backend/ontology/apps/api/routers/resume_router.py:23", "shortDescription": {"text": "FastAPI POST `resume_analyze` without auth dependency \u2014 backend/ontology/apps/api/routers/resume_router.py:23"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ced63641e2d6850", "name": "FastAPI POST `run_disclosure_embedding` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.py", "shortDescription": {"text": "FastAPI POST `run_disclosure_embedding` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.py:194"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f4eb1e10db4fef1", "name": "FastAPI POST `post_disclosure_check` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.py:25", "shortDescription": {"text": "FastAPI POST `post_disclosure_check` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.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-98ac633972d194f0", "name": "FastAPI POST `create_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:124", "shortDescription": {"text": "FastAPI POST `create_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:124"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2060b37bdb01ec7f", "name": "FastAPI PUT `update_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:165", "shortDescription": {"text": "FastAPI PUT `update_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:165"}, "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-58b2dfe3398e5c49", "name": "FastAPI DELETE `delete_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:186", "shortDescription": {"text": "FastAPI DELETE `delete_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:186"}, "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-8699032c09a54779", "name": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_thread_router.py:48", "shortDescription": {"text": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_thread_router.py:48"}, "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-33e5b4f7b93c7e69", "name": "FastAPI POST `refresh_employee_embeddings` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embeddin", "shortDescription": {"text": "FastAPI POST `refresh_employee_embeddings` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embedding_router.py:71"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3722d3b662fd98d9", "name": "FastAPI POST `backfill_employee_profiles` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embedding", "shortDescription": {"text": "FastAPI POST `backfill_employee_profiles` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embedding_router.py:137"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-49c3cdaeb132d824", "name": "FastAPI POST `create_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:95", "shortDescription": {"text": "FastAPI POST `create_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:95"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bfde5e75275279ff", "name": "FastAPI PUT `update_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:118", "shortDescription": {"text": "FastAPI PUT `update_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:118"}, "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-985c1c4f05b9ff45", "name": "FastAPI DELETE `delete_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:139", "shortDescription": {"text": "FastAPI DELETE `delete_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:139"}, "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}}]}}, "automationDetails": {"id": "repobility/25082"}, "properties": {"repository": "ConversionDev/251218langchain", "repoUrl": "https://github.com/ConversionDev/251218langchain", "branch": "main"}, "results": [{"ruleId": "scanner-534a1a800a6a1ac8", "level": "note", "message": {"text": "Possibly dead Python function: init_db"}, "properties": {"repobilityId": "a776a5dfbdf65853", "scanner": "scanner-primary", "fingerprint": "534a1a800a6a1ac8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/fastapi_server.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e294ac7294ed1ee", "level": "note", "message": {"text": "Possibly dead Python function: init_v1"}, "properties": {"repobilityId": "f3a0a35ab0531d59", "scanner": "scanner-primary", "fingerprint": "8e294ac7294ed1ee", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/fastapi_server.py:156"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-64f5df30fd393d00", "level": "note", "message": {"text": "Possibly dead Python function: formatting_func"}, "properties": {"repobilityId": "e043438f42423760", "scanner": "scanner-primary", "fingerprint": "64f5df30fd393d00", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/training/models/llama/spam_classifier/finetune.py:376"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-201692bf89305021", "level": "note", "message": {"text": "Possibly dead Python function: save_merged_model"}, "properties": {"repobilityId": "f203c66ff31ccb96", "scanner": "scanner-primary", "fingerprint": "201692bf89305021", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/training/models/llama/spam_classifier/finetune.py:475"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-704e9fbfc56687b1", "level": "note", "message": {"text": "Possibly dead Python function: formatting_func"}, "properties": {"repobilityId": "e043438f42423760", "scanner": "scanner-primary", "fingerprint": "704e9fbfc56687b1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/training/pipelines/sft/run_sft_training.py:194"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f611b1e8fd7de2d6", "level": "note", "message": {"text": "Possibly dead Python function: is_redis_token_valid"}, "properties": {"repobilityId": "144afc7026ae54fa", "scanner": "scanner-primary", "fingerprint": "f611b1e8fd7de2d6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/redis.py:47"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fad7034fdbfa1c5e", "level": "note", "message": {"text": "Possibly dead Python function: create_embedding_job_inline"}, "properties": {"repobilityId": "b01752e21d3bffd8", "scanner": "scanner-primary", "fingerprint": "fad7034fdbfa1c5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/redis.py:68"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7b26e3471f608148", "level": "note", "message": {"text": "Possibly dead Python function: create_access_token"}, "properties": {"repobilityId": "818e723fe8ea9504", "scanner": "scanner-primary", "fingerprint": "7b26e3471f608148", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/redis.py:133"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc6c663e145e0d05", "level": "note", "message": {"text": "Possibly dead Python function: verify_access_token"}, "properties": {"repobilityId": "582af860afc30b10", "scanner": "scanner-primary", "fingerprint": "fc6c663e145e0d05", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/redis.py:148"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-05157c0375bfabf1", "level": "note", "message": {"text": "Possibly dead Python function: set_session"}, "properties": {"repobilityId": "76ed166b39921c8e", "scanner": "scanner-primary", "fingerprint": "05157c0375bfabf1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/redis.py:162"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d93fb54321da3f46", "level": "note", "message": {"text": "Possibly dead Python function: run_embedding_sync_task"}, "properties": {"repobilityId": "7dc85624b3c76e21", "scanner": "scanner-primary", "fingerprint": "d93fb54321da3f46", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/shared/embedding_sync.py:13"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a717f6eda51cf6d3", "level": "note", "message": {"text": "Possibly dead Python function: analyze_resume_by_file_id"}, "properties": {"repobilityId": "8ebda922b1e5d9b8", "scanner": "scanner-primary", "fingerprint": "a717f6eda51cf6d3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/services/resume_analyzer.py:769"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef1f8c918a778e03", "level": "note", "message": {"text": "Possibly dead Python function: include_object"}, "properties": {"repobilityId": "425a5e67292c778e", "scanner": "scanner-primary", "fingerprint": "ef1f8c918a778e03", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/env.py:63"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f27f2860b7edd409", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "f27f2860b7edd409", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/006_competency_anchors_table.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f606e64e9bf3e5b6", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "f606e64e9bf3e5b6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/003_disclosure_standard_section_metadata.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-368ab4bce37553bb", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "368ab4bce37553bb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/019_audit_logs_table.py:41"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3f32d28683803e3", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "b3f32d28683803e3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/024_mail_items_external_id_received_at.py:34"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ece17544425d29fe", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "ece17544425d29fe", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/008_employees_age_column.py:28"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0d5f0e26255bdc36", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "0d5f0e26255bdc36", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/007_employees_table.py:88"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4992245fe57e77d0", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "4992245fe57e77d0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/028_employees_hired_at.py:39"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-04759ed677e46fdc", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "04759ed677e46fdc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/029_drop_employees_hired_and_behavioral.py:27"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24e37e51c264c839", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "24e37e51c264c839", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/025_alembic_version_widen_version_num.py:25"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-be9bb62eac2de949", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "be9bb62eac2de949", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/013_employees_status.py:33"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2749a6965734aab2", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "2749a6965734aab2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/001_initial_squashed.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c23036ca062a5113", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "c23036ca062a5113", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/015_employees_rejection_reason.py:33"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-968a71116171c112", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "968a71116171c112", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/cd00d8e8cfc0_add_resume_text_to_employees.py:31"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9b010b70d1c386b", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "b9b010b70d1c386b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/alembic/versions/018_drop_meetings_table.py:21"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7580b7f4d39ac417", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/app/layout.tsx:36"}, "properties": {"repobilityId": "c3711f4722a30929", "scanner": "scanner-primary", "fingerprint": "7580b7f4d39ac417", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1d7a7e6ec1307cd9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/apply/page.tsx:431"}, "properties": {"repobilityId": "affadb8bfc5b9706", "scanner": "scanner-primary", "fingerprint": "1d7a7e6ec1307cd9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-54e6a7ad1ac3556f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/(dashboard)/performance/activities/page.tsx:201"}, "properties": {"repobilityId": "754377e3816e562d", "scanner": "scanner-primary", "fingerprint": "54e6a7ad1ac3556f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f53ca9f52721068", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/app/workspace/mail/page.tsx:972"}, "properties": {"repobilityId": "7de030e8e8d3b2ab", "scanner": "scanner-primary", "fingerprint": "0f53ca9f52721068", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57c962e4766473b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/generate-sw.js:43"}, "properties": {"repobilityId": "15593546ea606b6d", "scanner": "scanner-primary", "fingerprint": "57c962e4766473b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bebddd5074896e08", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/chat/components/ChatPanel.tsx:523"}, "properties": {"repobilityId": "72896564a8ff4740", "scanner": "scanner-primary", "fingerprint": "bebddd5074896e08", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-71cfbf9214a228d7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/modules/hr-profile/components/ProfileSheet.tsx:155"}, "properties": {"repobilityId": "0b45bac0541ceedb", "scanner": "scanner-primary", "fingerprint": "71cfbf9214a228d7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6eafc01a75d98ebc", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/components/ui/select.tsx:124"}, "properties": {"repobilityId": "a8657fc7ce49aebf", "scanner": "scanner-primary", "fingerprint": "6eafc01a75d98ebc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cf0147cc53b0a2e4", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in backend/ontology/apps/gateway/middleware.py:21"}, "properties": {"repobilityId": "9acf4ce78f50d9e7", "scanner": "scanner-primary", "fingerprint": "cf0147cc53b0a2e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/gateway/middleware.py"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-7c5bcb654be6d597", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in backend/ontology/apps/domain/spokes/chat/mcp/chat_server.py:42"}, "properties": {"repobilityId": "2862f5429279c979", "scanner": "scanner-primary", "fingerprint": "7c5bcb654be6d597", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/domain/spokes/chat/mcp/chat_server.py"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-aafa550a66dc90dd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/app/layout.tsx:36"}, "properties": {"repobilityId": "352266f153f8b038", "scanner": "scanner-primary", "fingerprint": "aafa550a66dc90dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/app/layout.tsx"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2aee2e2d969c7c6b", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "713a6b0c83079f40", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5bc5119836505745", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 379}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "713a6b0c83079f40", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 533}}}]}, {"ruleId": "scanner-674da1e346486ad9", "level": "note", "message": {"text": "Very large file: backend/ontology/apps/domain/hub/orchestrators/graph_orchestrator.py (1429 lines)"}, "properties": {"repobilityId": "c4eca6534a247fe4", "scanner": "scanner-primary", "fingerprint": "674da1e346486ad9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8ca06751776155c3", "level": "note", "message": {"text": "Very large file: frontend/app/workspace/mail/page.tsx (1085 lines)"}, "properties": {"repobilityId": "1483f4f2a5dd2b85", "scanner": "scanner-primary", "fingerprint": "8ca06751776155c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "fb304023728c0e7d", "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": "992e98242b665acd", "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": "0960fa26d2a4701b", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-5c434107c8caa284", "level": "note", "message": {"text": "Legacy-named symbol `init_v1` in backend/ontology/apps/fastapi_server.py:49"}, "properties": {"repobilityId": "55d81d1ac6dc9694", "scanner": "scanner-primary", "fingerprint": "5c434107c8caa284", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0cd66da8a2595172", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/generate_ec2_env.py:77"}, "properties": {"repobilityId": "d177218d164ef06a", "scanner": "scanner-primary", "fingerprint": "0cd66da8a2595172", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d19da4d6888a5bec", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/app/opencv/__init__.py:112"}, "properties": {"repobilityId": "5cdecc3a89cccc59", "scanner": "scanner-primary", "fingerprint": "d19da4d6888a5bec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29ef7812ed781cfd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/(dashboard)/risk/page.tsx:44"}, "properties": {"repobilityId": "f430edd1050ee54d", "scanner": "scanner-primary", "fingerprint": "29ef7812ed781cfd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-833adffe15ded683", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/app/workspace/mail/page.tsx:299"}, "properties": {"repobilityId": "5e5e8e60ffa99009", "scanner": "scanner-primary", "fingerprint": "833adffe15ded683", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-426f10136776987d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/services.ts:42"}, "properties": {"repobilityId": "8a46e94ea2f98f78", "scanner": "scanner-primary", "fingerprint": "426f10136776987d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9f86c62d07f38b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/chat/components/ChatPanel.tsx:66"}, "properties": {"repobilityId": "76fc0ee06f6aa855", "scanner": "scanner-primary", "fingerprint": "c9f86c62d07f38b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdab2a21ce7fd4ec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/performance/services/activityServices.ts:55"}, "properties": {"repobilityId": "d8be1d9190e0c2b5", "scanner": "scanner-primary", "fingerprint": "fdab2a21ce7fd4ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfad25b6164d11df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/auth/gatewayAuth.ts:27"}, "properties": {"repobilityId": "936fb73b77ff9f51", "scanner": "scanner-primary", "fingerprint": "cfad25b6164d11df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e4b0c5392afdb9de", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/modules/core/services.ts:37"}, "properties": {"repobilityId": "84e33d1843b9e99f", "scanner": "scanner-primary", "fingerprint": "e4b0c5392afdb9de", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0b0ea33d3bc31cd", "level": "note", "message": {"text": "Legacy-named symbol `educationLegacy` in frontend/components/portfolio-landing/ResumeSection.tsx:181"}, "properties": {"repobilityId": "a33ca46f72faec8d", "scanner": "scanner-primary", "fingerprint": "d0b0ea33d3bc31cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "ce104e0b65d5df67", "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": "d087a7f132d05222", "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": "5c56150759f83332", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "58c1072ce1213c02", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b417b1a98eba69db", "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": "d2d541c329cf2e1a", "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": "a84db3655406ae8a", "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": "206bd28bd262c0c0", "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": "695f74f53743c31f", "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": "592e91655c3f9f8c", "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": "3efd8be6cc0b0ebd", "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": "4bbc10f82ca11b48", "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": "7bda682943499732", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "064670d085c9fd8b", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "69d63c8b391dc556", "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": "aebc99dc99287ecb", "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": "fba45263a53a2f35", "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": "b8ddc8afe4bbb4d0", "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": "1cc6982030fcd72a", "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": "3a890cb87d1f3f1e", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-aef39c90dc518613", "level": "error", "message": {"text": "FastAPI POST `analyze_employee_resume` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_analysis_router.py:47"}, "properties": {"repobilityId": "274600d4b84867c8", "scanner": "scanner-primary", "fingerprint": "aef39c90dc518613", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_analysis_router.py"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-9ab5788191e2d535", "level": "error", "message": {"text": "FastAPI POST `submit_activity` without auth dependency \u2014 backend/ontology/apps/api/routers/activity_router.py:108"}, "properties": {"repobilityId": "5479c3bbbe771183", "scanner": "scanner-primary", "fingerprint": "9ab5788191e2d535", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/activity_router.py"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-2412084a694ec54f", "level": "error", "message": {"text": "FastAPI POST `agent_upload` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:152"}, "properties": {"repobilityId": "c7cdc2136817a11f", "scanner": "scanner-primary", "fingerprint": "2412084a694ec54f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/chat_router.py"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-3c58ea4035509b15", "level": "error", "message": {"text": "FastAPI POST `agent_chat_stream` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_router.py:180"}, "properties": {"repobilityId": "ed217bc7e11f173c", "scanner": "scanner-primary", "fingerprint": "3c58ea4035509b15", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/chat_router.py"}, "region": {"startLine": 180}}}]}, {"ruleId": "scanner-1fd09fbe6ca844f1", "level": "error", "message": {"text": "FastAPI POST `resume_analyze` without auth dependency \u2014 backend/ontology/apps/api/routers/resume_router.py:23"}, "properties": {"repobilityId": "63c4db5037e05036", "scanner": "scanner-primary", "fingerprint": "1fd09fbe6ca844f1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/resume_router.py"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-7ced63641e2d6850", "level": "error", "message": {"text": "FastAPI POST `run_disclosure_embedding` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.py:194"}, "properties": {"repobilityId": "e9abd314f9656553", "scanner": "scanner-primary", "fingerprint": "7ced63641e2d6850", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/disclosure_router.py"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-0f4eb1e10db4fef1", "level": "error", "message": {"text": "FastAPI POST `post_disclosure_check` without auth dependency \u2014 backend/ontology/apps/api/routers/disclosure_router.py:254"}, "properties": {"repobilityId": "1f6be9d5819f4e73", "scanner": "scanner-primary", "fingerprint": "0f4eb1e10db4fef1", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/disclosure_router.py"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-98ac633972d194f0", "level": "error", "message": {"text": "FastAPI POST `create_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:124"}, "properties": {"repobilityId": "eba8bfed09d67e55", "scanner": "scanner-primary", "fingerprint": "98ac633972d194f0", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_router.py"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-2060b37bdb01ec7f", "level": "error", "message": {"text": "FastAPI PUT `update_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:165"}, "properties": {"repobilityId": "4eeb2b5715663d4e", "scanner": "scanner-primary", "fingerprint": "2060b37bdb01ec7f", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_router.py"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-58b2dfe3398e5c49", "level": "error", "message": {"text": "FastAPI DELETE `delete_employee` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_router.py:186"}, "properties": {"repobilityId": "b073ea50e7f7b2d8", "scanner": "scanner-primary", "fingerprint": "58b2dfe3398e5c49", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_router.py"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-8699032c09a54779", "level": "error", "message": {"text": "FastAPI DELETE `delete_thread` without auth dependency \u2014 backend/ontology/apps/api/routers/chat_thread_router.py:48"}, "properties": {"repobilityId": "b38f408c5ea78e06", "scanner": "scanner-primary", "fingerprint": "8699032c09a54779", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/chat_thread_router.py"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-33e5b4f7b93c7e69", "level": "error", "message": {"text": "FastAPI POST `refresh_employee_embeddings` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embedding_router.py:71"}, "properties": {"repobilityId": "6f464eb83e0570a7", "scanner": "scanner-primary", "fingerprint": "33e5b4f7b93c7e69", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_embedding_router.py"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-3722d3b662fd98d9", "level": "error", "message": {"text": "FastAPI POST `backfill_employee_profiles` without auth dependency \u2014 backend/ontology/apps/api/routers/employee_embedding_router.py:137"}, "properties": {"repobilityId": "96a623b96af908ed", "scanner": "scanner-primary", "fingerprint": "3722d3b662fd98d9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/employee_embedding_router.py"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-49c3cdaeb132d824", "level": "error", "message": {"text": "FastAPI POST `create_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:95"}, "properties": {"repobilityId": "d5c8fa379afad782", "scanner": "scanner-primary", "fingerprint": "49c3cdaeb132d824", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/address_book_router.py"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-bfde5e75275279ff", "level": "error", "message": {"text": "FastAPI PUT `update_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:118"}, "properties": {"repobilityId": "3fc3b27d9f71dad2", "scanner": "scanner-primary", "fingerprint": "bfde5e75275279ff", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/address_book_router.py"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-985c1c4f05b9ff45", "level": "error", "message": {"text": "FastAPI DELETE `delete_address` without auth dependency \u2014 backend/ontology/apps/api/routers/address_book_router.py:139"}, "properties": {"repobilityId": "07233d7555544a61", "scanner": "scanner-primary", "fingerprint": "985c1c4f05b9ff45", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "backend/ontology/apps/api/routers/address_book_router.py"}, "region": {"startLine": 139}}}]}]}]}