{"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-15e37d56d81950fc", "name": "Stray `console.log` in TS/JS \u2014 tests/ai/strength.test.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/ai/strength.test.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@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-a36e079ff89ee50e", "name": "Very large file: tests/api/move.test.ts (1597 lines)", "shortDescription": {"text": "Very large file: tests/api/move.test.ts (1597 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-17b913e03465a3f3", "name": "Very large file: src/screens/GameTable4P.tsx (1333 lines)", "shortDescription": {"text": "Very large file: src/screens/GameTable4P.tsx (1333 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-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 12 placeholder/mock markers across 9 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-6c1f0241bfac7eff", "name": "Commented-code block (5 lines) in playwright.config.ts:42", "shortDescription": {"text": "Commented-code block (5 lines) in playwright.config.ts:42"}, "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-b29689e957ecdb83", "name": "Commented-code block (6 lines) in vitest.config.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in vitest.config.ts:40"}, "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-cf1a4ad73f4c2b72", "name": "Commented-code block (6 lines) in tests/security/ipThrottle.test.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in tests/security/ipThrottle.test.ts: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-78045f781b84ff3c", "name": "Commented-code block (6 lines) in tests/security/rateLimit.test.ts:75", "shortDescription": {"text": "Commented-code block (6 lines) in tests/security/rateLimit.test.ts:75"}, "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-62e001febe53f4bf", "name": "Commented-code block (5 lines) in tests/ai/enumerateSequences.test.ts:64", "shortDescription": {"text": "Commented-code block (5 lines) in tests/ai/enumerateSequences.test.ts: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-f35fefa9b84aa3b9", "name": "Commented-code block (5 lines) in tests/ai/strength.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/ai/strength.test.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-1e13d7410bf9c2d4", "name": "Commented-code block (5 lines) in tests/ai/medium-decomposer.test.ts:30", "shortDescription": {"text": "Commented-code block (5 lines) in tests/ai/medium-decomposer.test.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-254c05cd0e3b6e27", "name": "Commented-code block (5 lines) in tests/ai/decomposer/decompose.test.ts:129", "shortDescription": {"text": "Commented-code block (5 lines) in tests/ai/decomposer/decompose.test.ts:129"}, "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-5545da1b7bec91d6", "name": "Commented-code block (6 lines) in tests/api/createRoom.test.ts:551", "shortDescription": {"text": "Commented-code block (6 lines) in tests/api/createRoom.test.ts:551"}, "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-dd6feca2013354a3", "name": "Commented-code block (6 lines) in tests/api/startGame.test.ts:496", "shortDescription": {"text": "Commented-code block (6 lines) in tests/api/startGame.test.ts:496"}, "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-0b8147f0a8cf3619", "name": "Commented-code block (6 lines) in tests/api/sseConnectSnapshot.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in tests/api/sseConnectSnapshot.test.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-ef1f6a632e367ac4", "name": "Commented-code block (6 lines) in tests/api/sse.test.ts:324", "shortDescription": {"text": "Commented-code block (6 lines) in tests/api/sse.test.ts:324"}, "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-75a76f48d5bf35a4", "name": "Commented-code block (5 lines) in tests/api/move.test.ts:520", "shortDescription": {"text": "Commented-code block (5 lines) in tests/api/move.test.ts:520"}, "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-c624dde0ad4965de", "name": "Commented-code block (12 lines) in tests/screens/GameTable4P-playability-fixes.test.tsx:1", "shortDescription": {"text": "Commented-code block (12 lines) in tests/screens/GameTable4P-playability-fixes.test.tsx:1"}, "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-68db551b62b9cfad", "name": "Commented-code block (5 lines) in tests/lib/sseClient-named-events.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in tests/lib/sseClient-named-events.test.ts:8"}, "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-b9b62aa6be0b966c", "name": "Commented-code block (5 lines) in tests/lib/identity.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/lib/identity.test.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-615dae7e8078a326", "name": "Commented-code block (11 lines) in tests/game/trick.test.ts:272", "shortDescription": {"text": "Commented-code block (11 lines) in tests/game/trick.test.ts:272"}, "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-f22607aa8d4e4cd6", "name": "Commented-code block (5 lines) in tests/game/tributeMode.test.ts:296", "shortDescription": {"text": "Commented-code block (5 lines) in tests/game/tributeMode.test.ts:296"}, "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-2795f5b3a89f7438", "name": "Commented-code block (5 lines) in tests/game/patterns.test.ts:581", "shortDescription": {"text": "Commented-code block (5 lines) in tests/game/patterns.test.ts:581"}, "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-4833ae51a18f5519", "name": "Commented-code block (7 lines) in tests/contract/move-wire.test.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in tests/contract/move-wire.test.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-d47c77870e1f0e3e", "name": "Commented-code block (5 lines) in tests/realtime/upstashEventLog.test.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in tests/realtime/upstashEventLog.test.ts:102"}, "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-d13ec60ac264b234", "name": "Commented-code block (6 lines) in tests/realtime/sse.test.ts:91", "shortDescription": {"text": "Commented-code block (6 lines) in tests/realtime/sse.test.ts:91"}, "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-5109e0333e260001", "name": "Commented-code block (6 lines) in tests/realtime/upstashEventBus.test.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in tests/realtime/upstashEventBus.test.ts: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-5264f6438d379eea", "name": "Commented-code block (5 lines) in tests/realtime/streamPurge.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/realtime/streamPurge.test.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-a36e99d74cdb340b", "name": "Commented-code block (12 lines) in tests/realtime/_fakeRedis.ts:8", "shortDescription": {"text": "Commented-code block (12 lines) in tests/realtime/_fakeRedis.ts:8"}, "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-76509ac08a03d48d", "name": "Commented-code block (5 lines) in tests/e2e/orientation.spec.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/orientation.spec.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-cc915e625ca73c55", "name": "Commented-code block (6 lines) in tests/e2e/mobile-modals.spec.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/e2e/mobile-modals.spec.ts:1"}, "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-4daf69c46c01f031", "name": "Commented-code block (6 lines) in tests/e2e/play-cards.spec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in tests/e2e/play-cards.spec.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-8057a2371d9408a1", "name": "Commented-code block (5 lines) in tests/e2e/error-handling.spec.ts:21", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/error-handling.spec.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-4df7caa4bed86f2c", "name": "Commented-code block (6 lines) in api/cron/dcCheck.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in api/cron/dcCheck.ts:8"}, "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-80bc2470c9a9c269", "name": "Commented-code block (5 lines) in api/cron/cleanup-rooms.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in api/cron/cleanup-rooms.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-a484183aeb968db4", "name": "Commented-code block (5 lines) in lib/security/ipThrottle.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/security/ipThrottle.ts:4"}, "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-c6ca0ed515dabac3", "name": "Commented-code block (6 lines) in lib/security/reports.ts:112", "shortDescription": {"text": "Commented-code block (6 lines) in lib/security/reports.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d7352cf0ef7b3c0", "name": "Commented-code block (7 lines) in lib/security/sharedIpThrottle.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in lib/security/sharedIpThrottle.ts:8"}, "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-e2ec130999de76e3", "name": "Commented-code block (5 lines) in lib/security/botId.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/security/botId.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-ffe5316f940791d8", "name": "Commented-code block (7 lines) in lib/security/ipHash.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in lib/security/ipHash.ts:10"}, "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-31ba582ff4d01282", "name": "Commented-code block (14 lines) in lib/ai/hard.ts:3", "shortDescription": {"text": "Commented-code block (14 lines) in lib/ai/hard.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-52863ab56d48f3ff", "name": "Commented-code block (5 lines) in lib/ai/coop.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/coop.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-f15f33848353bdf7", "name": "Commented-code block (12 lines) in lib/ai/runBots.ts:3", "shortDescription": {"text": "Commented-code block (12 lines) in lib/ai/runBots.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-4816ee7c53f6460c", "name": "Commented-code block (5 lines) in lib/ai/enumerate.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/enumerate.ts:4"}, "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-8893ee16ec4627fd", "name": "Commented-code block (5 lines) in lib/ai/easy.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/easy.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-7cd0a9614a5c39ff", "name": "Commented-code block (5 lines) in lib/ai/names.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/names.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-7908cfef62bd8ad6", "name": "Commented-code block (13 lines) in lib/ai/medium.ts:3", "shortDescription": {"text": "Commented-code block (13 lines) in lib/ai/medium.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-0e84107cde9464f3", "name": "Commented-code block (6 lines) in lib/ai/decomposer/encode.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/ai/decomposer/encode.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-3656a5bd78a257ef", "name": "Commented-code block (5 lines) in lib/ai/decomposer/index.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/ai/decomposer/index.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-07414e2790221018", "name": "Commented-code block (5 lines) in lib/auth/ownershipToken.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/ownershipToken.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-559a61436eca65ea", "name": "Commented-code block (5 lines) in lib/auth/handle.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/auth/handle.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-c70312be896fa465", "name": "Commented-code block (5 lines) in lib/api/report.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/api/report.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-d469189c0fd8b6ab", "name": "Commented-code block (7 lines) in lib/api/dcCheck.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in lib/api/dcCheck.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-303866aa3f294553", "name": "Commented-code block (13 lines) in lib/api/move.ts:3", "shortDescription": {"text": "Commented-code block (13 lines) in lib/api/move.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-7d8b105ce6650bf8", "name": "Commented-code block (9 lines) in lib/api/turnTimeout.ts:13", "shortDescription": {"text": "Commented-code block (9 lines) in lib/api/turnTimeout.ts: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-91ca68c1e8ffaef7", "name": "Commented-code block (15 lines) in lib/api/sse.ts:3", "shortDescription": {"text": "Commented-code block (15 lines) in lib/api/sse.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-fcd1c92eb2ddae50", "name": "Commented-code block (6 lines) in lib/api/createRoom.ts:122", "shortDescription": {"text": "Commented-code block (6 lines) in lib/api/createRoom.ts:122"}, "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-a9283b742a3f3766", "name": "Commented-code block (5 lines) in lib/api/listRooms.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in lib/api/listRooms.ts: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-886cfd805acca70a", "name": "Commented-code block (6 lines) in lib/api/createHandle.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in lib/api/createHandle.ts:6"}, "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-09dbd9056b79f037", "name": "Commented-code block (7 lines) in lib/api/telemetryLatency.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in lib/api/telemetryLatency.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-c2ea082475a5ae3b", "name": "Commented-code block (7 lines) in lib/api/startGame.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in lib/api/startGame.ts:8"}, "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-c5d58c21fe3293b0", "name": "Commented-code block (8 lines) in lib/api/cleanupRooms.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in lib/api/cleanupRooms.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-56b39a3dba167adf", "name": "Commented-code block (6 lines) in lib/room/ipWarning.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/room/ipWarning.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-e5dafe6e6a10dba7", "name": "Commented-code block (5 lines) in lib/room/code.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/room/code.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-5a624744bead8607", "name": "Commented-code block (6 lines) in lib/room/botTakeover.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/room/botTakeover.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-91137e8b47d222d2", "name": "Commented-code block (5 lines) in lib/room/dcDetection.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/room/dcDetection.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-840ba79c1fd21020", "name": "Commented-code block (6 lines) in lib/game/tributeFlow.ts:229", "shortDescription": {"text": "Commented-code block (6 lines) in lib/game/tributeFlow.ts:229"}, "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-cb8ba98cc0b4a97e", "name": "Commented-code block (7 lines) in lib/game/exchange.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in lib/game/exchange.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-1ee9952e44aa28ae", "name": "Commented-code block (5 lines) in lib/game/resolveRound.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/game/resolveRound.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-4bbd858fbe9022de", "name": "Commented-code block (6 lines) in lib/game/round.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in lib/game/round.ts:4"}, "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-0a06aca4cd7df03d", "name": "Commented-code block (7 lines) in lib/game/session.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in lib/game/session.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-514958ff9259592a", "name": "Commented-code block (6 lines) in lib/game/wildcard.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in lib/game/wildcard.ts:6"}, "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-34f470b5f6fb616e", "name": "Commented-code block (6 lines) in lib/game/upgrade.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in lib/game/upgrade.ts:4"}, "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-3697da03e35a1b3d", "name": "Commented-code block (5 lines) in lib/game/patterns.ts:258", "shortDescription": {"text": "Commented-code block (5 lines) in lib/game/patterns.ts:258"}, "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-9cf364eb0f136859", "name": "Commented-code block (5 lines) in lib/game/tribute.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/game/tribute.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-b19cc9e135ae6e0b", "name": "Commented-code block (8 lines) in lib/game/bomb.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in lib/game/bomb.ts:6"}, "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-b3a1d9d48480aa06", "name": "Commented-code block (6 lines) in lib/telemetry/aggregate.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in lib/telemetry/aggregate.ts:8"}, "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-d9cb79e3ee34aeb7", "name": "Commented-code block (7 lines) in lib/realtime/deriveTributeEvents.ts:12", "shortDescription": {"text": "Commented-code block (7 lines) in lib/realtime/deriveTributeEvents.ts:12"}, "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-b3192a42c1a1e9ba", "name": "Commented-code block (5 lines) in lib/realtime/buildClientPayload.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/buildClientPayload.ts:4"}, "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-cc6d39223766910d", "name": "Commented-code block (5 lines) in lib/realtime/buildLobbyGameState.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/buildLobbyGameState.ts:4"}, "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-672fe7a1695df82d", "name": "Commented-code block (6 lines) in lib/realtime/cardCodec.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/realtime/cardCodec.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-80b9579770fc77de", "name": "Commented-code block (5 lines) in lib/realtime/idempotency.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/idempotency.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-4186681fb98e5a6e", "name": "Commented-code block (5 lines) in lib/realtime/redisClient.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/redisClient.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-fa8a18350218a19d", "name": "Commented-code block (7 lines) in lib/realtime/streamPurge.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in lib/realtime/streamPurge.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-f2a7c065196fe1d0", "name": "Commented-code block (5 lines) in lib/realtime/buildGameState.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/buildGameState.ts: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-5bb9c435bf2d542f", "name": "Commented-code block (6 lines) in lib/realtime/eventLog.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in lib/realtime/eventLog.ts:8"}, "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-64619698843cb1d8", "name": "Commented-code block (5 lines) in lib/realtime/commands.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/commands.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-c2ec0f86c8223295", "name": "Commented-code block (5 lines) in lib/realtime/eventBus.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/eventBus.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-2dcdd12d51620255", "name": "Commented-code block (5 lines) in lib/realtime/publish.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in lib/realtime/publish.ts: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-4faab959003506ba", "name": "Commented-code block (8 lines) in lib/realtime/sharedInfra.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in lib/realtime/sharedInfra.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-93701d32286871b6", "name": "Commented-code block (5 lines) in lib/storage/seenStore.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/storage/seenStore.ts:1"}, "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-fb2dfe02b6958031", "name": "Commented-code block (6 lines) in lib/storage/roomStore.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in lib/storage/roomStore.ts:8"}, "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-004f60535385db72", "name": "Commented-code block (10 lines) in lib/storage/sharedStores.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in lib/storage/sharedStores.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-fc442cc27484473a", "name": "Commented-code block (6 lines) in src/App.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/App.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-6451653f63576c01", "name": "Commented-code block (5 lines) in src/screens/GameTableMP.tsx:327", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/GameTableMP.tsx:327"}, "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-e44975117ee7a2d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTableMP.tsx:758", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTableMP.tsx:758"}, "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-00643b5a846f9044", "name": "Commented-code block (6 lines) in src/screens/Landing.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/Landing.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-e235221a253575f5", "name": "Commented-code block (5 lines) in src/screens/TributeModal.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/TributeModal.tsx:4"}, "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-cd21f9e466fe6218", "name": "Legacy-named symbol `waiting__copy` in src/screens/Waiting.tsx:228", "shortDescription": {"text": "Legacy-named symbol `waiting__copy` in src/screens/Waiting.tsx:228"}, "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-f70cc38aced816b7", "name": "Commented-code block (5 lines) in src/screens/Waiting.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/Waiting.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-da41e51ca436ffed", "name": "Commented-code block (5 lines) in src/screens/GameTable4P.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/GameTable4P.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-8bbee785f422e3bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTable4P.tsx:793", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTable4P.tsx:793"}, "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-09473d1ff4a14c9d", "name": "Commented-code block (5 lines) in src/screens/CreateRoom.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/CreateRoom.tsx:29"}, "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-11a0b9b8713b9ba5", "name": "Commented-code block (5 lines) in src/components/EndgameAssist.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/EndgameAssist.tsx:8"}, "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-23020f6601098901", "name": "Commented-code block (6 lines) in src/components/Avatar.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/Avatar.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-eafdaaf4c1a02e96", "name": "Commented-code block (5 lines) in src/components/HostIPWarning.tsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/HostIPWarning.tsx:8"}, "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-6c1c1165bcddea3c", "name": "Commented-code block (5 lines) in src/components/TurnCountdown.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/TurnCountdown.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-c5ada3bfc87be16f", "name": "Commented-code block (6 lines) in src/components/SuggestionHint.tsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/SuggestionHint.tsx: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-15f451a2cf20f03b", "name": "Commented-code block (5 lines) in src/components/ReportButton.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ReportButton.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-c7ba504cbb854bb9", "name": "Commented-code block (7 lines) in src/components/PlayerStatusBadge.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/PlayerStatusBadge.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-71de5e36ad1c4b58", "name": "Commented-code block (14 lines) in src/components/OrientationLock.tsx:4", "shortDescription": {"text": "Commented-code block (14 lines) in src/components/OrientationLock.tsx:4"}, "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-f18f1d7c697c27b0", "name": "Commented-code block (8 lines) in src/components/WildcardSubDialog.tsx:6", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/WildcardSubDialog.tsx:6"}, "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-af809749781b0735", "name": "Commented-code block (5 lines) in src/components/SortButton.tsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/SortButton.tsx:4"}, "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-2d8054e2822a99fb", "name": "Commented-code block (6 lines) in src/components/Card.tsx:105", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/Card.tsx:105"}, "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-19d1ed5ca6799d77", "name": "Commented-code block (5 lines) in src/components/Hand.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/Hand.tsx: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-cddad0e50e4bc2bf", "name": "Commented-code block (5 lines) in src/lib/orientation.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/orientation.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-ee7f96d4a4eb650a", "name": "Commented-code block (9 lines) in src/lib/sseClient.ts:13", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/sseClient.ts: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-565ea719e9ca7e0c", "name": "Commented-code block (5 lines) in src/lib/seating.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/seating.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-94ee96aa18de7a1c", "name": "Commented-code block (6 lines) in src/lib/router.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/router.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-bbef38e6cd24ae4a", "name": "Commented-code block (7 lines) in src/lib/api/moveClient.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/api/moveClient.ts:4"}, "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-e60c639382b1cd4e", "name": "Commented-code block (5 lines) in src/lib/assist/sort.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/assist/sort.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-21613958614a1f5c", "name": "Commented-code block (5 lines) in src/lib/assist/patternLabel.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/assist/patternLabel.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-cbd3d4d3ba1d067c", "name": "Commented-code block (7 lines) in src/lib/assist/suggest.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/assist/suggest.ts:8"}, "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-dc9859186b1355f2", "name": "Commented-code block (5 lines) in src/lib/telemetry/beacon.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/telemetry/beacon.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-6ceef3de13d2b82d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/telemetry/beacon.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/telemetry/beacon.ts:13"}, "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}}]}}, "automationDetails": {"id": "repobility/23021"}, "properties": {"repository": "xingfanxia/guandan-online", "repoUrl": "https://github.com/xingfanxia/guandan-online", "branch": "main"}, "results": [{"ruleId": "scanner-15e37d56d81950fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/ai/strength.test.ts:45"}, "properties": {"repobilityId": "bd101983732b7dc3", "scanner": "scanner-primary", "fingerprint": "15e37d56d81950fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-a36e079ff89ee50e", "level": "note", "message": {"text": "Very large file: tests/api/move.test.ts (1597 lines)"}, "properties": {"repobilityId": "e06613a6aa21dc94", "scanner": "scanner-primary", "fingerprint": "a36e079ff89ee50e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17b913e03465a3f3", "level": "note", "message": {"text": "Very large file: src/screens/GameTable4P.tsx (1333 lines)"}, "properties": {"repobilityId": "69665e58587b7fdf", "scanner": "scanner-primary", "fingerprint": "17b913e03465a3f3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "2f1c02c47184ac18", "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": "c20abb9295f07409", "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": "47d830e3d00e1e25", "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": "9f8faa48e4765da8", "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": "37460452314ba3a7", "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": "079881e9d1cbf0a7", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6c1f0241bfac7eff", "level": "none", "message": {"text": "Commented-code block (5 lines) in playwright.config.ts:42"}, "properties": {"repobilityId": "97c8254ad9341a53", "scanner": "scanner-primary", "fingerprint": "6c1f0241bfac7eff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b29689e957ecdb83", "level": "none", "message": {"text": "Commented-code block (6 lines) in vitest.config.ts:40"}, "properties": {"repobilityId": "1f93d214f0848abe", "scanner": "scanner-primary", "fingerprint": "b29689e957ecdb83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf1a4ad73f4c2b72", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/security/ipThrottle.test.ts:7"}, "properties": {"repobilityId": "c37d11f7291d1e8b", "scanner": "scanner-primary", "fingerprint": "cf1a4ad73f4c2b72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78045f781b84ff3c", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/security/rateLimit.test.ts:75"}, "properties": {"repobilityId": "eff545691eb60a1a", "scanner": "scanner-primary", "fingerprint": "78045f781b84ff3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62e001febe53f4bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/ai/enumerateSequences.test.ts:64"}, "properties": {"repobilityId": "e040e60ab383de17", "scanner": "scanner-primary", "fingerprint": "62e001febe53f4bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f35fefa9b84aa3b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/ai/strength.test.ts:3"}, "properties": {"repobilityId": "3a6a33e1b769e192", "scanner": "scanner-primary", "fingerprint": "f35fefa9b84aa3b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e13d7410bf9c2d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/ai/medium-decomposer.test.ts:30"}, "properties": {"repobilityId": "ab7fb54eb4dd6e2a", "scanner": "scanner-primary", "fingerprint": "1e13d7410bf9c2d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-254c05cd0e3b6e27", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/ai/decomposer/decompose.test.ts:129"}, "properties": {"repobilityId": "7c9bfa897d860ba5", "scanner": "scanner-primary", "fingerprint": "254c05cd0e3b6e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5545da1b7bec91d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/api/createRoom.test.ts:551"}, "properties": {"repobilityId": "ea3224b192738e3b", "scanner": "scanner-primary", "fingerprint": "5545da1b7bec91d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dd6feca2013354a3", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/api/startGame.test.ts:496"}, "properties": {"repobilityId": "4bd84162eb7e61f1", "scanner": "scanner-primary", "fingerprint": "dd6feca2013354a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b8147f0a8cf3619", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/api/sseConnectSnapshot.test.ts:3"}, "properties": {"repobilityId": "88fdd0f460d861df", "scanner": "scanner-primary", "fingerprint": "0b8147f0a8cf3619", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef1f6a632e367ac4", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/api/sse.test.ts:324"}, "properties": {"repobilityId": "25cc967df4650d6b", "scanner": "scanner-primary", "fingerprint": "ef1f6a632e367ac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75a76f48d5bf35a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/api/move.test.ts:520"}, "properties": {"repobilityId": "795b4cf7e7bf7787", "scanner": "scanner-primary", "fingerprint": "75a76f48d5bf35a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c624dde0ad4965de", "level": "none", "message": {"text": "Commented-code block (12 lines) in tests/screens/GameTable4P-playability-fixes.test.tsx:1"}, "properties": {"repobilityId": "8c6fc2444c6dbcef", "scanner": "scanner-primary", "fingerprint": "c624dde0ad4965de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68db551b62b9cfad", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/lib/sseClient-named-events.test.ts:8"}, "properties": {"repobilityId": "89a118af5e6d2431", "scanner": "scanner-primary", "fingerprint": "68db551b62b9cfad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9b62aa6be0b966c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/lib/identity.test.ts:3"}, "properties": {"repobilityId": "a46559b4cf6780d7", "scanner": "scanner-primary", "fingerprint": "b9b62aa6be0b966c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-615dae7e8078a326", "level": "none", "message": {"text": "Commented-code block (11 lines) in tests/game/trick.test.ts:272"}, "properties": {"repobilityId": "0903b33ff95391c1", "scanner": "scanner-primary", "fingerprint": "615dae7e8078a326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f22607aa8d4e4cd6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/game/tributeMode.test.ts:296"}, "properties": {"repobilityId": "fe0a3c667a46c7b5", "scanner": "scanner-primary", "fingerprint": "f22607aa8d4e4cd6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2795f5b3a89f7438", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/game/patterns.test.ts:581"}, "properties": {"repobilityId": "3a36a481a9b45518", "scanner": "scanner-primary", "fingerprint": "2795f5b3a89f7438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4833ae51a18f5519", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/contract/move-wire.test.ts:3"}, "properties": {"repobilityId": "0c3e69ea7dab1a01", "scanner": "scanner-primary", "fingerprint": "4833ae51a18f5519", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d47c77870e1f0e3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/realtime/upstashEventLog.test.ts:102"}, "properties": {"repobilityId": "564fca96e473cbf8", "scanner": "scanner-primary", "fingerprint": "d47c77870e1f0e3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d13ec60ac264b234", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/realtime/sse.test.ts:91"}, "properties": {"repobilityId": "ed9767827a5f0630", "scanner": "scanner-primary", "fingerprint": "d13ec60ac264b234", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5109e0333e260001", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/realtime/upstashEventBus.test.ts:5"}, "properties": {"repobilityId": "7b9ef43910a994d7", "scanner": "scanner-primary", "fingerprint": "5109e0333e260001", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5264f6438d379eea", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/realtime/streamPurge.test.ts:3"}, "properties": {"repobilityId": "2b3d21ad755364a9", "scanner": "scanner-primary", "fingerprint": "5264f6438d379eea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a36e99d74cdb340b", "level": "none", "message": {"text": "Commented-code block (12 lines) in tests/realtime/_fakeRedis.ts:8"}, "properties": {"repobilityId": "60a93c7a27fac594", "scanner": "scanner-primary", "fingerprint": "a36e99d74cdb340b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76509ac08a03d48d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/orientation.spec.ts:3"}, "properties": {"repobilityId": "a110e6a02b81def9", "scanner": "scanner-primary", "fingerprint": "76509ac08a03d48d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc915e625ca73c55", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/e2e/mobile-modals.spec.ts:1"}, "properties": {"repobilityId": "d421d9ccb8d306a4", "scanner": "scanner-primary", "fingerprint": "cc915e625ca73c55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4daf69c46c01f031", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/e2e/play-cards.spec.ts:3"}, "properties": {"repobilityId": "ef4b90ddd1590cb0", "scanner": "scanner-primary", "fingerprint": "4daf69c46c01f031", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8057a2371d9408a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/error-handling.spec.ts:21"}, "properties": {"repobilityId": "cf5cc9e4e494b1e5", "scanner": "scanner-primary", "fingerprint": "8057a2371d9408a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4df7caa4bed86f2c", "level": "none", "message": {"text": "Commented-code block (6 lines) in api/cron/dcCheck.ts:8"}, "properties": {"repobilityId": "00bd5bd103674b5e", "scanner": "scanner-primary", "fingerprint": "4df7caa4bed86f2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80bc2470c9a9c269", "level": "none", "message": {"text": "Commented-code block (5 lines) in api/cron/cleanup-rooms.ts:3"}, "properties": {"repobilityId": "da4a39961435df59", "scanner": "scanner-primary", "fingerprint": "80bc2470c9a9c269", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a484183aeb968db4", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/security/ipThrottle.ts:4"}, "properties": {"repobilityId": "518926296a9b9984", "scanner": "scanner-primary", "fingerprint": "a484183aeb968db4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6ca0ed515dabac3", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/security/reports.ts:112"}, "properties": {"repobilityId": "8d44890071870f36", "scanner": "scanner-primary", "fingerprint": "c6ca0ed515dabac3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d7352cf0ef7b3c0", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/security/sharedIpThrottle.ts:8"}, "properties": {"repobilityId": "828639feb71d9269", "scanner": "scanner-primary", "fingerprint": "1d7352cf0ef7b3c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e2ec130999de76e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/security/botId.ts:3"}, "properties": {"repobilityId": "f3717f480cad2c14", "scanner": "scanner-primary", "fingerprint": "e2ec130999de76e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffe5316f940791d8", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/security/ipHash.ts:10"}, "properties": {"repobilityId": "d81959da6617ab59", "scanner": "scanner-primary", "fingerprint": "ffe5316f940791d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31ba582ff4d01282", "level": "none", "message": {"text": "Commented-code block (14 lines) in lib/ai/hard.ts:3"}, "properties": {"repobilityId": "557f915181fbd8da", "scanner": "scanner-primary", "fingerprint": "31ba582ff4d01282", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52863ab56d48f3ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/coop.ts:3"}, "properties": {"repobilityId": "02fc6d2fa806bb13", "scanner": "scanner-primary", "fingerprint": "52863ab56d48f3ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f15f33848353bdf7", "level": "none", "message": {"text": "Commented-code block (12 lines) in lib/ai/runBots.ts:3"}, "properties": {"repobilityId": "71ba645b700dd349", "scanner": "scanner-primary", "fingerprint": "f15f33848353bdf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4816ee7c53f6460c", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/enumerate.ts:4"}, "properties": {"repobilityId": "34ce86e7f4d63c5d", "scanner": "scanner-primary", "fingerprint": "4816ee7c53f6460c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8893ee16ec4627fd", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/easy.ts:3"}, "properties": {"repobilityId": "85935c5b22976064", "scanner": "scanner-primary", "fingerprint": "8893ee16ec4627fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cd0a9614a5c39ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/names.ts:3"}, "properties": {"repobilityId": "56fec9c4bb1b2a43", "scanner": "scanner-primary", "fingerprint": "7cd0a9614a5c39ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7908cfef62bd8ad6", "level": "none", "message": {"text": "Commented-code block (13 lines) in lib/ai/medium.ts:3"}, "properties": {"repobilityId": "a4971089d2386111", "scanner": "scanner-primary", "fingerprint": "7908cfef62bd8ad6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e84107cde9464f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/ai/decomposer/encode.ts:3"}, "properties": {"repobilityId": "f0f6d259d59e93bd", "scanner": "scanner-primary", "fingerprint": "0e84107cde9464f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3656a5bd78a257ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/ai/decomposer/index.ts:3"}, "properties": {"repobilityId": "8eae874a58691eb9", "scanner": "scanner-primary", "fingerprint": "3656a5bd78a257ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07414e2790221018", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/ownershipToken.ts:3"}, "properties": {"repobilityId": "1fba7241a705700e", "scanner": "scanner-primary", "fingerprint": "07414e2790221018", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-559a61436eca65ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/auth/handle.ts:3"}, "properties": {"repobilityId": "2b8fe1f246347af5", "scanner": "scanner-primary", "fingerprint": "559a61436eca65ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c70312be896fa465", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/api/report.ts:3"}, "properties": {"repobilityId": "dd5154138231039f", "scanner": "scanner-primary", "fingerprint": "c70312be896fa465", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d469189c0fd8b6ab", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/api/dcCheck.ts:3"}, "properties": {"repobilityId": "70c08372ea20aa6f", "scanner": "scanner-primary", "fingerprint": "d469189c0fd8b6ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-303866aa3f294553", "level": "none", "message": {"text": "Commented-code block (13 lines) in lib/api/move.ts:3"}, "properties": {"repobilityId": "4fd4ecdaebabd51c", "scanner": "scanner-primary", "fingerprint": "303866aa3f294553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d8b105ce6650bf8", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/api/turnTimeout.ts:13"}, "properties": {"repobilityId": "920ed2254846f066", "scanner": "scanner-primary", "fingerprint": "7d8b105ce6650bf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91ca68c1e8ffaef7", "level": "none", "message": {"text": "Commented-code block (15 lines) in lib/api/sse.ts:3"}, "properties": {"repobilityId": "eb4488c853508e39", "scanner": "scanner-primary", "fingerprint": "91ca68c1e8ffaef7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcd1c92eb2ddae50", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/api/createRoom.ts:122"}, "properties": {"repobilityId": "52ed5dc374ebb529", "scanner": "scanner-primary", "fingerprint": "fcd1c92eb2ddae50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9283b742a3f3766", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/api/listRooms.ts:7"}, "properties": {"repobilityId": "0a537de4e1b187bc", "scanner": "scanner-primary", "fingerprint": "a9283b742a3f3766", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-886cfd805acca70a", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/api/createHandle.ts:6"}, "properties": {"repobilityId": "e49e4552ecaa5d74", "scanner": "scanner-primary", "fingerprint": "886cfd805acca70a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09dbd9056b79f037", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/api/telemetryLatency.ts:3"}, "properties": {"repobilityId": "02c3b9a3dd00edc6", "scanner": "scanner-primary", "fingerprint": "09dbd9056b79f037", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2ea082475a5ae3b", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/api/startGame.ts:8"}, "properties": {"repobilityId": "884e0c24c924a335", "scanner": "scanner-primary", "fingerprint": "c2ea082475a5ae3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5d58c21fe3293b0", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/api/cleanupRooms.ts:3"}, "properties": {"repobilityId": "4982d729324b81b5", "scanner": "scanner-primary", "fingerprint": "c5d58c21fe3293b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56b39a3dba167adf", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/room/ipWarning.ts:3"}, "properties": {"repobilityId": "c15d72c3116d2154", "scanner": "scanner-primary", "fingerprint": "56b39a3dba167adf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5dafe6e6a10dba7", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/room/code.ts:3"}, "properties": {"repobilityId": "504b500f6b877005", "scanner": "scanner-primary", "fingerprint": "e5dafe6e6a10dba7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a624744bead8607", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/room/botTakeover.ts:3"}, "properties": {"repobilityId": "e8605a9f32986103", "scanner": "scanner-primary", "fingerprint": "5a624744bead8607", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91137e8b47d222d2", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/room/dcDetection.ts:3"}, "properties": {"repobilityId": "d60b2683fe672d99", "scanner": "scanner-primary", "fingerprint": "91137e8b47d222d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-840ba79c1fd21020", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/game/tributeFlow.ts:229"}, "properties": {"repobilityId": "1cc55fe1fb97cebd", "scanner": "scanner-primary", "fingerprint": "840ba79c1fd21020", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb8ba98cc0b4a97e", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/game/exchange.ts:3"}, "properties": {"repobilityId": "8d1f806127de9cd4", "scanner": "scanner-primary", "fingerprint": "cb8ba98cc0b4a97e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ee9952e44aa28ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/game/resolveRound.ts:3"}, "properties": {"repobilityId": "dfab0c3091f89d54", "scanner": "scanner-primary", "fingerprint": "1ee9952e44aa28ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bbd858fbe9022de", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/game/round.ts:4"}, "properties": {"repobilityId": "cf99240e2f66c7b1", "scanner": "scanner-primary", "fingerprint": "4bbd858fbe9022de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a06aca4cd7df03d", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/game/session.ts:3"}, "properties": {"repobilityId": "0a7e2620b385d51e", "scanner": "scanner-primary", "fingerprint": "0a06aca4cd7df03d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-514958ff9259592a", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/game/wildcard.ts:6"}, "properties": {"repobilityId": "70a0ac11ac4a1292", "scanner": "scanner-primary", "fingerprint": "514958ff9259592a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34f470b5f6fb616e", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/game/upgrade.ts:4"}, "properties": {"repobilityId": "0c0d8c2f5c7a13c2", "scanner": "scanner-primary", "fingerprint": "34f470b5f6fb616e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3697da03e35a1b3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/game/patterns.ts:258"}, "properties": {"repobilityId": "56195d7980301f7b", "scanner": "scanner-primary", "fingerprint": "3697da03e35a1b3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cf364eb0f136859", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/game/tribute.ts:3"}, "properties": {"repobilityId": "8fdb99bf6efcda98", "scanner": "scanner-primary", "fingerprint": "9cf364eb0f136859", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b19cc9e135ae6e0b", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/game/bomb.ts:6"}, "properties": {"repobilityId": "6e60521726b96407", "scanner": "scanner-primary", "fingerprint": "b19cc9e135ae6e0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3a1d9d48480aa06", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/telemetry/aggregate.ts:8"}, "properties": {"repobilityId": "cbc005cc0209ce06", "scanner": "scanner-primary", "fingerprint": "b3a1d9d48480aa06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9cb79e3ee34aeb7", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/realtime/deriveTributeEvents.ts:12"}, "properties": {"repobilityId": "41075e5f350a2d78", "scanner": "scanner-primary", "fingerprint": "d9cb79e3ee34aeb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3192a42c1a1e9ba", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/buildClientPayload.ts:4"}, "properties": {"repobilityId": "ebf42456c1c109b0", "scanner": "scanner-primary", "fingerprint": "b3192a42c1a1e9ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc6d39223766910d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/buildLobbyGameState.ts:4"}, "properties": {"repobilityId": "ed7ae2f3f19114c5", "scanner": "scanner-primary", "fingerprint": "cc6d39223766910d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-672fe7a1695df82d", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/realtime/cardCodec.ts:3"}, "properties": {"repobilityId": "55f77f0be4e4d8b8", "scanner": "scanner-primary", "fingerprint": "672fe7a1695df82d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80b9579770fc77de", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/idempotency.ts:3"}, "properties": {"repobilityId": "91af9fa63db71447", "scanner": "scanner-primary", "fingerprint": "80b9579770fc77de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4186681fb98e5a6e", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/redisClient.ts:3"}, "properties": {"repobilityId": "c3f2633cbb963474", "scanner": "scanner-primary", "fingerprint": "4186681fb98e5a6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa8a18350218a19d", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/realtime/streamPurge.ts:3"}, "properties": {"repobilityId": "b85c33a6fca6dd9f", "scanner": "scanner-primary", "fingerprint": "fa8a18350218a19d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2a7c065196fe1d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/buildGameState.ts:5"}, "properties": {"repobilityId": "34fb96cd7cfde389", "scanner": "scanner-primary", "fingerprint": "f2a7c065196fe1d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5bb9c435bf2d542f", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/realtime/eventLog.ts:8"}, "properties": {"repobilityId": "61c4c3da25928e54", "scanner": "scanner-primary", "fingerprint": "5bb9c435bf2d542f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64619698843cb1d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/commands.ts:3"}, "properties": {"repobilityId": "e50695d74ca0a7cd", "scanner": "scanner-primary", "fingerprint": "64619698843cb1d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2ec0f86c8223295", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/eventBus.ts:3"}, "properties": {"repobilityId": "2bc320e84d23a898", "scanner": "scanner-primary", "fingerprint": "c2ec0f86c8223295", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dcdd12d51620255", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/realtime/publish.ts:5"}, "properties": {"repobilityId": "7361f22932d82090", "scanner": "scanner-primary", "fingerprint": "2dcdd12d51620255", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4faab959003506ba", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/realtime/sharedInfra.ts:3"}, "properties": {"repobilityId": "347e905c161a71af", "scanner": "scanner-primary", "fingerprint": "4faab959003506ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93701d32286871b6", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/storage/seenStore.ts:1"}, "properties": {"repobilityId": "3c58ab487c443c92", "scanner": "scanner-primary", "fingerprint": "93701d32286871b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb2dfe02b6958031", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/storage/roomStore.ts:8"}, "properties": {"repobilityId": "e90a79fee3e22eff", "scanner": "scanner-primary", "fingerprint": "fb2dfe02b6958031", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-004f60535385db72", "level": "none", "message": {"text": "Commented-code block (10 lines) in lib/storage/sharedStores.ts:3"}, "properties": {"repobilityId": "b957513bab2aa9a3", "scanner": "scanner-primary", "fingerprint": "004f60535385db72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc442cc27484473a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/App.tsx:3"}, "properties": {"repobilityId": "fc8e31757023913e", "scanner": "scanner-primary", "fingerprint": "fc442cc27484473a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6451653f63576c01", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/GameTableMP.tsx:327"}, "properties": {"repobilityId": "d7e5e4d739faa867", "scanner": "scanner-primary", "fingerprint": "6451653f63576c01", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e44975117ee7a2d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTableMP.tsx:758"}, "properties": {"repobilityId": "1e5dbbc176ac443e", "scanner": "scanner-primary", "fingerprint": "e44975117ee7a2d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00643b5a846f9044", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/Landing.tsx:3"}, "properties": {"repobilityId": "198c0505821886c0", "scanner": "scanner-primary", "fingerprint": "00643b5a846f9044", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e235221a253575f5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/TributeModal.tsx:4"}, "properties": {"repobilityId": "eefd188909b5e359", "scanner": "scanner-primary", "fingerprint": "e235221a253575f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd21f9e466fe6218", "level": "note", "message": {"text": "Legacy-named symbol `waiting__copy` in src/screens/Waiting.tsx:228"}, "properties": {"repobilityId": "0a5d25e59a6ff4c5", "scanner": "scanner-primary", "fingerprint": "cd21f9e466fe6218", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f70cc38aced816b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/Waiting.tsx:3"}, "properties": {"repobilityId": "6f787fd188b69e53", "scanner": "scanner-primary", "fingerprint": "f70cc38aced816b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da41e51ca436ffed", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/GameTable4P.tsx:3"}, "properties": {"repobilityId": "fc2edee4392085af", "scanner": "scanner-primary", "fingerprint": "da41e51ca436ffed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bbee785f422e3bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/GameTable4P.tsx:793"}, "properties": {"repobilityId": "37a7ce79c5ec2251", "scanner": "scanner-primary", "fingerprint": "8bbee785f422e3bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09473d1ff4a14c9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/CreateRoom.tsx:29"}, "properties": {"repobilityId": "4d55bf3f8f500251", "scanner": "scanner-primary", "fingerprint": "09473d1ff4a14c9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11a0b9b8713b9ba5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/EndgameAssist.tsx:8"}, "properties": {"repobilityId": "438bf8bdcc603366", "scanner": "scanner-primary", "fingerprint": "11a0b9b8713b9ba5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23020f6601098901", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/Avatar.tsx:3"}, "properties": {"repobilityId": "689ec162903eec7d", "scanner": "scanner-primary", "fingerprint": "23020f6601098901", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eafdaaf4c1a02e96", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/HostIPWarning.tsx:8"}, "properties": {"repobilityId": "ec1e860ca957f7a3", "scanner": "scanner-primary", "fingerprint": "eafdaaf4c1a02e96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c1c1165bcddea3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/TurnCountdown.tsx:3"}, "properties": {"repobilityId": "13cbbf076f155ffe", "scanner": "scanner-primary", "fingerprint": "6c1c1165bcddea3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5ada3bfc87be16f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/SuggestionHint.tsx:5"}, "properties": {"repobilityId": "b4138bbb8b3959b0", "scanner": "scanner-primary", "fingerprint": "c5ada3bfc87be16f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15f451a2cf20f03b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ReportButton.tsx:3"}, "properties": {"repobilityId": "f3a9c5b4e7870897", "scanner": "scanner-primary", "fingerprint": "15f451a2cf20f03b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7ba504cbb854bb9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/PlayerStatusBadge.tsx:3"}, "properties": {"repobilityId": "7c96bcc4c4d44fa2", "scanner": "scanner-primary", "fingerprint": "c7ba504cbb854bb9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71de5e36ad1c4b58", "level": "none", "message": {"text": "Commented-code block (14 lines) in src/components/OrientationLock.tsx:4"}, "properties": {"repobilityId": "e4e6de50169ef91d", "scanner": "scanner-primary", "fingerprint": "71de5e36ad1c4b58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f18f1d7c697c27b0", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/WildcardSubDialog.tsx:6"}, "properties": {"repobilityId": "caf1eba8aff77c83", "scanner": "scanner-primary", "fingerprint": "f18f1d7c697c27b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af809749781b0735", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/SortButton.tsx:4"}, "properties": {"repobilityId": "8853843497035391", "scanner": "scanner-primary", "fingerprint": "af809749781b0735", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d8054e2822a99fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/Card.tsx:105"}, "properties": {"repobilityId": "79a6e351e735c1f2", "scanner": "scanner-primary", "fingerprint": "2d8054e2822a99fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19d1ed5ca6799d77", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/Hand.tsx:7"}, "properties": {"repobilityId": "47dffe5b1e576f68", "scanner": "scanner-primary", "fingerprint": "19d1ed5ca6799d77", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cddad0e50e4bc2bf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/orientation.ts:3"}, "properties": {"repobilityId": "e98e033b9f49dfac", "scanner": "scanner-primary", "fingerprint": "cddad0e50e4bc2bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee7f96d4a4eb650a", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/sseClient.ts:13"}, "properties": {"repobilityId": "c7d15b1340c2255e", "scanner": "scanner-primary", "fingerprint": "ee7f96d4a4eb650a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-565ea719e9ca7e0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/seating.ts:3"}, "properties": {"repobilityId": "c32584757e4915a2", "scanner": "scanner-primary", "fingerprint": "565ea719e9ca7e0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94ee96aa18de7a1c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/router.ts:3"}, "properties": {"repobilityId": "ee69618b37d71aac", "scanner": "scanner-primary", "fingerprint": "94ee96aa18de7a1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbef38e6cd24ae4a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/api/moveClient.ts:4"}, "properties": {"repobilityId": "c14c127e837bb509", "scanner": "scanner-primary", "fingerprint": "bbef38e6cd24ae4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e60c639382b1cd4e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/assist/sort.ts:3"}, "properties": {"repobilityId": "4abee2eff5e6b8c3", "scanner": "scanner-primary", "fingerprint": "e60c639382b1cd4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21613958614a1f5c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/assist/patternLabel.ts:3"}, "properties": {"repobilityId": "f06100de36639200", "scanner": "scanner-primary", "fingerprint": "21613958614a1f5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbd3d4d3ba1d067c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/assist/suggest.ts:8"}, "properties": {"repobilityId": "039ba47aa4d08b91", "scanner": "scanner-primary", "fingerprint": "cbd3d4d3ba1d067c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc9859186b1355f2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/telemetry/beacon.ts:3"}, "properties": {"repobilityId": "593b74b16b47a573", "scanner": "scanner-primary", "fingerprint": "dc9859186b1355f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ceef3de13d2b82d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/telemetry/beacon.ts:13"}, "properties": {"repobilityId": "6fd37978ad80cde6", "scanner": "scanner-primary", "fingerprint": "6ceef3de13d2b82d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}]}]}