{"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-6da3e876cbe68865", "name": "Possibly dead Python function: rollback", "shortDescription": {"text": "Possibly dead Python function: rollback"}, "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-4bedcb213059462e", "name": "Possibly dead Python function: should_shadow", "shortDescription": {"text": "Possibly dead Python function: should_shadow"}, "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-cb06e5116caf297b", "name": "Possibly dead Python function: warmup", "shortDescription": {"text": "Possibly dead Python function: warmup"}, "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-b9356e4b5eb72c89", "name": "Possibly dead Python function: objective", "shortDescription": {"text": "Possibly dead Python function: objective"}, "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-1ad94c4a785217a7", "name": "Possibly dead Python function: diagnose", "shortDescription": {"text": "Possibly dead Python function: diagnose"}, "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-9bcca438b1938b5e", "name": "Possibly dead Python function: select_primary", "shortDescription": {"text": "Possibly dead Python function: select_primary"}, "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-7edbd3bc722490f0", "name": "Possibly dead Python function: softmax", "shortDescription": {"text": "Possibly dead Python function: softmax"}, "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-db780553c28bc809", "name": "Possibly dead Python function: schema_doc_path", "shortDescription": {"text": "Possibly dead Python function: schema_doc_path"}, "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-41d5946be12e08cb", "name": "Possibly dead Python function: multitask_bce_loss", "shortDescription": {"text": "Possibly dead Python function: multitask_bce_loss"}, "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-a4035d652c248d50", "name": "Possibly dead Python function: select_bald", "shortDescription": {"text": "Possibly dead Python function: select_bald"}, "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-f4d3c76c7341fd8d", "name": "Possibly dead Python function: select_coreset", "shortDescription": {"text": "Possibly dead Python function: select_coreset"}, "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-23f501588d1a2ed4", "name": "Possibly dead Python function: filter_clips_for_training", "shortDescription": {"text": "Possibly dead Python function: filter_clips_for_training"}, "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-2a7f04dfe1fa1676", "name": "Possibly dead Python function: db_session", "shortDescription": {"text": "Possibly dead Python function: db_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-8f9ffc6203b88c5e", "name": "Possibly dead Python function: db_session_anon", "shortDescription": {"text": "Possibly dead Python function: db_session_anon"}, "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-9eb4b3e802aa42ec", "name": "Possibly dead Python function: utcnow", "shortDescription": {"text": "Possibly dead Python function: utcnow"}, "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-b7a630c676d986e0", "name": "Possibly dead Python function: assert_membership", "shortDescription": {"text": "Possibly dead Python function: assert_membership"}, "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-8a9fee98d44ded9f", "name": "Possibly dead Python function: parse_tenant_scope", "shortDescription": {"text": "Possibly dead Python function: parse_tenant_scope"}, "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-b9264202b2f96cab", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-d343c1f1ea6a0af5", "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-78da6f288b93790d", "name": "Possibly dead Python function: upgrade", "shortDescription": {"text": "Possibly dead Python function: upgrade"}, "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-f0993dbd99db7e08", "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-a25573392fd6bc22", "name": "TODO/FIXME marker in shipping code \u2014 aimvision-mobile/src/screens/settings/AboutScreen.tsx:23", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 aimvision-mobile/src/screens/settings/AboutScreen.tsx:23"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62d5551ae85e44a4", "name": "`truncate` class without `title=` for hover reveal \u2014 aimvision-web/src/components/AppShell.tsx:50", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 aimvision-web/src/components/AppShell.tsx:50"}, "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-9eb16d8ddb428c93", "name": "Privileged port 13 in use", "shortDescription": {"text": "Privileged port 13 in use"}, "fullDescription": {"text": "Port 13 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f91fba216d018ef5", "name": "Privileged port 54 in use", "shortDescription": {"text": "Privileged port 54 in use"}, "fullDescription": {"text": "Port 54 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-7a6019c41b5a634b", "name": "Privileged port 70 in use", "shortDescription": {"text": "Privileged port 70 in use"}, "fullDescription": {"text": "Port 70 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-643b8fcbefbc2cab", "name": "Privileged port 35 in use", "shortDescription": {"text": "Privileged port 35 in use"}, "fullDescription": {"text": "Port 35 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-ef5b742b69d74899", "name": "Privileged port 24 in use", "shortDescription": {"text": "Privileged port 24 in use"}, "fullDescription": {"text": "Port 24 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-55ce010ec75cf5a5", "name": "Privileged port 28 in use", "shortDescription": {"text": "Privileged port 28 in use"}, "fullDescription": {"text": "Port 28 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-067eda8d276b6808", "name": "Privileged port 17 in use", "shortDescription": {"text": "Privileged port 17 in use"}, "fullDescription": {"text": "Port 17 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-da8875b24b290a1e", "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-6840ea4e4a88e647", "name": "Possible secret in aimvision-backend/scripts/smoke_gotrue_exchange.sh", "shortDescription": {"text": "Possible secret in aimvision-backend/scripts/smoke_gotrue_exchange.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-effaa1c234733f77", "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-6494f600477da24f", "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-c3b77ab9328968f2", "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-78cba6c4de740b64", "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-a10bd78f8281a7c9", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7a64b829141e936", "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-21aa0c39a7c1ca23", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "github/codeql-action/upload-sarif@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-7d7b13a42ec7ec22", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dtolnay/rust-toolchain@stable 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-f2285fe1e868b87b", "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-dfd9db5038437f79", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "pnpm/action-setup@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": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 9 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 89 placeholder/mock markers across 33 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aeb2e0a8f596cc5d", "name": "Commented-code block (6 lines) in aimvision-mobile/babel.config.js:7", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-mobile/babel.config.js:7"}, "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-aa7c4cd792bf524c", "name": "Commented-code block (6 lines) in aimvision-mobile/jest.config.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-mobile/jest.config.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3a012cd4b9e20cc", "name": "Commented-code block (5 lines) in aimvision-mobile/.eslintrc.cjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-mobile/.eslintrc.cjs:3"}, "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-af82146bf9b238a0", "name": "Commented-code block (5 lines) in aimvision-mobile/app.config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-mobile/app.config.ts:3"}, "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-d6902fb52eceb1c9", "name": "Commented-code block (5 lines) in aimvision-mobile/src/sync/conflict.ts:94", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/sync/conflict.ts:94"}, "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-719df0f686fd0af5", "name": "Commented-code block (7 lines) in aimvision-mobile/src/config/statsig.ts:18", "shortDescription": {"text": "Commented-code block (7 lines) in aimvision-mobile/src/config/statsig.ts:18"}, "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-29e5a0afd4d65263", "name": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/NewSessionScreen.tsx:68", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/NewSessionScreen.tsx:68"}, "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-ad28b130b64d4bf3", "name": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/RecordingPlayerScreen.tsx:64", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/RecordingPlayerScreen.tsx:64"}, "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-19716c841f550b56", "name": "Commented-code block (8 lines) in aimvision-mobile/src/screens/capture/CapturePhoneScreen.tsx:67", "shortDescription": {"text": "Commented-code block (8 lines) in aimvision-mobile/src/screens/capture/CapturePhoneScreen.tsx:67"}, "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-46b694993fff2d2c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/api.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/api.ts:106"}, "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-96aa390a49ae0251", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/auth.ts:239", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/auth.ts:239"}, "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-5fcf262c8076d9dc", "name": "Commented-code block (5 lines) in aimvision-web/src/routes/index.tsx:47", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-web/src/routes/index.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ba15e93c04e24a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/federation/dashboard.tsx:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/federation/dashboard.tsx:41"}, "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-7a8daf08fe069447", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/list.tsx:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/list.tsx:16"}, "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-15ce1351dbd62549", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/new.tsx:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/new.tsx: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-0555d899e5b40b6c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/erasure/request.tsx:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/erasure/request.tsx:43"}, "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-d41a439c7ab62782", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/hooks/useAthletesMap.ts:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/hooks/useAthletesMap.ts:24"}, "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-42d9f39c7378aa02", "name": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/services/api.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/services/api.ts:91"}, "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-5e7a3ba8dddceea6", "name": "Commented-code block (5 lines) in aimvision-ml/tests/test_camera_calibration.py:249", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-ml/tests/test_camera_calibration.py:249"}, "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-8461ea1bb44640ce", "name": "Legacy-named symbol `shadow_v1` in aimvision-ml/src/aimvision_ml/registry/shadow_routing.py:30", "shortDescription": {"text": "Legacy-named symbol `shadow_v1` in aimvision-ml/src/aimvision_ml/registry/shadow_routing.py:30"}, "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-6ef1db47e6b303cd", "name": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/eval/diagnostic_eval.py:358", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/eval/diagnostic_eval.py:358"}, "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-9c01d8b31c5fd001", "name": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/audio_xcorr.py:266", "shortDescription": {"text": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/audio_xcorr.py:266"}, "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-96e8736fc18cecb7", "name": "Stub function `warmup` (body is just `pass`/`return`) \u2014 aimvision-ml/src/aimvision_ml/inference/pose.py:48", "shortDescription": {"text": "Stub function `warmup` (body is just `pass`/`return`) \u2014 aimvision-ml/src/aimvision_ml/inference/pose.py:48"}, "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-07d0d18dd50aa315", "name": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/charuco_detect.py:84", "shortDescription": {"text": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/charuco_detect.py:84"}, "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-00b730ffbbc76489", "name": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/llm/generate.py:155", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/llm/generate.py:155"}, "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-8d6e1ca8f2ffbc4e", "name": "Commented-code block (10 lines) in aimvision-backend/tests/test_active_learning.py:177", "shortDescription": {"text": "Commented-code block (10 lines) in aimvision-backend/tests/test_active_learning.py:177"}, "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-f5fef56e5ac498eb", "name": "Commented-code block (5 lines) in aimvision-backend/tests/test_auth_login.py:103", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/tests/test_auth_login.py:103"}, "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-baf732e3833e7715", "name": "Commented-code block (5 lines) in aimvision-backend/tests/test_recording_alignment.py:96", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/tests/test_recording_alignment.py:96"}, "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-fc91003191463aaf", "name": "Commented-code block (7 lines) in aimvision-backend/app/config.py:67", "shortDescription": {"text": "Commented-code block (7 lines) in aimvision-backend/app/config.py:67"}, "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-b3edea2aa5385a4e", "name": "Commented-code block (5 lines) in aimvision-backend/app/main.py:56", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/app/main.py:56"}, "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-80fbf152c61052e3", "name": "Commented-code block (5 lines) in aimvision-backend/app/models/session.py:90", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/app/models/session.py:90"}, "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-209ce6747e4be60f", "name": "Commented-code block (5 lines) in aimvision-backend/app/middleware/tenant_context.py:77", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/app/middleware/tenant_context.py:77"}, "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-557e42c62d738d43", "name": "Commented-code block (5 lines) in aimvision-backend/app/services/storage.py:61", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/app/services/storage.py:61"}, "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-c75eb1caf7864adc", "name": "Commented-code block (5 lines) in aimvision-backend/app/workflows/process_session.py:43", "shortDescription": {"text": "Commented-code block (5 lines) in aimvision-backend/app/workflows/process_session.py:43"}, "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-3510ff99a07f37f8", "name": "Commented-code block (8 lines) in aimvision-backend/app/routers/auth.py:212", "shortDescription": {"text": "Commented-code block (8 lines) in aimvision-backend/app/routers/auth.py:212"}, "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-b99d12e62e801e8a", "name": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0001_federation_first_schema.py:27", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0001_federation_first_schema.py:27"}, "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-a210e1d3f7ef62a9", "name": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0005_active_learning_queue.py:4", "shortDescription": {"text": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0005_active_learning_queue.py:4"}, "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-89e7636bf942fa21", "name": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0004_federation_schema_v2.py:4", "shortDescription": {"text": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0004_federation_schema_v2.py:4"}, "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-8f6ff569063cda87", "name": "Legacy-named symbol `0004_federation_schema_v2` in aimvision-backend/alembic/versions/0003_rls_policies.py:14", "shortDescription": {"text": "Legacy-named symbol `0004_federation_schema_v2` in aimvision-backend/alembic/versions/0003_rls_policies.py:14"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2e985f0e64ee6a4", "name": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0003_rls_policies.py:13", "shortDescription": {"text": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0003_rls_policies.py:13"}, "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-b334d875f2339fa1", "name": "5 env vars used in code but missing from .env.example", "shortDescription": {"text": "5 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AIMVISION_SEED_COACH_PASSWORD`, `AIMVISION_SEED_FORCE`, `MODE`, `NODE_ENV`, `VITE_AV_SENTRY_DSN`. 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-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:\naimvision-ml/src/aimvision_ml/inference/audio_shot.py:detect, aimvision-ml/src/aimvision_ml/inference/audio_shot.py:detect, aimvision-ml/src/aimvision_ml/inference/audio_shot.py:detect\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-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:\naimvision-ml/src/aimvision_ml/inference/pose.py:infer, aimvision-ml/src/aimvision_ml/inference/pose.py:infer\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-133d6afb347eef06", "name": "FastAPI POST `upload_recording` without auth dependency \u2014 aimvision-backend/app/routers/session.py:578", "shortDescription": {"text": "FastAPI POST `upload_recording` without auth dependency \u2014 aimvision-backend/app/routers/session.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-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`aimvision-backend/app/routers/athletes.py` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f46b7435c9ff7de", "name": "Unused endpoint: GET /{athlete_id}", "shortDescription": {"text": "Unused endpoint: GET /{athlete_id}"}, "fullDescription": {"text": "`aimvision-backend/app/routers/athletes.py` declares `GET /{athlete_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-ec0dfb306f461e39", "name": "Unused endpoint: GET /{athlete_id}/progress", "shortDescription": {"text": "Unused endpoint: GET /{athlete_id}/progress"}, "fullDescription": {"text": "`aimvision-backend/app/routers/athletes.py` declares `GET /{athlete_id}/progress` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e2aebb8dfde31c6", "name": "Unused endpoint: POST /items", "shortDescription": {"text": "Unused endpoint: POST /items"}, "fullDescription": {"text": "`aimvision-backend/app/routers/active_learning.py` declares `POST /items` 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-45f114055f72c285", "name": "Unused endpoint: GET /items", "shortDescription": {"text": "Unused endpoint: GET /items"}, "fullDescription": {"text": "`aimvision-backend/app/routers/active_learning.py` declares `GET /items` 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-8a58e1b1b5811623", "name": "Unused endpoint: POST /items/{item_id}/claim", "shortDescription": {"text": "Unused endpoint: POST /items/{item_id}/claim"}, "fullDescription": {"text": "`aimvision-backend/app/routers/active_learning.py` declares `POST /items/{item_id}/claim` 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-a6b87d43f677c537", "name": "Unused endpoint: POST /items/{item_id}/label", "shortDescription": {"text": "Unused endpoint: POST /items/{item_id}/label"}, "fullDescription": {"text": "`aimvision-backend/app/routers/active_learning.py` declares `POST /items/{item_id}/label` 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-2be107f50391c32f", "name": "Unused endpoint: POST /items/{item_id}/discard", "shortDescription": {"text": "Unused endpoint: POST /items/{item_id}/discard"}, "fullDescription": {"text": "`aimvision-backend/app/routers/active_learning.py` declares `POST /items/{item_id}/discard` 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-024a26624019d92e", "name": "Unused endpoint: POST /grant", "shortDescription": {"text": "Unused endpoint: POST /grant"}, "fullDescription": {"text": "`aimvision-backend/app/routers/consent.py` declares `POST /grant` 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-a4b8ab45c4aa4bc9", "name": "Unused endpoint: POST /revoke", "shortDescription": {"text": "Unused endpoint: POST /revoke"}, "fullDescription": {"text": "`aimvision-backend/app/routers/consent.py` declares `POST /revoke` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a009b1a56794f45", "name": "Unused endpoint: POST /", "shortDescription": {"text": "Unused endpoint: POST /"}, "fullDescription": {"text": "`aimvision-backend/app/routers/erasure.py` declares `POST /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9687980a4b40abdf", "name": "Unused endpoint: POST /{ticket_id}/execute", "shortDescription": {"text": "Unused endpoint: POST /{ticket_id}/execute"}, "fullDescription": {"text": "`aimvision-backend/app/routers/erasure.py` declares `POST /{ticket_id}/execute` 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-4d1f33b23593b13c", "name": "Unused endpoint: GET /{ticket_id}", "shortDescription": {"text": "Unused endpoint: GET /{ticket_id}"}, "fullDescription": {"text": "`aimvision-backend/app/routers/erasure.py` declares `GET /{ticket_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-ac2f552bf9d967ce", "name": "Unused endpoint: GET /overview", "shortDescription": {"text": "Unused endpoint: GET /overview"}, "fullDescription": {"text": "`aimvision-backend/app/routers/federation.py` declares `GET /overview` 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-6da5d79817ab87b9", "name": "Unused endpoint: GET /clubs", "shortDescription": {"text": "Unused endpoint: GET /clubs"}, "fullDescription": {"text": "`aimvision-backend/app/routers/federation.py` declares `GET /clubs` 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-8d16b1bb2723f51e", "name": "Unused endpoint: POST /signup", "shortDescription": {"text": "Unused endpoint: POST /signup"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /signup` 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-618721b912bad1c2", "name": "Unused endpoint: POST /login", "shortDescription": {"text": "Unused endpoint: POST /login"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /login` 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-1c5d213f62b75719", "name": "Unused endpoint: POST /exchange", "shortDescription": {"text": "Unused endpoint: POST /exchange"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /exchange` 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-7ce17d6b092a81ca", "name": "Unused endpoint: POST /refresh", "shortDescription": {"text": "Unused endpoint: POST /refresh"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /refresh` 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-99fc36db98c134ce", "name": "Unused endpoint: POST /logout", "shortDescription": {"text": "Unused endpoint: POST /logout"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /logout` 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-f4a04bb7bc4fb30e", "name": "Unused endpoint: POST /switch-tenant", "shortDescription": {"text": "Unused endpoint: POST /switch-tenant"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /switch-tenant` 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-36d914a8250fab12", "name": "Unused endpoint: POST /parental-consent", "shortDescription": {"text": "Unused endpoint: POST /parental-consent"}, "fullDescription": {"text": "`aimvision-backend/app/routers/auth.py` declares `POST /parental-consent` 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-af24049c13127ae7", "name": "Unused endpoint: GET /{session_id}", "shortDescription": {"text": "Unused endpoint: GET /{session_id}"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{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-5ebd1c653a6c7f5d", "name": "Unused endpoint: PATCH /{session_id}/end", "shortDescription": {"text": "Unused endpoint: PATCH /{session_id}/end"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `PATCH /{session_id}/end` 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-be380bc6e1580236", "name": "Unused endpoint: POST /{session_id}/process", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/process"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/process` 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-3a9add5133a203ad", "name": "Unused endpoint: GET /{session_id}/summary", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/summary"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/summary` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ee9895c67e573f6", "name": "Unused endpoint: GET /{session_id}/recording", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/recording"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/recording` 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-009cc0e8b6aeac5c", "name": "Unused endpoint: GET /{session_id}/recording/{recording_id}", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/recording/{recording_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-49e29cc6fd0fc994", "name": "Unused endpoint: GET /{session_id}/recording/{recording_id}/bytes", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/bytes"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/recording/{recording_id}/bytes` 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-a2ab51c395f5839c", "name": "Unused endpoint: POST /{session_id}/recording", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/recording"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/recording` 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-51a5031869c27546", "name": "Unused endpoint: PATCH /{session_id}/recording/{recording_id}/alignment", "shortDescription": {"text": "Unused endpoint: PATCH /{session_id}/recording/{recording_id}/alignment"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `PATCH /{session_id}/recording/{recording_id}/alignment` 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-3c82fb2b74c952bd", "name": "Unused endpoint: POST /{session_id}/recording/{recording_id}/calibration", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/recording/{recording_id}/calibration"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/recording/{recording_id}/calibration` 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-eb81fa586c81022f", "name": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/recording/{recording_id}/calibration` 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-7a6d9ecc55a01f5a", "name": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration/health", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration/health"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/recording/{recording_id}/calibration/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5761b9966a8d645b", "name": "Unused endpoint: POST /{session_id}/shots", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/shots"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/shots` 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-e50ec32d828526fc", "name": "Unused endpoint: GET /{session_id}/shots", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/shots"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/shots` 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-93a19ade479db012", "name": "Unused endpoint: POST /{session_id}/shots/{shot_id}/events", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/shots/{shot_id}/events"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/shots/{shot_id}/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-56a3a61a5b49ce2f", "name": "Unused endpoint: GET /{session_id}/shots/{shot_id}/events", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/shots/{shot_id}/events"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/shots/{shot_id}/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-c849dc1a054d306d", "name": "Unused endpoint: POST /{session_id}/coaching-note", "shortDescription": {"text": "Unused endpoint: POST /{session_id}/coaching-note"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `POST /{session_id}/coaching-note` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b6849ebe34bcbe7", "name": "Unused endpoint: GET /{session_id}/coaching-note", "shortDescription": {"text": "Unused endpoint: GET /{session_id}/coaching-note"}, "fullDescription": {"text": "`aimvision-backend/app/routers/session.py` declares `GET /{session_id}/coaching-note` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18820"}, "properties": {"repository": "sambawy01/Aim-Vision", "repoUrl": "https://github.com/sambawy01/Aim-Vision", "branch": "main"}, "results": [{"ruleId": "scanner-6da3e876cbe68865", "level": "note", "message": {"text": "Possibly dead Python function: rollback"}, "properties": {"repobilityId": "4a902f5f72fd8ed7", "scanner": "scanner-primary", "fingerprint": "6da3e876cbe68865", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/registry/mlflow_client.py:69"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4bedcb213059462e", "level": "note", "message": {"text": "Possibly dead Python function: should_shadow"}, "properties": {"repobilityId": "c6acd95e331e6774", "scanner": "scanner-primary", "fingerprint": "4bedcb213059462e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/registry/shadow_routing.py:26"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb06e5116caf297b", "level": "note", "message": {"text": "Possibly dead Python function: warmup"}, "properties": {"repobilityId": "bd781fc7723196a5", "scanner": "scanner-primary", "fingerprint": "cb06e5116caf297b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/inference/pose.py:48"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9356e4b5eb72c89", "level": "note", "message": {"text": "Possibly dead Python function: objective"}, "properties": {"repobilityId": "b2ca8f96950eb149", "scanner": "scanner-primary", "fingerprint": "b9356e4b5eb72c89", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/inference/calibration.py:80"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1ad94c4a785217a7", "level": "note", "message": {"text": "Possibly dead Python function: diagnose"}, "properties": {"repobilityId": "1bd72d25f358de19", "scanner": "scanner-primary", "fingerprint": "1ad94c4a785217a7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/inference/pipeline.py:62"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9bcca438b1938b5e", "level": "note", "message": {"text": "Possibly dead Python function: select_primary"}, "properties": {"repobilityId": "a9ecb12e8ea1a54b", "scanner": "scanner-primary", "fingerprint": "9bcca438b1938b5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/inference/diagnostic.py:73"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7edbd3bc722490f0", "level": "note", "message": {"text": "Possibly dead Python function: softmax"}, "properties": {"repobilityId": "0c25b0db970fdf92", "scanner": "scanner-primary", "fingerprint": "7edbd3bc722490f0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/inference/diagnostic.py:100"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db780553c28bc809", "level": "note", "message": {"text": "Possibly dead Python function: schema_doc_path"}, "properties": {"repobilityId": "e59ddc7b97629d06", "scanner": "scanner-primary", "fingerprint": "db780553c28bc809", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/llm/schema.py:28"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41d5946be12e08cb", "level": "note", "message": {"text": "Possibly dead Python function: multitask_bce_loss"}, "properties": {"repobilityId": "406679199dd63f0a", "scanner": "scanner-primary", "fingerprint": "41d5946be12e08cb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/training/losses.py:18"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a4035d652c248d50", "level": "note", "message": {"text": "Possibly dead Python function: select_bald"}, "properties": {"repobilityId": "12da4bed673dccfb", "scanner": "scanner-primary", "fingerprint": "a4035d652c248d50", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/training/active_learning.py:42"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f4d3c76c7341fd8d", "level": "note", "message": {"text": "Possibly dead Python function: select_coreset"}, "properties": {"repobilityId": "e93b1c0148755ab3", "scanner": "scanner-primary", "fingerprint": "f4d3c76c7341fd8d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/training/active_learning.py:59"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-23f501588d1a2ed4", "level": "note", "message": {"text": "Possibly dead Python function: filter_clips_for_training"}, "properties": {"repobilityId": "755a06fb1958d172", "scanner": "scanner-primary", "fingerprint": "23f501588d1a2ed4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/src/aimvision_ml/training/datasets.py:46"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a7f04dfe1fa1676", "level": "note", "message": {"text": "Possibly dead Python function: db_session"}, "properties": {"repobilityId": "13dd19e96fa0ff1e", "scanner": "scanner-primary", "fingerprint": "2a7f04dfe1fa1676", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/deps.py:25"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f9ffc6203b88c5e", "level": "note", "message": {"text": "Possibly dead Python function: db_session_anon"}, "properties": {"repobilityId": "0b602471b4ff09ac", "scanner": "scanner-primary", "fingerprint": "8f9ffc6203b88c5e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/deps.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9eb4b3e802aa42ec", "level": "note", "message": {"text": "Possibly dead Python function: utcnow"}, "properties": {"repobilityId": "3764ddf6d1326a6d", "scanner": "scanner-primary", "fingerprint": "9eb4b3e802aa42ec", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/models/base.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b7a630c676d986e0", "level": "note", "message": {"text": "Possibly dead Python function: assert_membership"}, "properties": {"repobilityId": "972aeeca28252794", "scanner": "scanner-primary", "fingerprint": "b7a630c676d986e0", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/services/tenancy.py:12"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8a9fee98d44ded9f", "level": "note", "message": {"text": "Possibly dead Python function: parse_tenant_scope"}, "properties": {"repobilityId": "66b84b59bccedd7b", "scanner": "scanner-primary", "fingerprint": "8a9fee98d44ded9f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/services/tenancy.py:39"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b9264202b2f96cab", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "b9264202b2f96cab", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/alembic/versions/0010_shot_events_unique.py:32"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d343c1f1ea6a0af5", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "d343c1f1ea6a0af5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/alembic/versions/0010_shot_events_unique.py:41"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-78da6f288b93790d", "level": "note", "message": {"text": "Possibly dead Python function: upgrade"}, "properties": {"repobilityId": "cf0b8e5e6e2f8bc4", "scanner": "scanner-primary", "fingerprint": "78da6f288b93790d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/alembic/versions/0001_federation_first_schema.py:26"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0993dbd99db7e08", "level": "note", "message": {"text": "Possibly dead Python function: downgrade"}, "properties": {"repobilityId": "c03debbf11efa0c5", "scanner": "scanner-primary", "fingerprint": "f0993dbd99db7e08", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/alembic/versions/0001_federation_first_schema.py:331"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a25573392fd6bc22", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 aimvision-mobile/src/screens/settings/AboutScreen.tsx:23"}, "properties": {"repobilityId": "21d2fad106ef53f4", "scanner": "scanner-primary", "fingerprint": "a25573392fd6bc22", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-62d5551ae85e44a4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 aimvision-web/src/components/AppShell.tsx:50"}, "properties": {"repobilityId": "2c7edefb349e2f01", "scanner": "scanner-primary", "fingerprint": "62d5551ae85e44a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9eb16d8ddb428c93", "level": "warning", "message": {"text": "Privileged port 13 in use"}, "properties": {"repobilityId": "79d721e4d6f64798", "scanner": "scanner-primary", "fingerprint": "9eb16d8ddb428c93", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f91fba216d018ef5", "level": "warning", "message": {"text": "Privileged port 54 in use"}, "properties": {"repobilityId": "cfa860c24fdc3eef", "scanner": "scanner-primary", "fingerprint": "f91fba216d018ef5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7a6019c41b5a634b", "level": "warning", "message": {"text": "Privileged port 70 in use"}, "properties": {"repobilityId": "353d31c086b0a24a", "scanner": "scanner-primary", "fingerprint": "7a6019c41b5a634b", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-643b8fcbefbc2cab", "level": "warning", "message": {"text": "Privileged port 35 in use"}, "properties": {"repobilityId": "e997ec9811d79c6d", "scanner": "scanner-primary", "fingerprint": "643b8fcbefbc2cab", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ef5b742b69d74899", "level": "warning", "message": {"text": "Privileged port 24 in use"}, "properties": {"repobilityId": "a6356ba91a17fcb8", "scanner": "scanner-primary", "fingerprint": "ef5b742b69d74899", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-55ce010ec75cf5a5", "level": "warning", "message": {"text": "Privileged port 28 in use"}, "properties": {"repobilityId": "5c3f00b3e839840d", "scanner": "scanner-primary", "fingerprint": "55ce010ec75cf5a5", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-ml/configs/rtmpose_lite/mobile.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-067eda8d276b6808", "level": "warning", "message": {"text": "Privileged port 17 in use"}, "properties": {"repobilityId": "0bf38fb8f89ec589", "scanner": "scanner-primary", "fingerprint": "067eda8d276b6808", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da8875b24b290a1e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "ce45b92f22df36ad", "scanner": "scanner-primary", "fingerprint": "da8875b24b290a1e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da8875b24b290a1e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "6e4cc90688031437", "scanner": "scanner-primary", "fingerprint": "da8875b24b290a1e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/Dockerfile"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-6840ea4e4a88e647", "level": "error", "message": {"text": "Possible secret in aimvision-backend/scripts/smoke_gotrue_exchange.sh"}, "properties": {"repobilityId": "fe5fe93249de41c4", "scanner": "scanner-primary", "fingerprint": "6840ea4e4a88e647", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/scripts/smoke_gotrue_exchange.sh"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-effaa1c234733f77", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f061b39e50a32a06", "scanner": "scanner-primary", "fingerprint": "effaa1c234733f77", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-orchestrator.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-effaa1c234733f77", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68e9e7bf55bc3eac", "scanner": "scanner-primary", "fingerprint": "effaa1c234733f77", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-orchestrator.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-effaa1c234733f77", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f061b39e50a32a06", "scanner": "scanner-primary", "fingerprint": "effaa1c234733f77", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-orchestrator.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-effaa1c234733f77", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d01a602c813177de", "scanner": "scanner-primary", "fingerprint": "effaa1c234733f77", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-orchestrator.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-effaa1c234733f77", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0a58dd73cc8e0803", "scanner": "scanner-primary", "fingerprint": "effaa1c234733f77", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci-orchestrator.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d742cf16538a10a1", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32de788dd7d99556", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8cf397f82988394", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8932f49c4d720cf0", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c6fbbf45a940264", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-6494f600477da24f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "be83098fecc3cbc8", "scanner": "scanner-primary", "fingerprint": "6494f600477da24f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-native-build.yml"}, "region": {"startLine": 128}}}]}, {"ruleId": "scanner-c3b77ab9328968f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b96b2fd6d0fc4ee8", "scanner": "scanner-primary", "fingerprint": "c3b77ab9328968f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ml-ci.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-c3b77ab9328968f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bf676da1b6d2695d", "scanner": "scanner-primary", "fingerprint": "c3b77ab9328968f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ml-ci.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-c3b77ab9328968f2", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dc3c14ddbc6efbd2", "scanner": "scanner-primary", "fingerprint": "c3b77ab9328968f2", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ml-ci.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-78cba6c4de740b64", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5c99081ae7da09ed", "scanner": "scanner-primary", "fingerprint": "78cba6c4de740b64", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-context.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-a10bd78f8281a7c9", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "07909109c53e0b6f", "scanner": "scanner-primary", "fingerprint": "a10bd78f8281a7c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-context.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7a64b829141e936", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23d33824dbb37123", "scanner": "scanner-primary", "fingerprint": "e7a64b829141e936", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-eas-release.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-e7a64b829141e936", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6b457878fa620c2a", "scanner": "scanner-primary", "fingerprint": "e7a64b829141e936", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-eas-release.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-e7a64b829141e936", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fc218f75d443da0f", "scanner": "scanner-primary", "fingerprint": "e7a64b829141e936", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-eas-release.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8a57ca3862d35729", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13eb28052845a667", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8a57ca3862d35729", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13eb28052845a667", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8a57ca3862d35729", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "13eb28052845a667", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-21aa0c39a7c1ca23", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8a57ca3862d35729", "scanner": "scanner-primary", "fingerprint": "21aa0c39a7c1ca23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/security.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-7d7b13a42ec7ec22", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "786bfa970ba6aa71", "scanner": "scanner-primary", "fingerprint": "7d7b13a42ec7ec22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/camera-core-ci.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-7d7b13a42ec7ec22", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "786bfa970ba6aa71", "scanner": "scanner-primary", "fingerprint": "7d7b13a42ec7ec22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/camera-core-ci.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-7d7b13a42ec7ec22", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "786bfa970ba6aa71", "scanner": "scanner-primary", "fingerprint": "7d7b13a42ec7ec22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/camera-core-ci.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-7d7b13a42ec7ec22", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "786bfa970ba6aa71", "scanner": "scanner-primary", "fingerprint": "7d7b13a42ec7ec22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/camera-core-ci.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c8786762c40f22b9", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49490e69ae746b27", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a0e705c1e7c76635", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c8786762c40f22b9", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49490e69ae746b27", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-f2285fe1e868b87b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a0e705c1e7c76635", "scanner": "scanner-primary", "fingerprint": "f2285fe1e868b87b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mobile-ci.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-dfd9db5038437f79", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0e6d715877977e88", "scanner": "scanner-primary", "fingerprint": "dfd9db5038437f79", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/web-ci.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-dfd9db5038437f79", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "93c9c105a35be365", "scanner": "scanner-primary", "fingerprint": "dfd9db5038437f79", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/web-ci.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "654bc97536e7fe62", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "7e39238303ac82d0", "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": "bae3ec96c86b1aa1", "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": "7a2b348c76c72999", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "9f12a63fb9706146", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "6e9abe5efe1bf1a3", "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": "718b6b74062ca988", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-aeb2e0a8f596cc5d", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-mobile/babel.config.js:7"}, "properties": {"repobilityId": "fbd5399e4dafc13c", "scanner": "scanner-primary", "fingerprint": "aeb2e0a8f596cc5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa7c4cd792bf524c", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-mobile/jest.config.js:5"}, "properties": {"repobilityId": "5047fc2b23cc2d34", "scanner": "scanner-primary", "fingerprint": "aa7c4cd792bf524c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3a012cd4b9e20cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-mobile/.eslintrc.cjs:3"}, "properties": {"repobilityId": "fe3a46725921be09", "scanner": "scanner-primary", "fingerprint": "e3a012cd4b9e20cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af82146bf9b238a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-mobile/app.config.ts:3"}, "properties": {"repobilityId": "d4b4b974798a0871", "scanner": "scanner-primary", "fingerprint": "af82146bf9b238a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6902fb52eceb1c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/sync/conflict.ts:94"}, "properties": {"repobilityId": "b25d0a5b6e08f0fa", "scanner": "scanner-primary", "fingerprint": "d6902fb52eceb1c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-719df0f686fd0af5", "level": "none", "message": {"text": "Commented-code block (7 lines) in aimvision-mobile/src/config/statsig.ts:18"}, "properties": {"repobilityId": "3c64c13e4d506a5e", "scanner": "scanner-primary", "fingerprint": "719df0f686fd0af5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29e5a0afd4d65263", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/NewSessionScreen.tsx:68"}, "properties": {"repobilityId": "59fd1173895d7e4d", "scanner": "scanner-primary", "fingerprint": "29e5a0afd4d65263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad28b130b64d4bf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-mobile/src/screens/sessions/RecordingPlayerScreen.tsx:64"}, "properties": {"repobilityId": "66b99d1c470ae0b2", "scanner": "scanner-primary", "fingerprint": "ad28b130b64d4bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19716c841f550b56", "level": "none", "message": {"text": "Commented-code block (8 lines) in aimvision-mobile/src/screens/capture/CapturePhoneScreen.tsx:67"}, "properties": {"repobilityId": "c94b655842f0da7d", "scanner": "scanner-primary", "fingerprint": "19716c841f550b56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46b694993fff2d2c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/api.ts:106"}, "properties": {"repobilityId": "7fa813ada9ed2a01", "scanner": "scanner-primary", "fingerprint": "46b694993fff2d2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96aa390a49ae0251", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-mobile/src/services/auth.ts:239"}, "properties": {"repobilityId": "55dc36c476b0bfd6", "scanner": "scanner-primary", "fingerprint": "96aa390a49ae0251", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5fcf262c8076d9dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-web/src/routes/index.tsx:47"}, "properties": {"repobilityId": "2683700ac1e0bd54", "scanner": "scanner-primary", "fingerprint": "5fcf262c8076d9dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ba15e93c04e24a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/federation/dashboard.tsx:41"}, "properties": {"repobilityId": "f367c3b4ef62cc37", "scanner": "scanner-primary", "fingerprint": "5ba15e93c04e24a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7a8daf08fe069447", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/list.tsx:16"}, "properties": {"repobilityId": "9108f5e45fdc4e27", "scanner": "scanner-primary", "fingerprint": "7a8daf08fe069447", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15ce1351dbd62549", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/sessions/new.tsx:37"}, "properties": {"repobilityId": "b86d3f870e7dba16", "scanner": "scanner-primary", "fingerprint": "15ce1351dbd62549", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0555d899e5b40b6c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/routes/app/erasure/request.tsx:43"}, "properties": {"repobilityId": "459f0286186490aa", "scanner": "scanner-primary", "fingerprint": "0555d899e5b40b6c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d41a439c7ab62782", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/hooks/useAthletesMap.ts:24"}, "properties": {"repobilityId": "e0e1c99a93d4cca1", "scanner": "scanner-primary", "fingerprint": "d41a439c7ab62782", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-42d9f39c7378aa02", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 aimvision-web/src/services/api.ts:91"}, "properties": {"repobilityId": "929dce2ee752ecdb", "scanner": "scanner-primary", "fingerprint": "42d9f39c7378aa02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e7a3ba8dddceea6", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-ml/tests/test_camera_calibration.py:249"}, "properties": {"repobilityId": "975e5734e36923a3", "scanner": "scanner-primary", "fingerprint": "5e7a3ba8dddceea6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8461ea1bb44640ce", "level": "note", "message": {"text": "Legacy-named symbol `shadow_v1` in aimvision-ml/src/aimvision_ml/registry/shadow_routing.py:30"}, "properties": {"repobilityId": "df91fc2806944f36", "scanner": "scanner-primary", "fingerprint": "8461ea1bb44640ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ef1db47e6b303cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/eval/diagnostic_eval.py:358"}, "properties": {"repobilityId": "b7d9c6a27d350ff9", "scanner": "scanner-primary", "fingerprint": "6ef1db47e6b303cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c01d8b31c5fd001", "level": "none", "message": {"text": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/audio_xcorr.py:266"}, "properties": {"repobilityId": "28803cedc79c90ba", "scanner": "scanner-primary", "fingerprint": "9c01d8b31c5fd001", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-96e8736fc18cecb7", "level": "note", "message": {"text": "Stub function `warmup` (body is just `pass`/`return`) \u2014 aimvision-ml/src/aimvision_ml/inference/pose.py:48"}, "properties": {"repobilityId": "9a1fea08eae1c5d4", "scanner": "scanner-primary", "fingerprint": "96e8736fc18cecb7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-07d0d18dd50aa315", "level": "none", "message": {"text": "Commented-code block (7 lines) in aimvision-ml/src/aimvision_ml/inference/charuco_detect.py:84"}, "properties": {"repobilityId": "451c7ec5636d3b76", "scanner": "scanner-primary", "fingerprint": "07d0d18dd50aa315", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b730ffbbc76489", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-ml/src/aimvision_ml/llm/generate.py:155"}, "properties": {"repobilityId": "8054013aa02d9e6b", "scanner": "scanner-primary", "fingerprint": "00b730ffbbc76489", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d6e1ca8f2ffbc4e", "level": "none", "message": {"text": "Commented-code block (10 lines) in aimvision-backend/tests/test_active_learning.py:177"}, "properties": {"repobilityId": "74e6c354cf2998da", "scanner": "scanner-primary", "fingerprint": "8d6e1ca8f2ffbc4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5fef56e5ac498eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/tests/test_auth_login.py:103"}, "properties": {"repobilityId": "ca209dd1920c53e7", "scanner": "scanner-primary", "fingerprint": "f5fef56e5ac498eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baf732e3833e7715", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/tests/test_recording_alignment.py:96"}, "properties": {"repobilityId": "11d39fba720037cc", "scanner": "scanner-primary", "fingerprint": "baf732e3833e7715", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc91003191463aaf", "level": "none", "message": {"text": "Commented-code block (7 lines) in aimvision-backend/app/config.py:67"}, "properties": {"repobilityId": "6c18642ab0c1970d", "scanner": "scanner-primary", "fingerprint": "fc91003191463aaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3edea2aa5385a4e", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/app/main.py:56"}, "properties": {"repobilityId": "4a3b5b47dfd3987b", "scanner": "scanner-primary", "fingerprint": "b3edea2aa5385a4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80fbf152c61052e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/app/models/session.py:90"}, "properties": {"repobilityId": "85a2a62c4ad00a50", "scanner": "scanner-primary", "fingerprint": "80fbf152c61052e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-209ce6747e4be60f", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/app/middleware/tenant_context.py:77"}, "properties": {"repobilityId": "b8d21d0ca98dfc0f", "scanner": "scanner-primary", "fingerprint": "209ce6747e4be60f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-557e42c62d738d43", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/app/services/storage.py:61"}, "properties": {"repobilityId": "537f428ff5c2342e", "scanner": "scanner-primary", "fingerprint": "557e42c62d738d43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c75eb1caf7864adc", "level": "none", "message": {"text": "Commented-code block (5 lines) in aimvision-backend/app/workflows/process_session.py:43"}, "properties": {"repobilityId": "9290fa6bfe22bc2d", "scanner": "scanner-primary", "fingerprint": "c75eb1caf7864adc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3510ff99a07f37f8", "level": "none", "message": {"text": "Commented-code block (8 lines) in aimvision-backend/app/routers/auth.py:212"}, "properties": {"repobilityId": "eca186e74e01ae12", "scanner": "scanner-primary", "fingerprint": "3510ff99a07f37f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b99d12e62e801e8a", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0001_federation_first_schema.py:27"}, "properties": {"repobilityId": "1239963a1d45d507", "scanner": "scanner-primary", "fingerprint": "b99d12e62e801e8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a210e1d3f7ef62a9", "level": "note", "message": {"text": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0005_active_learning_queue.py:4"}, "properties": {"repobilityId": "7ab87acbd06c7b8d", "scanner": "scanner-primary", "fingerprint": "a210e1d3f7ef62a9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-89e7636bf942fa21", "level": "note", "message": {"text": "Legacy-named symbol `0004_federation_v2` in aimvision-backend/alembic/versions/0004_federation_schema_v2.py:4"}, "properties": {"repobilityId": "55bb122404ee8ed2", "scanner": "scanner-primary", "fingerprint": "89e7636bf942fa21", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8f6ff569063cda87", "level": "note", "message": {"text": "Legacy-named symbol `0004_federation_schema_v2` in aimvision-backend/alembic/versions/0003_rls_policies.py:14"}, "properties": {"repobilityId": "eb5dadab3b8c556d", "scanner": "scanner-primary", "fingerprint": "8f6ff569063cda87", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d2e985f0e64ee6a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in aimvision-backend/alembic/versions/0003_rls_policies.py:13"}, "properties": {"repobilityId": "5a6fc81a91564b87", "scanner": "scanner-primary", "fingerprint": "d2e985f0e64ee6a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b334d875f2339fa1", "level": "note", "message": {"text": "5 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "faa38682016f5d53", "scanner": "scanner-primary", "fingerprint": "b334d875f2339fa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "74f604a0e526ae49", "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": "3f901fd51b622a14", "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": "1666de3d71c9192d", "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": "8a152ae146fbf168", "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": "b38235605c6e98fc", "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": "6246c167843822ff", "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": "78d494521980d799", "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": "66a5896ad465638b", "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": "b24315071d4bac1a", "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": "d4e502b550de161f", "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": "a9e6a00e2622b7a1", "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": "c271ec33cba6afa2", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "e56fd39b00ee55c1", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "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": "2efcac5babcf552c", "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": "6be25e90bec1f0a5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-133d6afb347eef06", "level": "error", "message": {"text": "FastAPI POST `upload_recording` without auth dependency \u2014 aimvision-backend/app/routers/session.py:578"}, "properties": {"repobilityId": "f9085eaf65a243e1", "scanner": "scanner-primary", "fingerprint": "133d6afb347eef06", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "aimvision-backend/app/routers/session.py"}, "region": {"startLine": 578}}}]}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "155afe2108639674", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6f46b7435c9ff7de", "level": "note", "message": {"text": "Unused endpoint: GET /{athlete_id}"}, "properties": {"repobilityId": "e2ce22b8fb889998", "scanner": "scanner-primary", "fingerprint": "6f46b7435c9ff7de", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ec0dfb306f461e39", "level": "note", "message": {"text": "Unused endpoint: GET /{athlete_id}/progress"}, "properties": {"repobilityId": "c7dede205c1e96d5", "scanner": "scanner-primary", "fingerprint": "ec0dfb306f461e39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7e2aebb8dfde31c6", "level": "note", "message": {"text": "Unused endpoint: POST /items"}, "properties": {"repobilityId": "acf6294315487c6e", "scanner": "scanner-primary", "fingerprint": "7e2aebb8dfde31c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-45f114055f72c285", "level": "note", "message": {"text": "Unused endpoint: GET /items"}, "properties": {"repobilityId": "2d9244439cf190dd", "scanner": "scanner-primary", "fingerprint": "45f114055f72c285", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8a58e1b1b5811623", "level": "note", "message": {"text": "Unused endpoint: POST /items/{item_id}/claim"}, "properties": {"repobilityId": "3d0596d37f752982", "scanner": "scanner-primary", "fingerprint": "8a58e1b1b5811623", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6b87d43f677c537", "level": "note", "message": {"text": "Unused endpoint: POST /items/{item_id}/label"}, "properties": {"repobilityId": "dbd5bf648db1c6c6", "scanner": "scanner-primary", "fingerprint": "a6b87d43f677c537", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2be107f50391c32f", "level": "note", "message": {"text": "Unused endpoint: POST /items/{item_id}/discard"}, "properties": {"repobilityId": "163df36494f507ed", "scanner": "scanner-primary", "fingerprint": "2be107f50391c32f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-024a26624019d92e", "level": "note", "message": {"text": "Unused endpoint: POST /grant"}, "properties": {"repobilityId": "90ae8a7727a23e17", "scanner": "scanner-primary", "fingerprint": "024a26624019d92e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a4b8ab45c4aa4bc9", "level": "note", "message": {"text": "Unused endpoint: POST /revoke"}, "properties": {"repobilityId": "385c7c08c2362411", "scanner": "scanner-primary", "fingerprint": "a4b8ab45c4aa4bc9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a009b1a56794f45", "level": "note", "message": {"text": "Unused endpoint: POST /"}, "properties": {"repobilityId": "78eabd2493c72dd3", "scanner": "scanner-primary", "fingerprint": "7a009b1a56794f45", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9687980a4b40abdf", "level": "note", "message": {"text": "Unused endpoint: POST /{ticket_id}/execute"}, "properties": {"repobilityId": "edfd672d61504522", "scanner": "scanner-primary", "fingerprint": "9687980a4b40abdf", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d1f33b23593b13c", "level": "note", "message": {"text": "Unused endpoint: GET /{ticket_id}"}, "properties": {"repobilityId": "97e43c48b9218e5e", "scanner": "scanner-primary", "fingerprint": "4d1f33b23593b13c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ac2f552bf9d967ce", "level": "note", "message": {"text": "Unused endpoint: GET /overview"}, "properties": {"repobilityId": "dcc7860bb1649343", "scanner": "scanner-primary", "fingerprint": "ac2f552bf9d967ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6da5d79817ab87b9", "level": "note", "message": {"text": "Unused endpoint: GET /clubs"}, "properties": {"repobilityId": "7ecc9f3dc9b78d1c", "scanner": "scanner-primary", "fingerprint": "6da5d79817ab87b9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8d16b1bb2723f51e", "level": "note", "message": {"text": "Unused endpoint: POST /signup"}, "properties": {"repobilityId": "8530d4dc763c6f85", "scanner": "scanner-primary", "fingerprint": "8d16b1bb2723f51e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-618721b912bad1c2", "level": "note", "message": {"text": "Unused endpoint: POST /login"}, "properties": {"repobilityId": "80b6e513587edf74", "scanner": "scanner-primary", "fingerprint": "618721b912bad1c2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1c5d213f62b75719", "level": "note", "message": {"text": "Unused endpoint: POST /exchange"}, "properties": {"repobilityId": "c625735fc8347c43", "scanner": "scanner-primary", "fingerprint": "1c5d213f62b75719", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ce17d6b092a81ca", "level": "note", "message": {"text": "Unused endpoint: POST /refresh"}, "properties": {"repobilityId": "11e7c5aa3ca1e5d6", "scanner": "scanner-primary", "fingerprint": "7ce17d6b092a81ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99fc36db98c134ce", "level": "note", "message": {"text": "Unused endpoint: POST /logout"}, "properties": {"repobilityId": "2b06e40de182b0a2", "scanner": "scanner-primary", "fingerprint": "99fc36db98c134ce", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f4a04bb7bc4fb30e", "level": "note", "message": {"text": "Unused endpoint: POST /switch-tenant"}, "properties": {"repobilityId": "dd0a9a79f20cc717", "scanner": "scanner-primary", "fingerprint": "f4a04bb7bc4fb30e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-36d914a8250fab12", "level": "note", "message": {"text": "Unused endpoint: POST /parental-consent"}, "properties": {"repobilityId": "aa5c562d661585be", "scanner": "scanner-primary", "fingerprint": "36d914a8250fab12", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-af24049c13127ae7", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}"}, "properties": {"repobilityId": "016efadaca2763c8", "scanner": "scanner-primary", "fingerprint": "af24049c13127ae7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ebd1c653a6c7f5d", "level": "note", "message": {"text": "Unused endpoint: PATCH /{session_id}/end"}, "properties": {"repobilityId": "9c6d4def2dfe049f", "scanner": "scanner-primary", "fingerprint": "5ebd1c653a6c7f5d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-be380bc6e1580236", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/process"}, "properties": {"repobilityId": "68caa45d02b0ac4b", "scanner": "scanner-primary", "fingerprint": "be380bc6e1580236", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a9add5133a203ad", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/summary"}, "properties": {"repobilityId": "a83770f3bfaf9ec5", "scanner": "scanner-primary", "fingerprint": "3a9add5133a203ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5ee9895c67e573f6", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/recording"}, "properties": {"repobilityId": "356333da1ff8372f", "scanner": "scanner-primary", "fingerprint": "5ee9895c67e573f6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-009cc0e8b6aeac5c", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}"}, "properties": {"repobilityId": "24eedb37815f421c", "scanner": "scanner-primary", "fingerprint": "009cc0e8b6aeac5c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49e29cc6fd0fc994", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/bytes"}, "properties": {"repobilityId": "2e1c0d79dc4937e4", "scanner": "scanner-primary", "fingerprint": "49e29cc6fd0fc994", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2ab51c395f5839c", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/recording"}, "properties": {"repobilityId": "20011492d5d71be4", "scanner": "scanner-primary", "fingerprint": "a2ab51c395f5839c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51a5031869c27546", "level": "note", "message": {"text": "Unused endpoint: PATCH /{session_id}/recording/{recording_id}/alignment"}, "properties": {"repobilityId": "888f4cf3c2057756", "scanner": "scanner-primary", "fingerprint": "51a5031869c27546", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3c82fb2b74c952bd", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/recording/{recording_id}/calibration"}, "properties": {"repobilityId": "bd70ee00d5bb4ab0", "scanner": "scanner-primary", "fingerprint": "3c82fb2b74c952bd", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eb81fa586c81022f", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration"}, "properties": {"repobilityId": "b2a3e9e86e468898", "scanner": "scanner-primary", "fingerprint": "eb81fa586c81022f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7a6d9ecc55a01f5a", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/recording/{recording_id}/calibration/health"}, "properties": {"repobilityId": "ffe1a23046512f42", "scanner": "scanner-primary", "fingerprint": "7a6d9ecc55a01f5a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5761b9966a8d645b", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/shots"}, "properties": {"repobilityId": "41fe17ccec70fec0", "scanner": "scanner-primary", "fingerprint": "5761b9966a8d645b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e50ec32d828526fc", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/shots"}, "properties": {"repobilityId": "b3fb7673c04abb08", "scanner": "scanner-primary", "fingerprint": "e50ec32d828526fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-93a19ade479db012", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/shots/{shot_id}/events"}, "properties": {"repobilityId": "a22a6d363b64fa54", "scanner": "scanner-primary", "fingerprint": "93a19ade479db012", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-56a3a61a5b49ce2f", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/shots/{shot_id}/events"}, "properties": {"repobilityId": "35fa5ff992272b83", "scanner": "scanner-primary", "fingerprint": "56a3a61a5b49ce2f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c849dc1a054d306d", "level": "note", "message": {"text": "Unused endpoint: POST /{session_id}/coaching-note"}, "properties": {"repobilityId": "772452c860c127ea", "scanner": "scanner-primary", "fingerprint": "c849dc1a054d306d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b6849ebe34bcbe7", "level": "note", "message": {"text": "Unused endpoint: GET /{session_id}/coaching-note"}, "properties": {"repobilityId": "a430079b89eb7c1b", "scanner": "scanner-primary", "fingerprint": "4b6849ebe34bcbe7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}