{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-157f70d36b76bde4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/PortalShell.tsx:186", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/PortalShell.tsx:186"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-928e2016ef2754a0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/EventsTab.tsx:431", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/EventsTab.tsx:431"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-862d26416622d0e5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiscoverTab.tsx:225", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiscoverTab.tsx:225"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d3836902b764c91", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:60", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:60"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f6a686579362f23", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/OverviewClient.tsx:322", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/OverviewClient.tsx:322"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e855e676893708f0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/UsersClient.tsx:405", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/UsersClient.tsx:405"}, "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-dec80bf678949c60", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/[id]/UserDetailClient.tsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/[id]/UserDetailClient.tsx:162"}, "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-d2d266d570cd651c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/graph/GraphClient.tsx:588", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/graph/GraphClient.tsx:588"}, "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-9ad1eaa65e3e20c8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/cost/CostClient.tsx:1129", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/cost/CostClient.tsx:1129"}, "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-eb2e5a37b35c180f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/neon/NeonSvcClient.tsx:460", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/neon/NeonSvcClient.tsx:460"}, "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-3a91711dcb32c3c5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/socketio/SocketIoSvcClient.tsx:431", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/socketio/SocketIoSvcClient.tsx:431"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-052635416544807f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/render/RenderSvcClient.tsx:693", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/render/RenderSvcClient.tsx:693"}, "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-ecfc6e88256ba696", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/_zbx/ui.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/_zbx/ui.tsx:136"}, "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-61ee1770811a7364", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/tour-monitor/TourMonitorClient.tsx:1340", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/tour-monitor/TourMonitorClient.tsx:1340"}, "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-835eae4c7f17a2f8", "name": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8c78bdb4e9c8c14a", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-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-ed253dd78aadfc1d", "name": "Insecure pattern 'new_function_used' in src/instrumentation.ts:26", "shortDescription": {"text": "Insecure pattern 'new_function_used' in src/instrumentation.ts:26"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5e819a6198664991", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:60", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:60"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ecc87899b2ec0063", "name": "Insecure pattern 'cors_wildcard' in src/app/api/public/status/route.ts:41", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/public/status/route.ts:41"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-953073ef70813d1b", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/app/admin/replays/[sessionId]/ReplayClient.tsx:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/admin/replays/[sessionId]/ReplayClient.tsx:121"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-74de06c093f271bd", "name": "Insecure pattern 'new_function_used' in src/lib/otel/active-span.ts:16", "shortDescription": {"text": "Insecure pattern 'new_function_used' in src/lib/otel/active-span.ts:16"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bd551ed35f67cb8d", "name": "Insecure pattern 'node_child_process' in src/lib/jobs/synthetic-login.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/lib/jobs/synthetic-login.ts:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f0f9976570faa6d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "docker/setup-buildx-action@v3 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-68a2b8f5c8cd6b53", "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-3e6b588ce589ea58", "name": "Very large file: src/app/admin/ops/cost/CostClient.tsx (1385 lines)", "shortDescription": {"text": "Very large file: src/app/admin/ops/cost/CostClient.tsx (1385 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c16a63e1f7e66ec", "name": "Very large file: src/lib/jobs/weekly-report.ts (1766 lines)", "shortDescription": {"text": "Very large file: src/lib/jobs/weekly-report.ts (1766 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "17 test file(s) for 360 source file(s) (ratio 0.05). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "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-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 133 placeholder/mock markers across 42 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00fa1609c3febc95", "name": "Agent authority lacks a verifier contract: docs/architecture/SKILL.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: docs/architecture/SKILL.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6110a8a7c3a02d1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MetaNetworkExplorer.tsx:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MetaNetworkExplorer.tsx:93"}, "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-2555d3840c6b9b34", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EventsTab.tsx:26", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EventsTab.tsx:26"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea2070b84d62b69b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PersonalTab.tsx:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PersonalTab.tsx:25"}, "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-324fb8ebbecf5127", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/DiscoverTab.tsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/DiscoverTab.tsx:33"}, "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-5c58212a868c4ac0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/WorldEditModal.tsx:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/WorldEditModal.tsx:96"}, "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-787297f51161831f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/FavoriteWorldsPanel.tsx:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/FavoriteWorldsPanel.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-7c59e323d6fec097", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/CollectionAddControl.tsx:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/CollectionAddControl.tsx:76"}, "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-b953b1d5118472fd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/ReviewsModal.tsx:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/ReviewsModal.tsx:45"}, "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-c0472759a3501287", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/ops/slo/route.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/ops/slo/route.ts: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-f56c5f44603d024b", "name": "Commented-code block (5 lines) in src/app/api/admin/ops/cost/route.ts:698", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/cost/route.ts:698"}, "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-eb3d8a79b7c1cb9d", "name": "Commented-code block (10 lines) in src/app/api/admin/ops/svc/livekit/metrics/route.ts:9", "shortDescription": {"text": "Commented-code block (10 lines) in src/app/api/admin/ops/svc/livekit/metrics/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-adf9c44418a1e539", "name": "Commented-code block (8 lines) in src/app/api/admin/ops/svc/livekit/rooms/route.ts:15", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/admin/ops/svc/livekit/rooms/route.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2bac0b12740301a1", "name": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/neon/live/route.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/neon/live/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-feb3ecf60e5a2a11", "name": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/neon/consumption/route.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/neon/consumption/route.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e94646a9dc8cf3a5", "name": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/process/route.ts:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/process/route.ts:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12fe6ff04eed8934", "name": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/live/route.ts:16", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/live/route.ts:16"}, "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-6792ae877777c7d9", "name": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/render/bandwidth-sources/route.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/render/bandwidth-sources/route.ts: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-52975694d1fc5e96", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/ops/inv/graph/auditLog.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/ops/inv/graph/auditLog.ts:54"}, "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-6227dee4e9b10a65", "name": "Commented-code block (6 lines) in src/app/admin/ops/inv/graph/mockApi.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/admin/ops/inv/graph/mockApi.ts:33"}, "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-f302b9d14eaeca38", "name": "Commented-code block (5 lines) in src/app/admin/ops/cost/CostClient.tsx:171", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/ops/cost/CostClient.tsx:171"}, "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-b1d27d9858ae748f", "name": "Commented-code block (5 lines) in src/app/status/layout.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/status/layout.tsx: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-45775d0f6e426d18", "name": "Commented-code block (6 lines) in src/lib/monitoring/read.ts:1064", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/monitoring/read.ts:1064"}, "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-ee76d0cfeaf1700b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/r2.ts:157", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/r2.ts:157"}, "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-cf5f585e113d1886", "name": "Commented-code block (5 lines) in src/lib/alerts/metric-alerts.ts:458", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/alerts/metric-alerts.ts:458"}, "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-f2044764c9b0f318", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/replays/r2-storage.ts:184", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/replays/r2-storage.ts:184"}, "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-eba5ddf79c64c964", "name": "Commented-code block (12 lines) in src/lib/hubs/db.ts:30", "shortDescription": {"text": "Commented-code block (12 lines) in src/lib/hubs/db.ts:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ab99d066fc35a08", "name": "Commented-code block (5 lines) in src/lib/jobs/render-deploy-classify.ts:154", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/jobs/render-deploy-classify.ts:154"}, "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-fcf1bb1ef4458c75", "name": "Commented-code block (6 lines) in src/lib/jobs/supabase-poller.ts:21", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/jobs/supabase-poller.ts:21"}, "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-dcae61ccc1a5cfbf", "name": "Commented-code block (6 lines) in src/lib/jobs/job-watchdog.ts:154", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/jobs/job-watchdog.ts:154"}, "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-1cc1190adea0aab1", "name": "Commented-code block (5 lines) in src/lib/jobs/render-poller.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/jobs/render-poller.ts:33"}, "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-d57c66e02487bffb", "name": "Commented-code block (5 lines) in src/lib/jobs/security-scan.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/jobs/security-scan.ts:62"}, "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-5ebb52381a8a3f4d", "name": "Commented-code block (6 lines) in src/lib/jobs/livekit-vps-poller.ts:259", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/jobs/livekit-vps-poller.ts:259"}, "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-8e01fda6d36e9056", "name": "63 env vars used in code but missing from .env.example", "shortDescription": {"text": "63 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `API_STORM_RPM_THRESHOLD`, `APP_VERSION`, `BOUNDARY_INTERNAL_SECRET`, `BOUNDARY_INTERNAL_URL`, `BURN_RATE_DISABLED`, `DO_NODE_EXPORTER_URL`, `EXTERNAL_STATUS_RETENTION_DAYS`, `FRONTEND_INGEST_ALLOWED_ORIGINS` + 55 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19594"}, "properties": {"repository": "shuuuvuuu/boundary-lab-portal", "repoUrl": "https://github.com/shuuuvuuu/boundary-lab-portal", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-157f70d36b76bde4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/PortalShell.tsx:186"}, "properties": {"repobilityId": "f2c7c8bf8d087ab2", "scanner": "scanner-primary", "fingerprint": "157f70d36b76bde4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-928e2016ef2754a0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/EventsTab.tsx:431"}, "properties": {"repobilityId": "1b36ef0121444939", "scanner": "scanner-primary", "fingerprint": "928e2016ef2754a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-862d26416622d0e5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/DiscoverTab.tsx:225"}, "properties": {"repobilityId": "b2db32eaf98e5299", "scanner": "scanner-primary", "fingerprint": "862d26416622d0e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3d3836902b764c91", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/blog/[slug]/page.tsx:60"}, "properties": {"repobilityId": "edc166468e8868e7", "scanner": "scanner-primary", "fingerprint": "3d3836902b764c91", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2f6a686579362f23", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/OverviewClient.tsx:322"}, "properties": {"repobilityId": "b5fc2c395f606cd3", "scanner": "scanner-primary", "fingerprint": "2f6a686579362f23", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e855e676893708f0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/UsersClient.tsx:405"}, "properties": {"repobilityId": "840e82a92b69ce6c", "scanner": "scanner-primary", "fingerprint": "e855e676893708f0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dec80bf678949c60", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/users/[id]/UserDetailClient.tsx:162"}, "properties": {"repobilityId": "809af0c18fdf480d", "scanner": "scanner-primary", "fingerprint": "dec80bf678949c60", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d2d266d570cd651c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/inv/graph/GraphClient.tsx:588"}, "properties": {"repobilityId": "ea2528c4740dd5d1", "scanner": "scanner-primary", "fingerprint": "d2d266d570cd651c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9ad1eaa65e3e20c8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/cost/CostClient.tsx:1129"}, "properties": {"repobilityId": "e91cd613c6958d38", "scanner": "scanner-primary", "fingerprint": "9ad1eaa65e3e20c8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-eb2e5a37b35c180f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/neon/NeonSvcClient.tsx:460"}, "properties": {"repobilityId": "07d93a7da3cef360", "scanner": "scanner-primary", "fingerprint": "eb2e5a37b35c180f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3a91711dcb32c3c5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/socketio/SocketIoSvcClient.tsx:431"}, "properties": {"repobilityId": "1939bc3b37cea4cf", "scanner": "scanner-primary", "fingerprint": "3a91711dcb32c3c5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-052635416544807f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/svc/render/RenderSvcClient.tsx:693"}, "properties": {"repobilityId": "082bcbae94cfbcfa", "scanner": "scanner-primary", "fingerprint": "052635416544807f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ecfc6e88256ba696", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/_zbx/ui.tsx:136"}, "properties": {"repobilityId": "31a0e855ada296df", "scanner": "scanner-primary", "fingerprint": "ecfc6e88256ba696", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-61ee1770811a7364", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ops/tour-monitor/TourMonitorClient.tsx:1340"}, "properties": {"repobilityId": "866cd50418617d45", "scanner": "scanner-primary", "fingerprint": "61ee1770811a7364", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "db9eba89e5299464", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "08b88141d6591d90", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-835eae4c7f17a2f8", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22-alpine"}, "properties": {"repobilityId": "655dde345d810620", "scanner": "scanner-primary", "fingerprint": "835eae4c7f17a2f8", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-8c78bdb4e9c8c14a", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "properties": {"repobilityId": "f78dbaf0931c9cf4", "scanner": "scanner-primary", "fingerprint": "8c78bdb4e9c8c14a", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/hubs-entry-sidecar/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c78bdb4e9c8c14a", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-bookworm-slim"}, "properties": {"repobilityId": "51848def537efdab", "scanner": "scanner-primary", "fingerprint": "8c78bdb4e9c8c14a", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "services/hubs-entry-sidecar/Dockerfile"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-ed253dd78aadfc1d", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in src/instrumentation.ts:26"}, "properties": {"repobilityId": "67da37d77ae84856", "scanner": "scanner-primary", "fingerprint": "ed253dd78aadfc1d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/instrumentation.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-5e819a6198664991", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/blog/[slug]/page.tsx:60"}, "properties": {"repobilityId": "df5a2a4c38f975f6", "scanner": "scanner-primary", "fingerprint": "5e819a6198664991", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/blog/[slug]/page.tsx"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-ecc87899b2ec0063", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/public/status/route.ts:41"}, "properties": {"repobilityId": "061871125d87ce56", "scanner": "scanner-primary", "fingerprint": "ecc87899b2ec0063", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/public/status/route.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-953073ef70813d1b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/app/admin/replays/[sessionId]/ReplayClient.tsx:121"}, "properties": {"repobilityId": "6fe79843de169a7b", "scanner": "scanner-primary", "fingerprint": "953073ef70813d1b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/admin/replays/[sessionId]/ReplayClient.tsx"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-74de06c093f271bd", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in src/lib/otel/active-span.ts:16"}, "properties": {"repobilityId": "06753d8e35a638b4", "scanner": "scanner-primary", "fingerprint": "74de06c093f271bd", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/otel/active-span.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-bd551ed35f67cb8d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/lib/jobs/synthetic-login.ts:1"}, "properties": {"repobilityId": "767472eb0722c232", "scanner": "scanner-primary", "fingerprint": "bd551ed35f67cb8d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/lib/jobs/synthetic-login.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49f477cbbe083433", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19a3e05b43a287b5", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6aa7210cf6c969d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5f7d5d8fad9ae56d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49f477cbbe083433", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19a3e05b43a287b5", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6aa7210cf6c969d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5f7d5d8fad9ae56d", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-7f0f9976570faa6d", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c7c67a05e8fb6422", "scanner": "scanner-primary", "fingerprint": "7f0f9976570faa6d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-68a2b8f5c8cd6b53", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0036b33690fe05ae", "scanner": "scanner-primary", "fingerprint": "68a2b8f5c8cd6b53", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3e6b588ce589ea58", "level": "note", "message": {"text": "Very large file: src/app/admin/ops/cost/CostClient.tsx (1385 lines)"}, "properties": {"repobilityId": "1c45666310b83a0e", "scanner": "scanner-primary", "fingerprint": "3e6b588ce589ea58", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4c16a63e1f7e66ec", "level": "note", "message": {"text": "Very large file: src/lib/jobs/weekly-report.ts (1766 lines)"}, "properties": {"repobilityId": "9e0106d5ca59b2d4", "scanner": "scanner-primary", "fingerprint": "4c16a63e1f7e66ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "933503d464e3c263", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "6daa783852d70087", "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": "c8d2ff42ee38e2d0", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "0c672857888f344a", "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": "331de6907fcab13a", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-00fa1609c3febc95", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: docs/architecture/SKILL.md"}, "properties": {"repobilityId": "95ad6ae11a5ff3b2", "scanner": "scanner-primary", "fingerprint": "00fa1609c3febc95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "skill_file"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/architecture/SKILL.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6110a8a7c3a02d1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/MetaNetworkExplorer.tsx:93"}, "properties": {"repobilityId": "e2809b342964e331", "scanner": "scanner-primary", "fingerprint": "6110a8a7c3a02d1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2555d3840c6b9b34", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EventsTab.tsx:26"}, "properties": {"repobilityId": "8da223e83fea6470", "scanner": "scanner-primary", "fingerprint": "2555d3840c6b9b34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea2070b84d62b69b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/PersonalTab.tsx:25"}, "properties": {"repobilityId": "99f1d593b2ba4223", "scanner": "scanner-primary", "fingerprint": "ea2070b84d62b69b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-324fb8ebbecf5127", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/DiscoverTab.tsx:33"}, "properties": {"repobilityId": "cbba619e295aa87f", "scanner": "scanner-primary", "fingerprint": "324fb8ebbecf5127", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5c58212a868c4ac0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/WorldEditModal.tsx:96"}, "properties": {"repobilityId": "a993be37d7fa33d0", "scanner": "scanner-primary", "fingerprint": "5c58212a868c4ac0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-787297f51161831f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/FavoriteWorldsPanel.tsx:41"}, "properties": {"repobilityId": "af2aaa55a3ed94ea", "scanner": "scanner-primary", "fingerprint": "787297f51161831f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7c59e323d6fec097", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/CollectionAddControl.tsx:76"}, "properties": {"repobilityId": "6944d2c70c01adaf", "scanner": "scanner-primary", "fingerprint": "7c59e323d6fec097", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b953b1d5118472fd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/world/ReviewsModal.tsx:45"}, "properties": {"repobilityId": "6f210192de6cdfd2", "scanner": "scanner-primary", "fingerprint": "b953b1d5118472fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c0472759a3501287", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/admin/ops/slo/route.ts:43"}, "properties": {"repobilityId": "817c21864b1c43df", "scanner": "scanner-primary", "fingerprint": "c0472759a3501287", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f56c5f44603d024b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/cost/route.ts:698"}, "properties": {"repobilityId": "67b59f2545896c42", "scanner": "scanner-primary", "fingerprint": "f56c5f44603d024b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb3d8a79b7c1cb9d", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/app/api/admin/ops/svc/livekit/metrics/route.ts:9"}, "properties": {"repobilityId": "811928d9e36ab02f", "scanner": "scanner-primary", "fingerprint": "eb3d8a79b7c1cb9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-adf9c44418a1e539", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/admin/ops/svc/livekit/rooms/route.ts:15"}, "properties": {"repobilityId": "8b9faf2f27274fb4", "scanner": "scanner-primary", "fingerprint": "adf9c44418a1e539", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bac0b12740301a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/neon/live/route.ts:9"}, "properties": {"repobilityId": "8da88af3c4ca219f", "scanner": "scanner-primary", "fingerprint": "2bac0b12740301a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-feb3ecf60e5a2a11", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/neon/consumption/route.ts:11"}, "properties": {"repobilityId": "f338733b96c864a0", "scanner": "scanner-primary", "fingerprint": "feb3ecf60e5a2a11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e94646a9dc8cf3a5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/process/route.ts:9"}, "properties": {"repobilityId": "6b931de823522ca6", "scanner": "scanner-primary", "fingerprint": "e94646a9dc8cf3a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12fe6ff04eed8934", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/ops/svc/socketio/live/route.ts:16"}, "properties": {"repobilityId": "15ccabe11c22d022", "scanner": "scanner-primary", "fingerprint": "12fe6ff04eed8934", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6792ae877777c7d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/ops/svc/render/bandwidth-sources/route.ts:61"}, "properties": {"repobilityId": "52146609e756b945", "scanner": "scanner-primary", "fingerprint": "6792ae877777c7d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52975694d1fc5e96", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/admin/ops/inv/graph/auditLog.ts:54"}, "properties": {"repobilityId": "beff4669922e0b91", "scanner": "scanner-primary", "fingerprint": "52975694d1fc5e96", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6227dee4e9b10a65", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/admin/ops/inv/graph/mockApi.ts:33"}, "properties": {"repobilityId": "abe0bc5279d29587", "scanner": "scanner-primary", "fingerprint": "6227dee4e9b10a65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f302b9d14eaeca38", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/ops/cost/CostClient.tsx:171"}, "properties": {"repobilityId": "32c5fb523b9e16f0", "scanner": "scanner-primary", "fingerprint": "f302b9d14eaeca38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1d27d9858ae748f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/status/layout.tsx:3"}, "properties": {"repobilityId": "8bd712dce8d2264c", "scanner": "scanner-primary", "fingerprint": "b1d27d9858ae748f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45775d0f6e426d18", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/monitoring/read.ts:1064"}, "properties": {"repobilityId": "dd3f17fe0c0aea6b", "scanner": "scanner-primary", "fingerprint": "45775d0f6e426d18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee76d0cfeaf1700b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/backup/r2.ts:157"}, "properties": {"repobilityId": "e3444fb4e9b81ac0", "scanner": "scanner-primary", "fingerprint": "ee76d0cfeaf1700b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf5f585e113d1886", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/alerts/metric-alerts.ts:458"}, "properties": {"repobilityId": "3e52cc7fffd49e65", "scanner": "scanner-primary", "fingerprint": "cf5f585e113d1886", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2044764c9b0f318", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/replays/r2-storage.ts:184"}, "properties": {"repobilityId": "b870e625ef8e79d9", "scanner": "scanner-primary", "fingerprint": "f2044764c9b0f318", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eba5ddf79c64c964", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/lib/hubs/db.ts:30"}, "properties": {"repobilityId": "eef8d386f3fa1aa9", "scanner": "scanner-primary", "fingerprint": "eba5ddf79c64c964", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ab99d066fc35a08", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/jobs/render-deploy-classify.ts:154"}, "properties": {"repobilityId": "ee788f750265a097", "scanner": "scanner-primary", "fingerprint": "0ab99d066fc35a08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcf1bb1ef4458c75", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/jobs/supabase-poller.ts:21"}, "properties": {"repobilityId": "c22f5106c679ad78", "scanner": "scanner-primary", "fingerprint": "fcf1bb1ef4458c75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcae61ccc1a5cfbf", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/jobs/job-watchdog.ts:154"}, "properties": {"repobilityId": "5b57b370821f4077", "scanner": "scanner-primary", "fingerprint": "dcae61ccc1a5cfbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1cc1190adea0aab1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/jobs/render-poller.ts:33"}, "properties": {"repobilityId": "640baf141ef38356", "scanner": "scanner-primary", "fingerprint": "1cc1190adea0aab1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d57c66e02487bffb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/jobs/security-scan.ts:62"}, "properties": {"repobilityId": "256c83152dedf0b3", "scanner": "scanner-primary", "fingerprint": "d57c66e02487bffb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ebb52381a8a3f4d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/jobs/livekit-vps-poller.ts:259"}, "properties": {"repobilityId": "b71bb254d3010463", "scanner": "scanner-primary", "fingerprint": "5ebb52381a8a3f4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e01fda6d36e9056", "level": "note", "message": {"text": "63 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "2d8971a647e2fca4", "scanner": "scanner-primary", "fingerprint": "8e01fda6d36e9056", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}