{"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-be9145e0146d2919", "name": "Possibly dead Python function: draw_prism", "shortDescription": {"text": "Possibly dead Python function: draw_prism"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f5c33e019bad532", "name": "Possibly dead Python function: draw_round_tableware", "shortDescription": {"text": "Possibly dead Python function: draw_round_tableware"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1403a88185ec907e", "name": "Possibly dead Python function: draw_vine", "shortDescription": {"text": "Possibly dead Python function: draw_vine"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5537a1ab1e908001", "name": "Possibly dead Python function: draw_front_posts", "shortDescription": {"text": "Possibly dead Python function: draw_front_posts"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d15e1bb8efa0b9da", "name": "Possibly dead Python function: draw_table_supports", "shortDescription": {"text": "Possibly dead Python function: draw_table_supports"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0291c6d4f6ce517", "name": "Possibly dead Python function: draw_chair_legs", "shortDescription": {"text": "Possibly dead Python function: draw_chair_legs"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c408b0184042038e", "name": "Possibly dead Python function: wood_pattern", "shortDescription": {"text": "Possibly dead Python function: wood_pattern"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f818ba8499accf8c", "name": "Possibly dead Python function: mosaic_pattern", "shortDescription": {"text": "Possibly dead Python function: mosaic_pattern"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b57232fdabf7a462", "name": "Possibly dead Python function: stone_pattern", "shortDescription": {"text": "Possibly dead Python function: stone_pattern"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43f1d2bc048edb15", "name": "Possibly dead Python function: draw_character", "shortDescription": {"text": "Possibly dead Python function: draw_character"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c72b650379fea890", "name": "Possibly dead Python function: draw_character_v2", "shortDescription": {"text": "Possibly dead Python function: draw_character_v2"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10fab44c0e4d7c59", "name": "Possibly dead Python function: simple_door", "shortDescription": {"text": "Possibly dead Python function: simple_door"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b30c905baaa44252", "name": "Possibly dead Python function: simple_grass", "shortDescription": {"text": "Possibly dead Python function: simple_grass"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7f4cff8bd5278cc", "name": "Possibly dead Python function: simple_sign", "shortDescription": {"text": "Possibly dead Python function: simple_sign"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54a064d5233eab1f", "name": "Possibly dead Python function: flame_icon", "shortDescription": {"text": "Possibly dead Python function: flame_icon"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0ace755d0e7ee42", "name": "Possibly dead Python function: warning_icon", "shortDescription": {"text": "Possibly dead Python function: warning_icon"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e57c9d4501688162", "name": "Stray `console.log` in TS/JS \u2014 v2/src/ui/ChatPanel.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/ChatPanel.ts:124"}, "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-6593a94ca8ba59ec", "name": "Stray `console.log` in TS/JS \u2014 v2/src/ui/StaffPanel.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/StaffPanel.ts:72"}, "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-5261f351adeef80d", "name": "Stray `console.log` in TS/JS \u2014 v2/src/ui/VisitMode.ts:526", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/VisitMode.ts:526"}, "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-1056ed1216e3b26d", "name": "Stray `console.log` in TS/JS \u2014 v2/src/cloud/SpacetimeClient.ts:384", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/cloud/SpacetimeClient.ts:384"}, "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-43e076a22df6e505", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/GuestSpawner.ts:919", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/GuestSpawner.ts:919"}, "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-703a8af939751bd6", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/Engine.ts:413", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/Engine.ts:413"}, "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-23fee346e0274eff", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/FurnitureRegistry.ts:1226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/FurnitureRegistry.ts:1226"}, "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-46d6c887e64aaf76", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/ErrandRouter.ts:345", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/ErrandRouter.ts:345"}, "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-46c98c616a24d29a", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/SaveSystem.ts:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/SaveSystem.ts:163"}, "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-ab0afef8548b4803", "name": "Stray `console.log` in TS/JS \u2014 v2/src/game/StaffRouter.ts:734", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/StaffRouter.ts:734"}, "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-d18a56cd3fba2bad", "name": "Stray `console.log` in TS/JS \u2014 v2/src/scene/WorldScene.ts:4366", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/scene/WorldScene.ts:4366"}, "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-5909c5e2181448b6", "name": "Stray `console.log` in TS/JS \u2014 v2/src/systems/StaffSystem.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/systems/StaffSystem.ts:117"}, "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-e200ba12468c5c79", "name": "Stray `console.log` in TS/JS \u2014 v2/src/systems/CookingSystem.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/systems/CookingSystem.ts:146"}, "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-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-95d6b10871f86232", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildingPickModal.ts:88", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildingPickModal.ts:88"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-50ebdb5dafe6f675", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DecorModal.ts:109", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DecorModal.ts:109"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-657af2ad68d3fd93", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/Hud.ts:131", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/Hud.ts:131"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a072ce24a510b38a", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PantryModal.ts:167", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PantryModal.ts:167"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d77c8694beccb74b", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ChatPanel.ts:358", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ChatPanel.ts:358"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d2c6240c680ed81", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ExpandModal.ts:73", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ExpandModal.ts:73"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-007476dd4d49a796", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AdminModal.ts:794", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AdminModal.ts:794"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-adccd871869685e3", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/MenuPanel.ts:238", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/MenuPanel.ts:238"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a1c4e8ed89ae35f", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AchievementsModal.ts:109", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AchievementsModal.ts:109"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2b71eca3b4409c77", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StaffPanel.ts:267", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StaffPanel.ts:267"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5caaf0ae91d619b", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/VisitMode.ts:1764", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/VisitMode.ts:1764"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-025e48f1bd8a71f9", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StockStatusWidget.ts:193", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StockStatusWidget.ts:193"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a577f5b11f261b3d", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PlayerRosterPanel.ts:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PlayerRosterPanel.ts:91"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7a98396006dbbde8", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/SlotsModal.ts:93", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/SlotsModal.ts:93"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1a89a658021b8ab", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/UpgradeModal.ts:167", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/UpgradeModal.ts:167"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-965a1bafd711bfbb", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StatsModal.ts:83", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StatsModal.ts:83"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6572926fdacd1841", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/CloudModal.ts:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/CloudModal.ts:142"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6131ce0f36929714", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DayEndModal.ts:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DayEndModal.ts:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4e6012b528ef399", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildMenu.ts:363", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildMenu.ts:363"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0cbf7118a5fa96cf", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LoginModal.ts:183", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LoginModal.ts:183"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a9d3cdfa45c1000", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LedgerModal.ts:150", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LedgerModal.ts:150"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0b20406849a6558b", "name": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/game/Engine.ts:2626", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/game/Engine.ts:2626"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/deploy-pages@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-ad6701f0a8405e22", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3c7597077a66711d", "name": "Very large file: v2/spacetime/src/tables.rs (1798 lines)", "shortDescription": {"text": "Very large file: v2/spacetime/src/tables.rs (1798 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-461a62166eb624dc", "name": "Very large file: v2/spacetime/src/reducers/restaurant_sim.rs (8809 lines)", "shortDescription": {"text": "Very large file: v2/spacetime/src/reducers/restaurant_sim.rs (8809 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-ac4c2c6b95fca6b3", "name": "Very large file: v2/src/ui/AdminModal.ts (1275 lines)", "shortDescription": {"text": "Very large file: v2/src/ui/AdminModal.ts (1275 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-0df1e365418114aa", "name": "Very large file: v2/src/ui/VisitMode.ts (2012 lines)", "shortDescription": {"text": "Very large file: v2/src/ui/VisitMode.ts (2012 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-0287be1e6ddbb2ac", "name": "Very large file: v2/src/ui/BuildMenu.ts (1859 lines)", "shortDescription": {"text": "Very large file: v2/src/ui/BuildMenu.ts (1859 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-4d51532149907c97", "name": "Very large file: v2/src/cloud/SpacetimeClient.ts (4493 lines)", "shortDescription": {"text": "Very large file: v2/src/cloud/SpacetimeClient.ts (4493 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-c009e75f4c23502a", "name": "Very large file: v2/src/game/GuestSpawner.ts (4166 lines)", "shortDescription": {"text": "Very large file: v2/src/game/GuestSpawner.ts (4166 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-ee97a9fb54d47d33", "name": "Very large file: v2/src/game/Engine.ts (3799 lines)", "shortDescription": {"text": "Very large file: v2/src/game/Engine.ts (3799 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-26bee2be612e934a", "name": "Very large file: v2/src/game/FurnitureRegistry.ts (1594 lines)", "shortDescription": {"text": "Very large file: v2/src/game/FurnitureRegistry.ts (1594 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-13dbb4fad9a198c8", "name": "Very large file: v2/src/game/Game.ts (1449 lines)", "shortDescription": {"text": "Very large file: v2/src/game/Game.ts (1449 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-82d6e6806702bb44", "name": "Very large file: v2/src/game/StaffRouter.ts (3743 lines)", "shortDescription": {"text": "Very large file: v2/src/game/StaffRouter.ts (3743 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-2fef354f89fcf175", "name": "Very large file: v2/src/scene/WorldScene.ts (4764 lines)", "shortDescription": {"text": "Very large file: v2/src/scene/WorldScene.ts (4764 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-c5ffa60190d57229", "name": "Very large file: v2/src/systems/DishwareSystem.ts (1248 lines)", "shortDescription": {"text": "Very large file: v2/src/systems/DishwareSystem.ts (1248 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-4448fdfd79facb3f", "name": "Very large file: scripts/generate_atlases.py (4146 lines)", "shortDescription": {"text": "Very large file: scripts/generate_atlases.py (4146 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-5c657cfe588713b4", "name": "Very large file: src/scenes/GameScene.ts (14122 lines)", "shortDescription": {"text": "Very large file: src/scenes/GameScene.ts (14122 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "0 test file(s) for 255 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 152 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 41 placeholder/mock markers across 15 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-11825279136b53a3", "name": "CI is configured but no tests are detected", "shortDescription": {"text": "CI is configured but no tests are detected"}, "fullDescription": {"text": "A CI pipeline exists, but the scan found no test files to gate. Opus labeled this generated-code pattern as config theater: release machinery exists, but it has little behavioral signal."}, "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-d371845d42957fdb", "name": "Commented-code block (5 lines) in v2/vite.config.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in v2/vite.config.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-c90ba389b7525412", "name": "Commented-code block (5 lines) in v2/scripts/generate_meshy_characters.py:85", "shortDescription": {"text": "Commented-code block (5 lines) in v2/scripts/generate_meshy_characters.py:85"}, "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-992c3cd29bcd918d", "name": "Commented-code block (7 lines) in v2/src/ui/Hud.ts:114", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/ui/Hud.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2be0641fd1a94b5f", "name": "Commented-code block (5 lines) in v2/src/ui/PantryModal.ts:287", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/PantryModal.ts:287"}, "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-1c5a938a1cbb3daa", "name": "Commented-code block (6 lines) in v2/src/ui/ExpandWidget.ts:78", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/ui/ExpandWidget.ts:78"}, "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-c91f487990836e92", "name": "Commented-code block (5 lines) in v2/src/ui/ChatPanel.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/ChatPanel.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68dc79804c7886fe", "name": "Commented-code block (9 lines) in v2/src/ui/AdminModal.ts:240", "shortDescription": {"text": "Commented-code block (9 lines) in v2/src/ui/AdminModal.ts:240"}, "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-f1e90b77325cebf4", "name": "Commented-code block (9 lines) in v2/src/ui/MenuPanel.ts:86", "shortDescription": {"text": "Commented-code block (9 lines) in v2/src/ui/MenuPanel.ts:86"}, "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-f9860fe79cba55a6", "name": "Commented-code block (5 lines) in v2/src/ui/AchievementsModal.ts:110", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/AchievementsModal.ts:110"}, "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-ef55764bb0864fcc", "name": "Commented-code block (5 lines) in v2/src/ui/StaffPanel.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/StaffPanel.ts:86"}, "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-f9cab07368e19eb7", "name": "Commented-code block (5 lines) in v2/src/ui/VisitMode.ts:406", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/VisitMode.ts:406"}, "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-7fedbd6113cb245f", "name": "Commented-code block (5 lines) in v2/src/ui/StockStatusWidget.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/StockStatusWidget.ts:126"}, "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-fa322ad80605b0c4", "name": "Commented-code block (5 lines) in v2/src/ui/CameraControls.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/CameraControls.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2c1cefa45be95e2", "name": "Commented-code block (5 lines) in v2/src/ui/UpgradeModal.ts:440", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/UpgradeModal.ts:440"}, "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-22cf3d41b7926fc2", "name": "Commented-code block (5 lines) in v2/src/ui/CloudModal.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/CloudModal.ts:14"}, "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-1ac7eadc1f2bbd9b", "name": "Commented-code block (5 lines) in v2/src/ui/SfxPlayer.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/SfxPlayer.ts:119"}, "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-38a7824adc91549a", "name": "Commented-code block (6 lines) in v2/src/ui/FloorSelector.ts:134", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/ui/FloorSelector.ts:134"}, "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-bf06d981eac1881f", "name": "Commented-code block (5 lines) in v2/src/ui/BuildMenu.ts:377", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/ui/BuildMenu.ts:377"}, "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-dbe82e4fab2ce197", "name": "Commented-code block (7 lines) in v2/src/ui/LoginModal.ts:46", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/ui/LoginModal.ts:46"}, "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-819f75293f92cc7e", "name": "Commented-code block (9 lines) in v2/src/ui/StatusBubbles.ts:100", "shortDescription": {"text": "Commented-code block (9 lines) in v2/src/ui/StatusBubbles.ts:100"}, "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-1995f5ef3b1bd196", "name": "Commented-code block (7 lines) in v2/src/ui/PanelDragResize.ts:94", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/ui/PanelDragResize.ts:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26145e3ee718d302", "name": "Commented-code block (5 lines) in v2/src/cloud/SpacetimeClient.ts:256", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/cloud/SpacetimeClient.ts:256"}, "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-9ad0b55b8466a2d7", "name": "Commented-code block (6 lines) in v2/src/assets/fitFurniture.ts:87", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/assets/fitFurniture.ts:87"}, "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-566ab90387f3ac57", "name": "Commented-code block (6 lines) in v2/src/assets/ProcDecor.ts:13", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/assets/ProcDecor.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-723d93069676b2c5", "name": "Commented-code block (6 lines) in v2/src/assets/CharacterLoader.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/assets/CharacterLoader.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fed96bb6f587b9c2", "name": "Commented-code block (5 lines) in v2/src/workers/textureWorker.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/workers/textureWorker.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-f26e29a40049cf96", "name": "Commented-code block (8 lines) in v2/src/game/GuestSpawner.ts:60", "shortDescription": {"text": "Commented-code block (8 lines) in v2/src/game/GuestSpawner.ts:60"}, "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-7000babe58a0e0c4", "name": "Commented-code block (5 lines) in v2/src/game/Engine.ts:204", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/game/Engine.ts:204"}, "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-94642baeb2a82997", "name": "Commented-code block (7 lines) in v2/src/game/FurnitureRegistry.ts:201", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/game/FurnitureRegistry.ts:201"}, "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-c9dfff28f598ffb2", "name": "Commented-code block (6 lines) in v2/src/game/ErrandRouter.ts:200", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/game/ErrandRouter.ts:200"}, "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-1db7a7d3cdc84a0b", "name": "Commented-code block (5 lines) in v2/src/game/SaveSystem.ts:333", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/game/SaveSystem.ts:333"}, "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-cc6ee4da7f2b48f9", "name": "Commented-code block (7 lines) in v2/src/game/Game.ts:102", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/game/Game.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-cac3ac8858ea5552", "name": "Commented-code block (7 lines) in v2/src/game/StaffRouter.ts:330", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/game/StaffRouter.ts:330"}, "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-9e606fa1c473a1e8", "name": "Commented-code block (5 lines) in v2/src/game/SharedPedestrians.ts:171", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/game/SharedPedestrians.ts:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5927797121e2ccf", "name": "Commented-code block (9 lines) in v2/src/game/DayHistory.ts:43", "shortDescription": {"text": "Commented-code block (9 lines) in v2/src/game/DayHistory.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa87edbbc46b5d42", "name": "Commented-code block (5 lines) in v2/src/game/Pathfinding.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/game/Pathfinding.ts:153"}, "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-36b212aeaac3268b", "name": "Commented-code block (9 lines) in v2/src/game/featureFlags.ts:71", "shortDescription": {"text": "Commented-code block (9 lines) in v2/src/game/featureFlags.ts:71"}, "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-9faf2435ee7e55de", "name": "Commented-code block (7 lines) in v2/src/game/GraphicsQuality.ts:64", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/game/GraphicsQuality.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-7d1d148ec877b6a4", "name": "Commented-code block (6 lines) in v2/src/scene/WeatherEffects.ts:62", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/scene/WeatherEffects.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b036a6077699f08", "name": "Commented-code block (7 lines) in v2/src/scene/WorldScene.ts:237", "shortDescription": {"text": "Commented-code block (7 lines) in v2/src/scene/WorldScene.ts:237"}, "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-d216e4d1823afe94", "name": "Commented-code block (5 lines) in v2/src/scene/interiorPieces.ts:37", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/scene/interiorPieces.ts:37"}, "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-57a205f99c46e865", "name": "Commented-code block (6 lines) in v2/src/scene/IsoCamera.ts:67", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/scene/IsoCamera.ts:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d0fed5f9afb1e35", "name": "Commented-code block (5 lines) in v2/src/scene/CharacterAnimator.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/scene/CharacterAnimator.ts:63"}, "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-db51b882ed719605", "name": "Commented-code block (5 lines) in v2/src/scene/wallBuilder.ts:241", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/scene/wallBuilder.ts:241"}, "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-8b45e6f1402a9962", "name": "Commented-code block (5 lines) in v2/src/systems/StaffSystem.ts:488", "shortDescription": {"text": "Commented-code block (5 lines) in v2/src/systems/StaffSystem.ts:488"}, "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-4ef89a9eacacc65a", "name": "Commented-code block (6 lines) in v2/src/systems/EconomySystem.ts:65", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/systems/EconomySystem.ts:65"}, "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-055b2a94ac633d76", "name": "Commented-code block (6 lines) in v2/src/systems/CookingSystem.ts:387", "shortDescription": {"text": "Commented-code block (6 lines) in v2/src/systems/CookingSystem.ts:387"}, "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-2e229cce5fc50577", "name": "Commented-code block (14 lines) in v2/src/systems/DishwareSystem.ts:205", "shortDescription": {"text": "Commented-code block (14 lines) in v2/src/systems/DishwareSystem.ts:205"}, "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-f88818a6fe5d63d2", "name": "Legacy-named symbol `draw_character_v2` in scripts/generate_atlases.py:2882", "shortDescription": {"text": "Legacy-named symbol `draw_character_v2` in scripts/generate_atlases.py:2882"}, "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-eeacd80e208a77ca", "name": "Commented-code block (5 lines) in scripts/generate_atlases.py:984", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate_atlases.py:984"}, "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-c1c7c8518b727975", "name": "Commented-code block (5 lines) in src/scenes/GameScene.ts:5254", "shortDescription": {"text": "Commented-code block (5 lines) in src/scenes/GameScene.ts:5254"}, "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-2eafc3188c36bb02", "name": "3 env vars used in code but missing from .env.example", "shortDescription": {"text": "3 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BASE_URL`, `DEV`, `NODE_ENV`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be46ea126aa5d8dc", "name": "Near-duplicate function bodies in 3 places", "shortDescription": {"text": "Near-duplicate function bodies in 3 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/generate_atlases.py:polygon_center, scripts/generate_atlases.py:polygon, scripts/generate_atlases.py:poly\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/generate_atlases.py:sprite_canvas_for, scripts/generate_atlases.py:draw_floor_sprite, scripts/generate_atlases.py:sp, scripts/generate_atlases.py:sp\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\nscripts/generate_atlases.py:box, scripts/generate_atlases.py:box\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20227"}, "properties": {"repository": "stamelakis/cozy-bistro", "repoUrl": "https://github.com/stamelakis/cozy-bistro", "branch": "main"}, "results": [{"ruleId": "scanner-be9145e0146d2919", "level": "note", "message": {"text": "Possibly dead Python function: draw_prism"}, "properties": {"repobilityId": "673d8ceff8204c78", "scanner": "scanner-primary", "fingerprint": "be9145e0146d2919", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:287"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f5c33e019bad532", "level": "note", "message": {"text": "Possibly dead Python function: draw_round_tableware"}, "properties": {"repobilityId": "20fae362013bf133", "scanner": "scanner-primary", "fingerprint": "9f5c33e019bad532", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:299"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1403a88185ec907e", "level": "note", "message": {"text": "Possibly dead Python function: draw_vine"}, "properties": {"repobilityId": "6439f3b318c8101b", "scanner": "scanner-primary", "fingerprint": "1403a88185ec907e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:405"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5537a1ab1e908001", "level": "note", "message": {"text": "Possibly dead Python function: draw_front_posts"}, "properties": {"repobilityId": "86ae82301346e82c", "scanner": "scanner-primary", "fingerprint": "5537a1ab1e908001", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:464"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d15e1bb8efa0b9da", "level": "note", "message": {"text": "Possibly dead Python function: draw_table_supports"}, "properties": {"repobilityId": "73a78ce6be6280aa", "scanner": "scanner-primary", "fingerprint": "d15e1bb8efa0b9da", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:509"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0291c6d4f6ce517", "level": "note", "message": {"text": "Possibly dead Python function: draw_chair_legs"}, "properties": {"repobilityId": "16f3ee45ab617e0e", "scanner": "scanner-primary", "fingerprint": "c0291c6d4f6ce517", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:677"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c408b0184042038e", "level": "note", "message": {"text": "Possibly dead Python function: wood_pattern"}, "properties": {"repobilityId": "5a7eabff359cc16b", "scanner": "scanner-primary", "fingerprint": "c408b0184042038e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:832"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f818ba8499accf8c", "level": "note", "message": {"text": "Possibly dead Python function: mosaic_pattern"}, "properties": {"repobilityId": "01c1491e56122e4a", "scanner": "scanner-primary", "fingerprint": "f818ba8499accf8c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:847"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b57232fdabf7a462", "level": "note", "message": {"text": "Possibly dead Python function: stone_pattern"}, "properties": {"repobilityId": "0d6ca2cced8c247b", "scanner": "scanner-primary", "fingerprint": "b57232fdabf7a462", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:861"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-43f1d2bc048edb15", "level": "note", "message": {"text": "Possibly dead Python function: draw_character"}, "properties": {"repobilityId": "0d78451df254e86b", "scanner": "scanner-primary", "fingerprint": "43f1d2bc048edb15", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:2683"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c72b650379fea890", "level": "note", "message": {"text": "Possibly dead Python function: draw_character_v2"}, "properties": {"repobilityId": "c889c65491403ef4", "scanner": "scanner-primary", "fingerprint": "c72b650379fea890", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:2882"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-10fab44c0e4d7c59", "level": "note", "message": {"text": "Possibly dead Python function: simple_door"}, "properties": {"repobilityId": "74748dcbb08b66ee", "scanner": "scanner-primary", "fingerprint": "10fab44c0e4d7c59", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:4041"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b30c905baaa44252", "level": "note", "message": {"text": "Possibly dead Python function: simple_grass"}, "properties": {"repobilityId": "3344addb78dcdc0f", "scanner": "scanner-primary", "fingerprint": "b30c905baaa44252", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:4050"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7f4cff8bd5278cc", "level": "note", "message": {"text": "Possibly dead Python function: simple_sign"}, "properties": {"repobilityId": "1a9a4ca098a74496", "scanner": "scanner-primary", "fingerprint": "e7f4cff8bd5278cc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:4059"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-54a064d5233eab1f", "level": "note", "message": {"text": "Possibly dead Python function: flame_icon"}, "properties": {"repobilityId": "07ff2e28ca575e60", "scanner": "scanner-primary", "fingerprint": "54a064d5233eab1f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:4091"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c0ace755d0e7ee42", "level": "note", "message": {"text": "Possibly dead Python function: warning_icon"}, "properties": {"repobilityId": "d2bb030b6cd7e0ca", "scanner": "scanner-primary", "fingerprint": "c0ace755d0e7ee42", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate_atlases.py:4112"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-e57c9d4501688162", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/ChatPanel.ts:124"}, "properties": {"repobilityId": "454582e8bffc0ff7", "scanner": "scanner-primary", "fingerprint": "e57c9d4501688162", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6593a94ca8ba59ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/StaffPanel.ts:72"}, "properties": {"repobilityId": "dd8ce6f2b7149328", "scanner": "scanner-primary", "fingerprint": "6593a94ca8ba59ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5261f351adeef80d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/ui/VisitMode.ts:526"}, "properties": {"repobilityId": "2f93dcf26795e9d9", "scanner": "scanner-primary", "fingerprint": "5261f351adeef80d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1056ed1216e3b26d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/cloud/SpacetimeClient.ts:384"}, "properties": {"repobilityId": "81a4ded52503d290", "scanner": "scanner-primary", "fingerprint": "1056ed1216e3b26d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43e076a22df6e505", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/GuestSpawner.ts:919"}, "properties": {"repobilityId": "b9152cd790b0bd2c", "scanner": "scanner-primary", "fingerprint": "43e076a22df6e505", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-703a8af939751bd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/Engine.ts:413"}, "properties": {"repobilityId": "353237382f75003a", "scanner": "scanner-primary", "fingerprint": "703a8af939751bd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23fee346e0274eff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/FurnitureRegistry.ts:1226"}, "properties": {"repobilityId": "fea2cf67f946e721", "scanner": "scanner-primary", "fingerprint": "23fee346e0274eff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46d6c887e64aaf76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/ErrandRouter.ts:345"}, "properties": {"repobilityId": "41f5cb3b9fdedf24", "scanner": "scanner-primary", "fingerprint": "46d6c887e64aaf76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46c98c616a24d29a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/SaveSystem.ts:163"}, "properties": {"repobilityId": "c6d299ed89d95960", "scanner": "scanner-primary", "fingerprint": "46c98c616a24d29a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab0afef8548b4803", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/game/StaffRouter.ts:734"}, "properties": {"repobilityId": "9539a2fc3e34d3aa", "scanner": "scanner-primary", "fingerprint": "ab0afef8548b4803", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d18a56cd3fba2bad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/scene/WorldScene.ts:4366"}, "properties": {"repobilityId": "4aca6ec19a00aa87", "scanner": "scanner-primary", "fingerprint": "d18a56cd3fba2bad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5909c5e2181448b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/systems/StaffSystem.ts:117"}, "properties": {"repobilityId": "5e849913d22af23f", "scanner": "scanner-primary", "fingerprint": "5909c5e2181448b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e200ba12468c5c79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 v2/src/systems/CookingSystem.ts:146"}, "properties": {"repobilityId": "5ab9cefaf3316416", "scanner": "scanner-primary", "fingerprint": "e200ba12468c5c79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-95d6b10871f86232", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildingPickModal.ts:88"}, "properties": {"repobilityId": "a1f6e5f13243007b", "scanner": "scanner-primary", "fingerprint": "95d6b10871f86232", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/BuildingPickModal.ts"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-50ebdb5dafe6f675", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DecorModal.ts:109"}, "properties": {"repobilityId": "9247d3d85dc67b2f", "scanner": "scanner-primary", "fingerprint": "50ebdb5dafe6f675", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/DecorModal.ts"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-657af2ad68d3fd93", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/Hud.ts:131"}, "properties": {"repobilityId": "38f6c9f87a38859a", "scanner": "scanner-primary", "fingerprint": "657af2ad68d3fd93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/Hud.ts"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-a072ce24a510b38a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PantryModal.ts:167"}, "properties": {"repobilityId": "bc7918fc8d3ee85c", "scanner": "scanner-primary", "fingerprint": "a072ce24a510b38a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/PantryModal.ts"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-d77c8694beccb74b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ChatPanel.ts:358"}, "properties": {"repobilityId": "837a662b4a3bc916", "scanner": "scanner-primary", "fingerprint": "d77c8694beccb74b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/ChatPanel.ts"}, "region": {"startLine": 358}}}]}, {"ruleId": "scanner-5d2c6240c680ed81", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/ExpandModal.ts:73"}, "properties": {"repobilityId": "75ea3972604acb98", "scanner": "scanner-primary", "fingerprint": "5d2c6240c680ed81", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/ExpandModal.ts"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-007476dd4d49a796", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AdminModal.ts:794"}, "properties": {"repobilityId": "c5948bc81a2b85fb", "scanner": "scanner-primary", "fingerprint": "007476dd4d49a796", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/AdminModal.ts"}, "region": {"startLine": 794}}}]}, {"ruleId": "scanner-adccd871869685e3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/MenuPanel.ts:238"}, "properties": {"repobilityId": "67e333d9c02835d4", "scanner": "scanner-primary", "fingerprint": "adccd871869685e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/MenuPanel.ts"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-7a1c4e8ed89ae35f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/AchievementsModal.ts:109"}, "properties": {"repobilityId": "36776f57977c06c1", "scanner": "scanner-primary", "fingerprint": "7a1c4e8ed89ae35f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/AchievementsModal.ts"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-2b71eca3b4409c77", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StaffPanel.ts:267"}, "properties": {"repobilityId": "cd11e64b9688112c", "scanner": "scanner-primary", "fingerprint": "2b71eca3b4409c77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/StaffPanel.ts"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-d5caaf0ae91d619b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/VisitMode.ts:1764"}, "properties": {"repobilityId": "1090c05fce43e4aa", "scanner": "scanner-primary", "fingerprint": "d5caaf0ae91d619b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/VisitMode.ts"}, "region": {"startLine": 1764}}}]}, {"ruleId": "scanner-025e48f1bd8a71f9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StockStatusWidget.ts:193"}, "properties": {"repobilityId": "85ffedeae2264e71", "scanner": "scanner-primary", "fingerprint": "025e48f1bd8a71f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/StockStatusWidget.ts"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-a577f5b11f261b3d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/PlayerRosterPanel.ts:91"}, "properties": {"repobilityId": "af3c6ba062037d82", "scanner": "scanner-primary", "fingerprint": "a577f5b11f261b3d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/PlayerRosterPanel.ts"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-7a98396006dbbde8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/SlotsModal.ts:93"}, "properties": {"repobilityId": "3e12840aee6e6be5", "scanner": "scanner-primary", "fingerprint": "7a98396006dbbde8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/SlotsModal.ts"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-e1a89a658021b8ab", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/UpgradeModal.ts:167"}, "properties": {"repobilityId": "f8b5bb2862591d41", "scanner": "scanner-primary", "fingerprint": "e1a89a658021b8ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/UpgradeModal.ts"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-965a1bafd711bfbb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/StatsModal.ts:83"}, "properties": {"repobilityId": "851294e21d763945", "scanner": "scanner-primary", "fingerprint": "965a1bafd711bfbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/StatsModal.ts"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-6572926fdacd1841", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/CloudModal.ts:142"}, "properties": {"repobilityId": "62dbad9207008bab", "scanner": "scanner-primary", "fingerprint": "6572926fdacd1841", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/CloudModal.ts"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-6131ce0f36929714", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/DayEndModal.ts:57"}, "properties": {"repobilityId": "0ddefb399f27c688", "scanner": "scanner-primary", "fingerprint": "6131ce0f36929714", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/DayEndModal.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-c4e6012b528ef399", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/BuildMenu.ts:363"}, "properties": {"repobilityId": "9ec02d20f26bf787", "scanner": "scanner-primary", "fingerprint": "c4e6012b528ef399", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/BuildMenu.ts"}, "region": {"startLine": 363}}}]}, {"ruleId": "scanner-0cbf7118a5fa96cf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LoginModal.ts:183"}, "properties": {"repobilityId": "78b836462a496950", "scanner": "scanner-primary", "fingerprint": "0cbf7118a5fa96cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/LoginModal.ts"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-8a9d3cdfa45c1000", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/ui/LedgerModal.ts:150"}, "properties": {"repobilityId": "3e7a0b6c72b51e1b", "scanner": "scanner-primary", "fingerprint": "8a9d3cdfa45c1000", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/ui/LedgerModal.ts"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-0b20406849a6558b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in v2/src/game/Engine.ts:2626"}, "properties": {"repobilityId": "9ba153c2221966d6", "scanner": "scanner-primary", "fingerprint": "0b20406849a6558b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "v2/src/game/Engine.ts"}, "region": {"startLine": 2626}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "419d1ec7943efec2", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-ad6701f0a8405e22", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8384c23520d55657", "scanner": "scanner-primary", "fingerprint": "ad6701f0a8405e22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c7597077a66711d", "level": "note", "message": {"text": "Very large file: v2/spacetime/src/tables.rs (1798 lines)"}, "properties": {"repobilityId": "82daa90615b3a473", "scanner": "scanner-primary", "fingerprint": "3c7597077a66711d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-461a62166eb624dc", "level": "note", "message": {"text": "Very large file: v2/spacetime/src/reducers/restaurant_sim.rs (8809 lines)"}, "properties": {"repobilityId": "abd6948544c88b23", "scanner": "scanner-primary", "fingerprint": "461a62166eb624dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac4c2c6b95fca6b3", "level": "note", "message": {"text": "Very large file: v2/src/ui/AdminModal.ts (1275 lines)"}, "properties": {"repobilityId": "02da13f0a4d9c7f8", "scanner": "scanner-primary", "fingerprint": "ac4c2c6b95fca6b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0df1e365418114aa", "level": "note", "message": {"text": "Very large file: v2/src/ui/VisitMode.ts (2012 lines)"}, "properties": {"repobilityId": "68b00ac12df8f182", "scanner": "scanner-primary", "fingerprint": "0df1e365418114aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0287be1e6ddbb2ac", "level": "note", "message": {"text": "Very large file: v2/src/ui/BuildMenu.ts (1859 lines)"}, "properties": {"repobilityId": "542b596b5f92920b", "scanner": "scanner-primary", "fingerprint": "0287be1e6ddbb2ac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d51532149907c97", "level": "note", "message": {"text": "Very large file: v2/src/cloud/SpacetimeClient.ts (4493 lines)"}, "properties": {"repobilityId": "4875ba036a7852f0", "scanner": "scanner-primary", "fingerprint": "4d51532149907c97", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c009e75f4c23502a", "level": "note", "message": {"text": "Very large file: v2/src/game/GuestSpawner.ts (4166 lines)"}, "properties": {"repobilityId": "389a5f5979f235eb", "scanner": "scanner-primary", "fingerprint": "c009e75f4c23502a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ee97a9fb54d47d33", "level": "note", "message": {"text": "Very large file: v2/src/game/Engine.ts (3799 lines)"}, "properties": {"repobilityId": "410f2e3e5b8e05ec", "scanner": "scanner-primary", "fingerprint": "ee97a9fb54d47d33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-26bee2be612e934a", "level": "note", "message": {"text": "Very large file: v2/src/game/FurnitureRegistry.ts (1594 lines)"}, "properties": {"repobilityId": "1dea3db865ea7d7a", "scanner": "scanner-primary", "fingerprint": "26bee2be612e934a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-13dbb4fad9a198c8", "level": "note", "message": {"text": "Very large file: v2/src/game/Game.ts (1449 lines)"}, "properties": {"repobilityId": "4492436c11dc1a31", "scanner": "scanner-primary", "fingerprint": "13dbb4fad9a198c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82d6e6806702bb44", "level": "note", "message": {"text": "Very large file: v2/src/game/StaffRouter.ts (3743 lines)"}, "properties": {"repobilityId": "59904e3196df758a", "scanner": "scanner-primary", "fingerprint": "82d6e6806702bb44", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2fef354f89fcf175", "level": "note", "message": {"text": "Very large file: v2/src/scene/WorldScene.ts (4764 lines)"}, "properties": {"repobilityId": "efee92458dca4106", "scanner": "scanner-primary", "fingerprint": "2fef354f89fcf175", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c5ffa60190d57229", "level": "note", "message": {"text": "Very large file: v2/src/systems/DishwareSystem.ts (1248 lines)"}, "properties": {"repobilityId": "fb1ad8593f3ebfc7", "scanner": "scanner-primary", "fingerprint": "c5ffa60190d57229", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4448fdfd79facb3f", "level": "note", "message": {"text": "Very large file: scripts/generate_atlases.py (4146 lines)"}, "properties": {"repobilityId": "cecb766e9c73551c", "scanner": "scanner-primary", "fingerprint": "4448fdfd79facb3f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5c657cfe588713b4", "level": "note", "message": {"text": "Very large file: src/scenes/GameScene.ts (14122 lines)"}, "properties": {"repobilityId": "a1bdcc2278ecb6f0", "scanner": "scanner-primary", "fingerprint": "5c657cfe588713b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "ea127fa489a8fb9a", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "320430d39d014353", "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": "06d00706380d3ed2", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-11825279136b53a3", "level": "warning", "message": {"text": "CI is configured but no tests are detected"}, "properties": {"repobilityId": "50ab57471cfae282", "scanner": "scanner-primary", "fingerprint": "11825279136b53a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "ci", "config-theater", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8405ac13b7c0749d", "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": "ed1b00000c070843", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-d371845d42957fdb", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/vite.config.ts:4"}, "properties": {"repobilityId": "4883cd5f7903ebc2", "scanner": "scanner-primary", "fingerprint": "d371845d42957fdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c90ba389b7525412", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/scripts/generate_meshy_characters.py:85"}, "properties": {"repobilityId": "66d01abfe99b3a38", "scanner": "scanner-primary", "fingerprint": "c90ba389b7525412", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-992c3cd29bcd918d", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/ui/Hud.ts:114"}, "properties": {"repobilityId": "c352c16622c21c61", "scanner": "scanner-primary", "fingerprint": "992c3cd29bcd918d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2be0641fd1a94b5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/PantryModal.ts:287"}, "properties": {"repobilityId": "8f5bf538ec0605ed", "scanner": "scanner-primary", "fingerprint": "2be0641fd1a94b5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c5a938a1cbb3daa", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/ui/ExpandWidget.ts:78"}, "properties": {"repobilityId": "03aaf94e31eba7bb", "scanner": "scanner-primary", "fingerprint": "1c5a938a1cbb3daa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c91f487990836e92", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/ChatPanel.ts:69"}, "properties": {"repobilityId": "f40450a759847fa6", "scanner": "scanner-primary", "fingerprint": "c91f487990836e92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68dc79804c7886fe", "level": "none", "message": {"text": "Commented-code block (9 lines) in v2/src/ui/AdminModal.ts:240"}, "properties": {"repobilityId": "f282a0a9a96ac494", "scanner": "scanner-primary", "fingerprint": "68dc79804c7886fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1e90b77325cebf4", "level": "none", "message": {"text": "Commented-code block (9 lines) in v2/src/ui/MenuPanel.ts:86"}, "properties": {"repobilityId": "ab20fe07d04a89d9", "scanner": "scanner-primary", "fingerprint": "f1e90b77325cebf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9860fe79cba55a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/AchievementsModal.ts:110"}, "properties": {"repobilityId": "f53318f42750bb1b", "scanner": "scanner-primary", "fingerprint": "f9860fe79cba55a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef55764bb0864fcc", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/StaffPanel.ts:86"}, "properties": {"repobilityId": "551ed6985c935aa0", "scanner": "scanner-primary", "fingerprint": "ef55764bb0864fcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9cab07368e19eb7", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/VisitMode.ts:406"}, "properties": {"repobilityId": "cef5c1370d237813", "scanner": "scanner-primary", "fingerprint": "f9cab07368e19eb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fedbd6113cb245f", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/StockStatusWidget.ts:126"}, "properties": {"repobilityId": "327bbafdc281880f", "scanner": "scanner-primary", "fingerprint": "7fedbd6113cb245f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa322ad80605b0c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/CameraControls.ts:114"}, "properties": {"repobilityId": "1fed7e2324c458be", "scanner": "scanner-primary", "fingerprint": "fa322ad80605b0c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2c1cefa45be95e2", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/UpgradeModal.ts:440"}, "properties": {"repobilityId": "0c4797cecba81f74", "scanner": "scanner-primary", "fingerprint": "f2c1cefa45be95e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22cf3d41b7926fc2", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/CloudModal.ts:14"}, "properties": {"repobilityId": "7093be9bb2f1680f", "scanner": "scanner-primary", "fingerprint": "22cf3d41b7926fc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac7eadc1f2bbd9b", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/SfxPlayer.ts:119"}, "properties": {"repobilityId": "fe5248b77186fc48", "scanner": "scanner-primary", "fingerprint": "1ac7eadc1f2bbd9b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38a7824adc91549a", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/ui/FloorSelector.ts:134"}, "properties": {"repobilityId": "bd5c8bf149762b8b", "scanner": "scanner-primary", "fingerprint": "38a7824adc91549a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf06d981eac1881f", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/ui/BuildMenu.ts:377"}, "properties": {"repobilityId": "30ca733f745a95ea", "scanner": "scanner-primary", "fingerprint": "bf06d981eac1881f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbe82e4fab2ce197", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/ui/LoginModal.ts:46"}, "properties": {"repobilityId": "cda2ca2604a43e1d", "scanner": "scanner-primary", "fingerprint": "dbe82e4fab2ce197", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-819f75293f92cc7e", "level": "none", "message": {"text": "Commented-code block (9 lines) in v2/src/ui/StatusBubbles.ts:100"}, "properties": {"repobilityId": "c58d901cf5f26835", "scanner": "scanner-primary", "fingerprint": "819f75293f92cc7e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1995f5ef3b1bd196", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/ui/PanelDragResize.ts:94"}, "properties": {"repobilityId": "6a482f95b328833b", "scanner": "scanner-primary", "fingerprint": "1995f5ef3b1bd196", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26145e3ee718d302", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/cloud/SpacetimeClient.ts:256"}, "properties": {"repobilityId": "908f8ca2af791014", "scanner": "scanner-primary", "fingerprint": "26145e3ee718d302", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ad0b55b8466a2d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/assets/fitFurniture.ts:87"}, "properties": {"repobilityId": "7e31a5d58a88fbb8", "scanner": "scanner-primary", "fingerprint": "9ad0b55b8466a2d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-566ab90387f3ac57", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/assets/ProcDecor.ts:13"}, "properties": {"repobilityId": "280e6e166820ceba", "scanner": "scanner-primary", "fingerprint": "566ab90387f3ac57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-723d93069676b2c5", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/assets/CharacterLoader.ts:68"}, "properties": {"repobilityId": "352ce1874f45150e", "scanner": "scanner-primary", "fingerprint": "723d93069676b2c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fed96bb6f587b9c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/workers/textureWorker.ts:5"}, "properties": {"repobilityId": "81bc63fce02dfc0d", "scanner": "scanner-primary", "fingerprint": "fed96bb6f587b9c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f26e29a40049cf96", "level": "none", "message": {"text": "Commented-code block (8 lines) in v2/src/game/GuestSpawner.ts:60"}, "properties": {"repobilityId": "7499b838234df726", "scanner": "scanner-primary", "fingerprint": "f26e29a40049cf96", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7000babe58a0e0c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/game/Engine.ts:204"}, "properties": {"repobilityId": "741e5fc6cb463da5", "scanner": "scanner-primary", "fingerprint": "7000babe58a0e0c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94642baeb2a82997", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/game/FurnitureRegistry.ts:201"}, "properties": {"repobilityId": "f4e759008dcb7b1a", "scanner": "scanner-primary", "fingerprint": "94642baeb2a82997", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c9dfff28f598ffb2", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/game/ErrandRouter.ts:200"}, "properties": {"repobilityId": "4e5e2c821928b80e", "scanner": "scanner-primary", "fingerprint": "c9dfff28f598ffb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1db7a7d3cdc84a0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/game/SaveSystem.ts:333"}, "properties": {"repobilityId": "b175dcab620d9313", "scanner": "scanner-primary", "fingerprint": "1db7a7d3cdc84a0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc6ee4da7f2b48f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/game/Game.ts:102"}, "properties": {"repobilityId": "4d1f009741778082", "scanner": "scanner-primary", "fingerprint": "cc6ee4da7f2b48f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cac3ac8858ea5552", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/game/StaffRouter.ts:330"}, "properties": {"repobilityId": "1a7bd5f90336ded4", "scanner": "scanner-primary", "fingerprint": "cac3ac8858ea5552", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e606fa1c473a1e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/game/SharedPedestrians.ts:171"}, "properties": {"repobilityId": "11d54bc3371bd405", "scanner": "scanner-primary", "fingerprint": "9e606fa1c473a1e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5927797121e2ccf", "level": "none", "message": {"text": "Commented-code block (9 lines) in v2/src/game/DayHistory.ts:43"}, "properties": {"repobilityId": "fb99679e89a9424b", "scanner": "scanner-primary", "fingerprint": "a5927797121e2ccf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa87edbbc46b5d42", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/game/Pathfinding.ts:153"}, "properties": {"repobilityId": "85d628b8cf2b7f0a", "scanner": "scanner-primary", "fingerprint": "fa87edbbc46b5d42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36b212aeaac3268b", "level": "none", "message": {"text": "Commented-code block (9 lines) in v2/src/game/featureFlags.ts:71"}, "properties": {"repobilityId": "7f0f30c6cbb2c1c8", "scanner": "scanner-primary", "fingerprint": "36b212aeaac3268b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9faf2435ee7e55de", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/game/GraphicsQuality.ts:64"}, "properties": {"repobilityId": "8cd3411d29aee7ec", "scanner": "scanner-primary", "fingerprint": "9faf2435ee7e55de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d1d148ec877b6a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/scene/WeatherEffects.ts:62"}, "properties": {"repobilityId": "e780eb70bb75b372", "scanner": "scanner-primary", "fingerprint": "7d1d148ec877b6a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b036a6077699f08", "level": "none", "message": {"text": "Commented-code block (7 lines) in v2/src/scene/WorldScene.ts:237"}, "properties": {"repobilityId": "8ad7f436f9bd24a2", "scanner": "scanner-primary", "fingerprint": "0b036a6077699f08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d216e4d1823afe94", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/scene/interiorPieces.ts:37"}, "properties": {"repobilityId": "118c145b3cac5e3c", "scanner": "scanner-primary", "fingerprint": "d216e4d1823afe94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57a205f99c46e865", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/scene/IsoCamera.ts:67"}, "properties": {"repobilityId": "b7fdc4ae30e01f73", "scanner": "scanner-primary", "fingerprint": "57a205f99c46e865", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d0fed5f9afb1e35", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/scene/CharacterAnimator.ts:63"}, "properties": {"repobilityId": "17af7fed682fa6ea", "scanner": "scanner-primary", "fingerprint": "8d0fed5f9afb1e35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db51b882ed719605", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/scene/wallBuilder.ts:241"}, "properties": {"repobilityId": "a8fab92e2f24c320", "scanner": "scanner-primary", "fingerprint": "db51b882ed719605", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b45e6f1402a9962", "level": "none", "message": {"text": "Commented-code block (5 lines) in v2/src/systems/StaffSystem.ts:488"}, "properties": {"repobilityId": "bf7b9021e20755b1", "scanner": "scanner-primary", "fingerprint": "8b45e6f1402a9962", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ef89a9eacacc65a", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/systems/EconomySystem.ts:65"}, "properties": {"repobilityId": "b46eafda69bcb690", "scanner": "scanner-primary", "fingerprint": "4ef89a9eacacc65a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-055b2a94ac633d76", "level": "none", "message": {"text": "Commented-code block (6 lines) in v2/src/systems/CookingSystem.ts:387"}, "properties": {"repobilityId": "322d97876ae12310", "scanner": "scanner-primary", "fingerprint": "055b2a94ac633d76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e229cce5fc50577", "level": "none", "message": {"text": "Commented-code block (14 lines) in v2/src/systems/DishwareSystem.ts:205"}, "properties": {"repobilityId": "cd3dae3a742cd78c", "scanner": "scanner-primary", "fingerprint": "2e229cce5fc50577", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f88818a6fe5d63d2", "level": "note", "message": {"text": "Legacy-named symbol `draw_character_v2` in scripts/generate_atlases.py:2882"}, "properties": {"repobilityId": "e3d753d86ef7821f", "scanner": "scanner-primary", "fingerprint": "f88818a6fe5d63d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eeacd80e208a77ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate_atlases.py:984"}, "properties": {"repobilityId": "c62f15fb3e508346", "scanner": "scanner-primary", "fingerprint": "eeacd80e208a77ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1c7c8518b727975", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/scenes/GameScene.ts:5254"}, "properties": {"repobilityId": "d6e734c11f516220", "scanner": "scanner-primary", "fingerprint": "c1c7c8518b727975", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2eafc3188c36bb02", "level": "none", "message": {"text": "3 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "bd934ba112b02ffa", "scanner": "scanner-primary", "fingerprint": "2eafc3188c36bb02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-be46ea126aa5d8dc", "level": "note", "message": {"text": "Near-duplicate function bodies in 3 places"}, "properties": {"repobilityId": "a97f295ea4ba28fa", "scanner": "scanner-primary", "fingerprint": "be46ea126aa5d8dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "a5824d6f83cdd282", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "b79094d57220ca31", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "834168e7a1060771", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "a32af29ded28b16c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "116ca2866c8497cb", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "cf775d58f1edc740", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}