{"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-976c07d5a686eb26", "name": "Stray `console.log` in TS/JS \u2014 tests/setup.js:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/setup.js:251"}, "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-86f62a791bea3ebf", "name": "Stray `console.log` in TS/JS \u2014 tests/errorRecovery.test.js:452", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/errorRecovery.test.js:452"}, "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-ef145c628d8133a0", "name": "Stray `console.log` in TS/JS \u2014 tests/chessAI.test.js:713", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/chessAI.test.js:713"}, "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-88065fb6a24455f4", "name": "Stray `console.log` in TS/JS \u2014 tests/performanceTests.test.js:368", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/performanceTests.test.js:368"}, "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-886a58071958973a", "name": "Stray `console.log` in TS/JS \u2014 tests/chessGame.test.js:8110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/chessGame.test.js:8110"}, "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-8a85e53d09c274e5", "name": "Stray `console.log` in TS/JS \u2014 tests/castlingValidation.test.js:549", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/castlingValidation.test.js:549"}, "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-226488c65a03a0dd", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_game_lookup.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_game_lookup.js:10"}, "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-bda64adf70ae8a6c", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_game_state.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_game_state.js:17"}, "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-d2328ca9937098c7", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_getAllLegalMoves.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_getAllLegalMoves.js:8"}, "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-72b9d149e02666a2", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_strategies.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_strategies.js:24"}, "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-0de7fb06bba64ed9", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_evaluate_board.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_evaluate_board.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ae5bf8b950350b3", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_castling_serialization.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_castling_serialization.js:8"}, "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-705c69f703a3fc6c", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_chat_history.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_chat_history.js:15"}, "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-30be098ef6aef0c6", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games_full.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games_full.js:7"}, "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-4ccac90b6d645478", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validate_current_turn.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validate_current_turn.js:20"}, "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-29a45d0fa99281b4", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_valid_moves.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_valid_moves.js:8"}, "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-3b8ad404eee0fe4a", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_player_stats.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_player_stats.js:14"}, "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-0fa7d189a15803e7", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_board_state.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_board_state.js:15"}, "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-905de7220d9bdd29", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity.js:12"}, "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-5a553a7dba9ae054", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_memory_usage.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_memory_usage.js:19"}, "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-9cceb92340f47ca3", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move_optimization.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move_optimization.js:8"}, "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-952dce8dfdc2027a", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_event_handlers.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_event_handlers.js:38"}, "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-7d22e0decc8095b1", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_square_under_attack.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_square_under_attack.js:28"}, "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-c809b89e69d7a737", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_clone_game.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_clone_game.js:15"}, "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-037215dde44e4c74", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_blocking_square.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_blocking_square.js:71"}, "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-c9e283add1dee19d", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_state_snapshot.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_state_snapshot.js:19"}, "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-03c273ac7a2897dd", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats.js:8"}, "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-a35983b763b31495", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games.js:7"}, "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-f72c285bd408772c", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_find_games_by_player.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_find_games_by_player.js:24"}, "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-b38facb8103d40ec", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats_optimization.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats_optimization.js:36"}, "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-987cfd9357f4a33a", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_cleanup_inactive_games.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_cleanup_inactive_games.js:9"}, "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-914e6bfbab5a97e6", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_king_lookup.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_king_lookup.js:8"}, "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-b5c86b30cb55947d", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_legal_moves.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_legal_moves.js:8"}, "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-135e293b34cdc9a3", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity_optimized.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity_optimized.js:13"}, "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-fc39c0c27a4b366d", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/castling_benchmark.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/castling_benchmark.js:18"}, "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-36e42035f40e8b49", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_move_notation.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_move_notation.js:5"}, "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-f53866b53c141092", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move.js:4"}, "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-a0a81cce906a9d4c", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validation.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validation.js:5"}, "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-179883202cf32694", "name": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_legal_moves.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_legal_moves.js:8"}, "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-c2f812eada543b25", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/examples.js:284", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/examples.js:284"}, "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-9072e10ea96fa71f", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/performanceMonitor.js:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/performanceMonitor.js:145"}, "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-2d70fb5def8636c3", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/ResourceManager.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/ResourceManager.js:53"}, "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-b1eef07ca960ca4e", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/globalTeardown.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/globalTeardown.js:9"}, "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-7ddf8101720c5673", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/handleDetection.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/handleDetection.js:41"}, "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-80c7688880032153", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/testSetup.js:346", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/testSetup.js:346"}, "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-9b3d7d1464307dbe", "name": "Stray `console.log` in TS/JS \u2014 tests/utils/globalSetup.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/globalSetup.js:40"}, "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-0cad8efcb99d1d41", "name": "Stray `console.log` in TS/JS \u2014 scripts/pre-commit-coverage.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pre-commit-coverage.js:12"}, "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-7024954cc0f88b0b", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-infrastructure-validation.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-infrastructure-validation.js:24"}, "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-881e8ca76798d229", "name": "Stray `console.log` in TS/JS \u2014 scripts/coverage-validation.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/coverage-validation.js:25"}, "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-4c65211ad2475a74", "name": "Stray `console.log` in TS/JS \u2014 scripts/ci-validation.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ci-validation.js:26"}, "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-c461d43adda1b844", "name": "Stray `console.log` in TS/JS \u2014 scripts/coverage-monitor.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/coverage-monitor.js:20"}, "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-035e7b824346f103", "name": "Stray `console.log` in TS/JS \u2014 public/shared.bundle.js:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/shared.bundle.js:1"}, "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-60ff5091277be830", "name": "Stray `console.log` in TS/JS \u2014 public/script.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/script.js:39"}, "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-80b82d7204b6dd55", "name": "Stray `console.log` in TS/JS \u2014 src/shared/errorHandler.js:524", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/shared/errorHandler.js:524"}, "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-b7bb755252619969", "name": "Stray `console.log` in TS/JS \u2014 src/server/index.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/server/index.js:115"}, "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-d63da3583b14afc0", "name": "Dockerfile runs as root: Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0997df2a558002e", "name": "Docker base image is tag-pinned but not digest-pinned: node:22.19-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22.19-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "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-df9f8a0a833468bf", "name": "Insecure pattern 'node_child_process' in scripts/pre-commit-coverage.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/pre-commit-coverage.js:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-672eb88a0147ef5a", "name": "Insecure pattern 'node_child_process' in scripts/test-infrastructure-validation.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-infrastructure-validation.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fed1f4fec45c0712", "name": "Insecure pattern 'node_child_process' in scripts/ci-validation.js:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ci-validation.js:8"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c33e20c430f73d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/script.js:204", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/script.js:204"}, "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-50419e9f6026e600", "name": "Insecure pattern 'local_storage_auth_token' in public/script.js:38", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in public/script.js:38"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-9772460e6deae01c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-5684ea51c61781b0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-27931ee31963d9f0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-e3886466d1584cca", "name": "Very large file: tests/gameState.test.js (3119 lines)", "shortDescription": {"text": "Very large file: tests/gameState.test.js (3119 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-8efe132913f33772", "name": "Very large file: tests/chessGame.test.js (9097 lines)", "shortDescription": {"text": "Very large file: tests/chessGame.test.js (9097 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-c40e060aa71242b9", "name": "Very large file: public/script.js (1707 lines)", "shortDescription": {"text": "Very large file: public/script.js (1707 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-2219ead900c0f500", "name": "Very large file: src/shared/chessGame.js (3878 lines)", "shortDescription": {"text": "Very large file: src/shared/chessGame.js (3878 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 107 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5e64c3861eaf7d1", "name": "Legacy-named symbol `errorOnDeprecated` in jest.config.js:75", "shortDescription": {"text": "Legacy-named symbol `errorOnDeprecated` in jest.config.js:75"}, "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-c938f62b140e0eb8", "name": "Legacy-named symbol `errorOnDeprecated` in jest.ci.config.js:45", "shortDescription": {"text": "Legacy-named symbol `errorOnDeprecated` in jest.ci.config.js:45"}, "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-a43c5f0d1315a6ea", "name": "Commented-code block (7 lines) in tests/benchmarks/castling_benchmark.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/benchmarks/castling_benchmark.js: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-eeb31b4a18a4bede", "name": "Legacy-named symbol `_hasValidMovesLegacy` in public/shared.bundle.js:1", "shortDescription": {"text": "Legacy-named symbol `_hasValidMovesLegacy` in public/shared.bundle.js:1"}, "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-797b9b54d5a9e75f", "name": "Commented-code block (5 lines) in src/shared/evaluationConstants.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/shared/evaluationConstants.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7f548d7bea1309d0", "name": "Legacy-named symbol `_hasValidMovesLegacy` in src/shared/chessGame.js:2160", "shortDescription": {"text": "Legacy-named symbol `_hasValidMovesLegacy` in src/shared/chessGame.js:2160"}, "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-caa2169aebe48345", "name": "Commented-code block (5 lines) in src/shared/chessGame.js:865", "shortDescription": {"text": "Commented-code block (5 lines) in src/shared/chessGame.js:865"}, "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-8c236625afb6a8cb", "name": "Unused endpoint: GET /ready", "shortDescription": {"text": "Unused endpoint: GET /ready"}, "fullDescription": {"text": "`src/server/index.js` declares `GET /ready` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/server/index.js` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19201"}, "properties": {"repository": "segin/webchess", "repoUrl": "https://github.com/segin/webchess", "branch": "main"}, "results": [{"ruleId": "scanner-976c07d5a686eb26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/setup.js:251"}, "properties": {"repobilityId": "301e4c0184bf291d", "scanner": "scanner-primary", "fingerprint": "976c07d5a686eb26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86f62a791bea3ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/errorRecovery.test.js:452"}, "properties": {"repobilityId": "8f7b7bf744c6486a", "scanner": "scanner-primary", "fingerprint": "86f62a791bea3ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef145c628d8133a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/chessAI.test.js:713"}, "properties": {"repobilityId": "33e6e35e3596f211", "scanner": "scanner-primary", "fingerprint": "ef145c628d8133a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-88065fb6a24455f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/performanceTests.test.js:368"}, "properties": {"repobilityId": "183f782b9bc73c8b", "scanner": "scanner-primary", "fingerprint": "88065fb6a24455f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-886a58071958973a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/chessGame.test.js:8110"}, "properties": {"repobilityId": "b72a2d65320379f1", "scanner": "scanner-primary", "fingerprint": "886a58071958973a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a85e53d09c274e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/castlingValidation.test.js:549"}, "properties": {"repobilityId": "2c6ba1f481d8228d", "scanner": "scanner-primary", "fingerprint": "8a85e53d09c274e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-226488c65a03a0dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_game_lookup.js:10"}, "properties": {"repobilityId": "c15b9d5f875595f3", "scanner": "scanner-primary", "fingerprint": "226488c65a03a0dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bda64adf70ae8a6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_game_state.js:17"}, "properties": {"repobilityId": "99e038965cb12d34", "scanner": "scanner-primary", "fingerprint": "bda64adf70ae8a6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2328ca9937098c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_getAllLegalMoves.js:8"}, "properties": {"repobilityId": "7053b2873f8cc8f3", "scanner": "scanner-primary", "fingerprint": "d2328ca9937098c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72b9d149e02666a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_strategies.js:24"}, "properties": {"repobilityId": "29fb3df9e807e856", "scanner": "scanner-primary", "fingerprint": "72b9d149e02666a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0de7fb06bba64ed9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_evaluate_board.js:43"}, "properties": {"repobilityId": "8d6e152259c2e2e6", "scanner": "scanner-primary", "fingerprint": "0de7fb06bba64ed9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ae5bf8b950350b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_castling_serialization.js:8"}, "properties": {"repobilityId": "9ca67858319b934f", "scanner": "scanner-primary", "fingerprint": "8ae5bf8b950350b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-705c69f703a3fc6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_chat_history.js:15"}, "properties": {"repobilityId": "eac14739c108ddc1", "scanner": "scanner-primary", "fingerprint": "705c69f703a3fc6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30be098ef6aef0c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games_full.js:7"}, "properties": {"repobilityId": "34e507a0a99b6165", "scanner": "scanner-primary", "fingerprint": "30be098ef6aef0c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ccac90b6d645478", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validate_current_turn.js:20"}, "properties": {"repobilityId": "edf564eff64d0b3a", "scanner": "scanner-primary", "fingerprint": "4ccac90b6d645478", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29a45d0fa99281b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_valid_moves.js:8"}, "properties": {"repobilityId": "a1703b7bb9eb768d", "scanner": "scanner-primary", "fingerprint": "29a45d0fa99281b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b8ad404eee0fe4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_player_stats.js:14"}, "properties": {"repobilityId": "6f0667813f287b29", "scanner": "scanner-primary", "fingerprint": "3b8ad404eee0fe4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fa7d189a15803e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_board_state.js:15"}, "properties": {"repobilityId": "d2f3ed49979d310a", "scanner": "scanner-primary", "fingerprint": "0fa7d189a15803e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-905de7220d9bdd29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity.js:12"}, "properties": {"repobilityId": "bd958b9ea4b53241", "scanner": "scanner-primary", "fingerprint": "905de7220d9bdd29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a553a7dba9ae054", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_memory_usage.js:19"}, "properties": {"repobilityId": "85ebbdc7e2ba9b79", "scanner": "scanner-primary", "fingerprint": "5a553a7dba9ae054", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9cceb92340f47ca3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move_optimization.js:8"}, "properties": {"repobilityId": "ea26e97d38891e37", "scanner": "scanner-primary", "fingerprint": "9cceb92340f47ca3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-952dce8dfdc2027a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_event_handlers.js:38"}, "properties": {"repobilityId": "1679066f07cdfe2d", "scanner": "scanner-primary", "fingerprint": "952dce8dfdc2027a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d22e0decc8095b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_square_under_attack.js:28"}, "properties": {"repobilityId": "d149551d4400d17e", "scanner": "scanner-primary", "fingerprint": "7d22e0decc8095b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c809b89e69d7a737", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_clone_game.js:15"}, "properties": {"repobilityId": "b486342c2fd2aea4", "scanner": "scanner-primary", "fingerprint": "c809b89e69d7a737", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-037215dde44e4c74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_is_blocking_square.js:71"}, "properties": {"repobilityId": "9ef71b85ea2bb54b", "scanner": "scanner-primary", "fingerprint": "037215dde44e4c74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9e283add1dee19d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_state_snapshot.js:19"}, "properties": {"repobilityId": "f56d98208496b415", "scanner": "scanner-primary", "fingerprint": "c9e283add1dee19d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03c273ac7a2897dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats.js:8"}, "properties": {"repobilityId": "c8e0ffadba536ee9", "scanner": "scanner-primary", "fingerprint": "03c273ac7a2897dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a35983b763b31495", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_available_games.js:7"}, "properties": {"repobilityId": "47a183b92c4ba4f2", "scanner": "scanner-primary", "fingerprint": "a35983b763b31495", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f72c285bd408772c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_find_games_by_player.js:24"}, "properties": {"repobilityId": "7d49eb90ce259c67", "scanner": "scanner-primary", "fingerprint": "f72c285bd408772c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b38facb8103d40ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_server_stats_optimization.js:36"}, "properties": {"repobilityId": "56dc37b321e37e31", "scanner": "scanner-primary", "fingerprint": "b38facb8103d40ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-987cfd9357f4a33a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_cleanup_inactive_games.js:9"}, "properties": {"repobilityId": "b40ada1a96afff2b", "scanner": "scanner-primary", "fingerprint": "987cfd9357f4a33a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-914e6bfbab5a97e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_king_lookup.js:8"}, "properties": {"repobilityId": "46e18c6cd655916a", "scanner": "scanner-primary", "fingerprint": "914e6bfbab5a97e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5c86b30cb55947d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_legal_moves.js:8"}, "properties": {"repobilityId": "1a60463b19a040f6", "scanner": "scanner-primary", "fingerprint": "b5c86b30cb55947d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-135e293b34cdc9a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_analyze_complexity_optimized.js:13"}, "properties": {"repobilityId": "a874fa022531d166", "scanner": "scanner-primary", "fingerprint": "135e293b34cdc9a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc39c0c27a4b366d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/castling_benchmark.js:18"}, "properties": {"repobilityId": "58eea9808d90ff1a", "scanner": "scanner-primary", "fingerprint": "fc39c0c27a4b366d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36e42035f40e8b49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_move_notation.js:5"}, "properties": {"repobilityId": "439adba43ca370b0", "scanner": "scanner-primary", "fingerprint": "36e42035f40e8b49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f53866b53c141092", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_make_move.js:4"}, "properties": {"repobilityId": "3f0e42513d23b116", "scanner": "scanner-primary", "fingerprint": "f53866b53c141092", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a0a81cce906a9d4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_validation.js:5"}, "properties": {"repobilityId": "f7f39f50e3bbb71f", "scanner": "scanner-primary", "fingerprint": "a0a81cce906a9d4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-179883202cf32694", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/benchmarks/benchmark_get_all_legal_moves.js:8"}, "properties": {"repobilityId": "96b37f1defe8ee1b", "scanner": "scanner-primary", "fingerprint": "179883202cf32694", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2f812eada543b25", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/examples.js:284"}, "properties": {"repobilityId": "634b10a243cc7c72", "scanner": "scanner-primary", "fingerprint": "c2f812eada543b25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9072e10ea96fa71f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/performanceMonitor.js:145"}, "properties": {"repobilityId": "2fe8ec61bc4b0ee1", "scanner": "scanner-primary", "fingerprint": "9072e10ea96fa71f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d70fb5def8636c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/ResourceManager.js:53"}, "properties": {"repobilityId": "6a641ad8321dc969", "scanner": "scanner-primary", "fingerprint": "2d70fb5def8636c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1eef07ca960ca4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/globalTeardown.js:9"}, "properties": {"repobilityId": "a2f43052c070fc94", "scanner": "scanner-primary", "fingerprint": "b1eef07ca960ca4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ddf8101720c5673", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/handleDetection.js:41"}, "properties": {"repobilityId": "e91bc29bdfe25f68", "scanner": "scanner-primary", "fingerprint": "7ddf8101720c5673", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80c7688880032153", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/testSetup.js:346"}, "properties": {"repobilityId": "39a9af10a8d45e52", "scanner": "scanner-primary", "fingerprint": "80c7688880032153", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b3d7d1464307dbe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/utils/globalSetup.js:40"}, "properties": {"repobilityId": "7444c28e1f85da5d", "scanner": "scanner-primary", "fingerprint": "9b3d7d1464307dbe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cad8efcb99d1d41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pre-commit-coverage.js:12"}, "properties": {"repobilityId": "a6286ed59e83055f", "scanner": "scanner-primary", "fingerprint": "0cad8efcb99d1d41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7024954cc0f88b0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-infrastructure-validation.js:24"}, "properties": {"repobilityId": "b3391110710a724b", "scanner": "scanner-primary", "fingerprint": "7024954cc0f88b0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-881e8ca76798d229", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/coverage-validation.js:25"}, "properties": {"repobilityId": "26231e6cfc127701", "scanner": "scanner-primary", "fingerprint": "881e8ca76798d229", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c65211ad2475a74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ci-validation.js:26"}, "properties": {"repobilityId": "dac27ac3550ee316", "scanner": "scanner-primary", "fingerprint": "4c65211ad2475a74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c461d43adda1b844", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/coverage-monitor.js:20"}, "properties": {"repobilityId": "6b7dab9acc9f3110", "scanner": "scanner-primary", "fingerprint": "c461d43adda1b844", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-035e7b824346f103", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/shared.bundle.js:1"}, "properties": {"repobilityId": "e354adca45cdd07e", "scanner": "scanner-primary", "fingerprint": "035e7b824346f103", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60ff5091277be830", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/script.js:39"}, "properties": {"repobilityId": "5b607e6279e7a43a", "scanner": "scanner-primary", "fingerprint": "60ff5091277be830", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80b82d7204b6dd55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/shared/errorHandler.js:524"}, "properties": {"repobilityId": "140c5a9d674aef5a", "scanner": "scanner-primary", "fingerprint": "80b82d7204b6dd55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7bb755252619969", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/server/index.js:115"}, "properties": {"repobilityId": "ddca02083c7d6774", "scanner": "scanner-primary", "fingerprint": "b7bb755252619969", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d63da3583b14afc0", "level": "warning", "message": {"text": "Dockerfile runs as root: Dockerfile"}, "properties": {"repobilityId": "a2ed1bd120e507db", "scanner": "scanner-primary", "fingerprint": "d63da3583b14afc0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-c0997df2a558002e", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:22.19-alpine"}, "properties": {"repobilityId": "c038ecf808ba9dca", "scanner": "scanner-primary", "fingerprint": "c0997df2a558002e", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"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-df9f8a0a833468bf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/pre-commit-coverage.js:8"}, "properties": {"repobilityId": "0d767f5b679bf7e0", "scanner": "scanner-primary", "fingerprint": "df9f8a0a833468bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pre-commit-coverage.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-672eb88a0147ef5a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-infrastructure-validation.js:10"}, "properties": {"repobilityId": "79211ea85639eaa9", "scanner": "scanner-primary", "fingerprint": "672eb88a0147ef5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-infrastructure-validation.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-fed1f4fec45c0712", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ci-validation.js:8"}, "properties": {"repobilityId": "2d04192e58171a04", "scanner": "scanner-primary", "fingerprint": "fed1f4fec45c0712", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ci-validation.js"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-2c33e20c430f73d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/script.js:204"}, "properties": {"repobilityId": "4e3c0f496f453f0f", "scanner": "scanner-primary", "fingerprint": "2c33e20c430f73d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/script.js"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-50419e9f6026e600", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in public/script.js:38"}, "properties": {"repobilityId": "1c09f1500ace6a0e", "scanner": "scanner-primary", "fingerprint": "50419e9f6026e600", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/script.js"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4effa0820a061a14", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 68}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dca2b9a9fbfb28", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3f1e0f12ba624a4d", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb1a23126ead31cb", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-9772460e6deae01c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "388fc0286fc1bb21", "scanner": "scanner-primary", "fingerprint": "9772460e6deae01c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-9772460e6deae01c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ef19ee07f9dbbbde", "scanner": "scanner-primary", "fingerprint": "9772460e6deae01c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-9772460e6deae01c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a034403484fcf13", "scanner": "scanner-primary", "fingerprint": "9772460e6deae01c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b28f2eb9ce3eea56", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f0c3d4499b6cd885", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "04f6c832d67a7838", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "242206db1caa02bb", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f410469668d834b", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "325eb799a895e23c", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9a38b98594265645", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 135}}}]}, {"ruleId": "scanner-5684ea51c61781b0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "60894711b6d730ab", "scanner": "scanner-primary", "fingerprint": "5684ea51c61781b0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-validation.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-5684ea51c61781b0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6aee81a858044d23", "scanner": "scanner-primary", "fingerprint": "5684ea51c61781b0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-validation.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-5684ea51c61781b0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23f62fb16474852f", "scanner": "scanner-primary", "fingerprint": "5684ea51c61781b0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-validation.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f399189650e0f27", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b8707bf7c845b4f8", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f399189650e0f27", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb554af21be9a78b", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "feb548226db10f53", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f399189650e0f27", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-27931ee31963d9f0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb554af21be9a78b", "scanner": "scanner-primary", "fingerprint": "27931ee31963d9f0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/health-check.yml"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-e3886466d1584cca", "level": "note", "message": {"text": "Very large file: tests/gameState.test.js (3119 lines)"}, "properties": {"repobilityId": "d9c0b38e6255fc2c", "scanner": "scanner-primary", "fingerprint": "e3886466d1584cca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8efe132913f33772", "level": "note", "message": {"text": "Very large file: tests/chessGame.test.js (9097 lines)"}, "properties": {"repobilityId": "c76ab6b357453419", "scanner": "scanner-primary", "fingerprint": "8efe132913f33772", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c40e060aa71242b9", "level": "note", "message": {"text": "Very large file: public/script.js (1707 lines)"}, "properties": {"repobilityId": "1991fa419308e1e4", "scanner": "scanner-primary", "fingerprint": "c40e060aa71242b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2219ead900c0f500", "level": "note", "message": {"text": "Very large file: src/shared/chessGame.js (3878 lines)"}, "properties": {"repobilityId": "61da9259344345f3", "scanner": "scanner-primary", "fingerprint": "2219ead900c0f500", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "5faa57072bee8fd8", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "6ac197b3bb7e9cfa", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "626272c350a8c4df", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "434589032efcfeea", "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": "2709ac75758bc1c8", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-b5e64c3861eaf7d1", "level": "note", "message": {"text": "Legacy-named symbol `errorOnDeprecated` in jest.config.js:75"}, "properties": {"repobilityId": "7f3f4bcdd3bfb439", "scanner": "scanner-primary", "fingerprint": "b5e64c3861eaf7d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c938f62b140e0eb8", "level": "note", "message": {"text": "Legacy-named symbol `errorOnDeprecated` in jest.ci.config.js:45"}, "properties": {"repobilityId": "dc2e8cbd1e6222bb", "scanner": "scanner-primary", "fingerprint": "c938f62b140e0eb8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a43c5f0d1315a6ea", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/benchmarks/castling_benchmark.js:4"}, "properties": {"repobilityId": "d24b11d7a19b9a59", "scanner": "scanner-primary", "fingerprint": "a43c5f0d1315a6ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eeb31b4a18a4bede", "level": "note", "message": {"text": "Legacy-named symbol `_hasValidMovesLegacy` in public/shared.bundle.js:1"}, "properties": {"repobilityId": "24858650076a2756", "scanner": "scanner-primary", "fingerprint": "eeb31b4a18a4bede", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-797b9b54d5a9e75f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/shared/evaluationConstants.js:11"}, "properties": {"repobilityId": "5ac5dcea96776dc4", "scanner": "scanner-primary", "fingerprint": "797b9b54d5a9e75f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7f548d7bea1309d0", "level": "note", "message": {"text": "Legacy-named symbol `_hasValidMovesLegacy` in src/shared/chessGame.js:2160"}, "properties": {"repobilityId": "400ea735cead8023", "scanner": "scanner-primary", "fingerprint": "7f548d7bea1309d0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-caa2169aebe48345", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/shared/chessGame.js:865"}, "properties": {"repobilityId": "cdffc1311077db7b", "scanner": "scanner-primary", "fingerprint": "caa2169aebe48345", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c236625afb6a8cb", "level": "note", "message": {"text": "Unused endpoint: GET /ready"}, "properties": {"repobilityId": "cd866d09e4b45e9e", "scanner": "scanner-primary", "fingerprint": "8c236625afb6a8cb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "e823d711bc318ff2", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}