{"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-09087dce4aa9b680", "name": "Stray `console.log` in TS/JS \u2014 functions/test_comprehension_branch.js:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 functions/test_comprehension_branch.js:156"}, "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-4042ae97ddd98897", "name": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions_batch.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions_batch.js:85"}, "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-faa7a76c87ee4b49", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_mathquest_explanations.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_mathquest_explanations.js:31"}, "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-7579bf8a9f17e457", "name": "Stray `console.log` in TS/JS \u2014 tool/promote_writing_prompts_live.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/promote_writing_prompts_live.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-d1abb71df8de51ba", "name": "Stray `console.log` in TS/JS \u2014 tool/backfill_reading_level.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_reading_level.js:30"}, "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-7a0c8e75b55d4310", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_buccoo_question.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_buccoo_question.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-4d489eed5c03fb7d", "name": "Stray `console.log` in TS/JS \u2014 tool/migrate_avatar_names_unique.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_avatar_names_unique.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-e11aaf0407045b7a", "name": "Stray `console.log` in TS/JS \u2014 tool/download_asset.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/download_asset.js:22"}, "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-cfd31ffd25539d3d", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_tap_diagram_questions.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_tap_diagram_questions.js:133"}, "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-030a4ea125f767b6", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_data_handling_questions.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_data_handling_questions.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-170b6e0a15069904", "name": "Stray `console.log` in TS/JS \u2014 tool/list_students.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/list_students.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-18d50b7d61882395", "name": "Stray `console.log` in TS/JS \u2014 tool/promote.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/promote.js:82"}, "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-33ad9fb693b4997f", "name": "Stray `console.log` in TS/JS \u2014 tool/find_child.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/find_child.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-17289bcef138793d", "name": "Stray `console.log` in TS/JS \u2014 tool/check_data_handling_context.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_data_handling_context.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-6984b7ee66565796", "name": "Stray `console.log` in TS/JS \u2014 tool/check_question_answers.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_question_answers.js:78"}, "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-b9ca78bd7f379b17", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_punctuation_questions.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_punctuation_questions.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-c0497788411c6b7e", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_family.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_family.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-d8a352f1b4e9b6f7", "name": "Stray `console.log` in TS/JS \u2014 tool/batch_generate.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/batch_generate.js:82"}, "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-5e7f7ad391d759da", "name": "Stray `console.log` in TS/JS \u2014 tool/check_legacy_shapes.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_legacy_shapes.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-6a2b61c80a4c991a", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_question.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_question.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-648438101500c4a3", "name": "Stray `console.log` in TS/JS \u2014 tool/parse_sea_framework.js:336", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/parse_sea_framework.js:336"}, "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-68aae59e61fb8b37", "name": "Stray `console.log` in TS/JS \u2014 tool/check_criterion_coverage.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_criterion_coverage.js:33"}, "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-17239126aea732b4", "name": "Stray `console.log` in TS/JS \u2014 tool/check_student_query.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_student_query.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-d5bf0624925cb3db", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_reference_lists.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_reference_lists.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-eca02dac71fad2f2", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_broken_question.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_broken_question.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-b5bb75e757e91f83", "name": "Stray `console.log` in TS/JS \u2014 tool/list_text_topic_contexts.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/list_text_topic_contexts.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-18ccd92d388a0fc1", "name": "Stray `console.log` in TS/JS \u2014 tool/expand_std1_math_topics.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/expand_std1_math_topics.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-43d75a6e7e313b1f", "name": "Stray `console.log` in TS/JS \u2014 tool/test_short_answer_match.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_short_answer_match.js:67"}, "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-43bcb577764279d3", "name": "Stray `console.log` in TS/JS \u2014 tool/test_comprehension_extract.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_comprehension_extract.js:48"}, "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-0fc4dc20bd22bec8", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_mcq.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_mcq.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-d07b092313a55207", "name": "Stray `console.log` in TS/JS \u2014 tool/backfill_boss_bonuses.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_boss_bonuses.js:98"}, "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-5a68c2b02b37fbb2", "name": "Stray `console.log` in TS/JS \u2014 tool/fix_framework_debris.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_framework_debris.js:32"}, "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-ae2b049e4b244496", "name": "Stray `console.log` in TS/JS \u2014 tool/smoke_test_short_answer.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/smoke_test_short_answer.js:52"}, "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-36e924e30bb6daf3", "name": "Stray `console.log` in TS/JS \u2014 tool/regenerate_infant_math_quests.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/regenerate_infant_math_quests.js:98"}, "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-5ae9a2ac848f70b3", "name": "Stray `console.log` in TS/JS \u2014 tool/generate_questions_from_scans.js:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/generate_questions_from_scans.js:316"}, "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-37f75877a1471b30", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_question_tiers.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_question_tiers.js:30"}, "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-23ae39cb3a898438", "name": "Stray `console.log` in TS/JS \u2014 tool/revert_broken_answers_to_submitted.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/revert_broken_answers_to_submitted.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-5b885e15bc85247a", "name": "Stray `console.log` in TS/JS \u2014 tool/fix_broken_correct_answers.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_broken_correct_answers.js:68"}, "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-c5c8ee844a544cfc", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_form_conversion_typed.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_form_conversion_typed.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-98c847d7d584d01a", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_demo_accounts.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_demo_accounts.js:95"}, "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-09ce9382341308a9", "name": "Stray `console.log` in TS/JS \u2014 tool/backfill_missed_xp.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_missed_xp.js:121"}, "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-26c6227b595b4a40", "name": "Stray `console.log` in TS/JS \u2014 tool/test_shuffle_math_choices.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_shuffle_math_choices.js:21"}, "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-7ede37fbf6f7bae7", "name": "Stray `console.log` in TS/JS \u2014 tool/parse_curriculum_guides.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/parse_curriculum_guides.js:97"}, "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-2d538b5ecaa2cc4a", "name": "Stray `console.log` in TS/JS \u2014 tool/ls_list_ids.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/ls_list_ids.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-6b91dac507f73a2c", "name": "Stray `console.log` in TS/JS \u2014 tool/flag_spelling_no_error.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/flag_spelling_no_error.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-776950d3139509af", "name": "Stray `console.log` in TS/JS \u2014 tool/generate_brand_assets.js:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/generate_brand_assets.js:219"}, "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-4da33d03d0e75351", "name": "Stray `console.log` in TS/JS \u2014 tool/backfill_writing_prompt_grades.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_writing_prompt_grades.js:75"}, "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-f8c9973ebe0a2f4f", "name": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions.js:83"}, "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-a2f2f001de43b96e", "name": "Stray `console.log` in TS/JS \u2014 tool/toggle_prefix_suffix_visibility.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/toggle_prefix_suffix_visibility.js:44"}, "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-b3854a1bd4d97afb", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_math_quests.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_math_quests.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-07102572e8377eb0", "name": "Stray `console.log` in TS/JS \u2014 tool/check_aaliyah_timestamps.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_aaliyah_timestamps.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-b69954293c8a82a1", "name": "Stray `console.log` in TS/JS \u2014 tool/approve_paper_scans.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/approve_paper_scans.js:47"}, "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-f8dc781a6c41d426", "name": "Stray `console.log` in TS/JS \u2014 tool/fix_cosmic_chocolate_live.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_cosmic_chocolate_live.js:62"}, "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-b08f576ab8768ee9", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_reference_lists.js:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_reference_lists.js:160"}, "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-7a281e610c016fcf", "name": "Stray `console.log` in TS/JS \u2014 tool/capture_intended_types.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/capture_intended_types.js:68"}, "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-619914a4c3025f30", "name": "Stray `console.log` in TS/JS \u2014 tool/smoke_tap_diagram_trigger.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/smoke_tap_diagram_trigger.js:47"}, "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-1d7bd712961dbc86", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_zara_variants.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_zara_variants.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-4dc277650f720af5", "name": "Stray `console.log` in TS/JS \u2014 tool/convert_mcq_to_short_answer.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/convert_mcq_to_short_answer.js:109"}, "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-9eb7f3d01e6c9929", "name": "Stray `console.log` in TS/JS \u2014 tool/full_batch_summary.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/full_batch_summary.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-78f480fead8b5327", "name": "Stray `console.log` in TS/JS \u2014 tool/migrate_math_quests_to_variants.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_math_quests_to_variants.js:51"}, "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-fa218155f04f50dd", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_word_study_topics.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_word_study_topics.js:48"}, "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-029a0d1a3172bebc", "name": "Stray `console.log` in TS/JS \u2014 tool/export_one_quest.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/export_one_quest.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-e25ecbd8cfe0429c", "name": "Stray `console.log` in TS/JS \u2014 tool/migrate_wc_leaderboard_anon.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_wc_leaderboard_anon.js:29"}, "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-62d30c3d601b9ca1", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_spelling.js:769", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_spelling.js:769"}, "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-80bad8096ec0ba4e", "name": "Stray `console.log` in TS/JS \u2014 tool/inspect_children_docs.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_children_docs.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-245829a1e21be863", "name": "Stray `console.log` in TS/JS \u2014 tool/export_math_questions.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/export_math_questions.js:66"}, "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-16407586f176625e", "name": "Stray `console.log` in TS/JS \u2014 tool/fix_math_groups_bcd.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_math_groups_bcd.js:87"}, "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-ee0a4384d6931468", "name": "Stray `console.log` in TS/JS \u2014 tool/update_data_handling_context.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/update_data_handling_context.js:32"}, "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-a45a0a27bc72065f", "name": "Stray `console.log` in TS/JS \u2014 tool/cleanup_premium_leak.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/cleanup_premium_leak.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-016d2a240e897133", "name": "Stray `console.log` in TS/JS \u2014 tool/seed.js:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed.js:215"}, "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-f94088ffc7fe5960", "name": "Stray `console.log` in TS/JS \u2014 tool/flag_math_duplicate_choices.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/flag_math_duplicate_choices.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-39b982d9f657424d", "name": "Stray `console.log` in TS/JS \u2014 tool/check_reference_list_bindings.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_reference_list_bindings.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-b2822596319c9036", "name": "Stray `console.log` in TS/JS \u2014 tool/peek_iron_kai.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_iron_kai.js:11"}, "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-a12e6ddaea33749a", "name": "Stray `console.log` in TS/JS \u2014 tool/build_facebook_assets.js:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/build_facebook_assets.js:240"}, "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-ddee26f638667d86", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_spelling_no_error.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_spelling_no_error.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-abdf3eb12836d468", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_wordstudy.js:942", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_wordstudy.js:942"}, "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-3c65358963409135", "name": "Stray `console.log` in TS/JS \u2014 tool/scan_mathquest_defects.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_mathquest_defects.js:22"}, "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-35b27ae60a2f4f92", "name": "Stray `console.log` in TS/JS \u2014 tool/test_tap_diagram_score.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_tap_diagram_score.js:67"}, "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-19e40946a985d047", "name": "Stray `console.log` in TS/JS \u2014 tool/build_worldcup_assets.js:606", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/build_worldcup_assets.js:606"}, "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-37710ba5d4337f9c", "name": "Stray `console.log` in TS/JS \u2014 tool/cleanup_demo_school.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/cleanup_demo_school.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-5d3ff641f82f127c", "name": "Stray `console.log` in TS/JS \u2014 tool/archive_broken_punctuation.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/archive_broken_punctuation.js:75"}, "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-1249410fece59229", "name": "Stray `console.log` in TS/JS \u2014 tool/analyze_mathquest_answer_bias.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/analyze_mathquest_answer_bias.js:44"}, "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-a113e1dda3d537d2", "name": "Stray `console.log` in TS/JS \u2014 tool/fix_math_wrong_keys.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_math_wrong_keys.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-72bc835fd9ab6e70", "name": "Stray `console.log` in TS/JS \u2014 tool/batch_review.js:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/batch_review.js:155"}, "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-5bdef42ca66fd5fc", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_premium_leak.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_premium_leak.js:30"}, "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-0ceefb7b988d07f5", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_punctuation_questions.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_punctuation_questions.js:114"}, "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-74f15bdb791a643f", "name": "Stray `console.log` in TS/JS \u2014 tool/check_smoke_tester_family.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_smoke_tester_family.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-7d31126aac592f54", "name": "Stray `console.log` in TS/JS \u2014 tool/audit_math_questions.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_math_questions.js:68"}, "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-52d5e826c7fe113d", "name": "Stray `console.log` in TS/JS \u2014 tool/upload_brand_assets.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/upload_brand_assets.js:92"}, "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-eb6457565a9d2a0b", "name": "Stray `console.log` in TS/JS \u2014 tool/summarize_batch.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/summarize_batch.js:111"}, "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-0cd6b1c58ba5de84", "name": "Stray `console.log` in TS/JS \u2014 tool/seed_world_cup.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_world_cup.js:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-59a93bcbc035e0ca", "name": "Runtime dotenv file present in repo: functions/.env", "shortDescription": {"text": "Runtime dotenv file present in repo: functions/.env"}, "fullDescription": {"text": "`functions/.env` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-27124ca56a522ed1", "name": "Possible secret in tool/batch_generate.js", "shortDescription": {"text": "Possible secret in tool/batch_generate.js"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b1a541ade2ae67fb", "name": "Possible secret in tool/regenerate_infant_math_quests.js", "shortDescription": {"text": "Possible secret in tool/regenerate_infant_math_quests.js"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b7ad500cbf7a6fce", "name": "Possible secret in tool/seed_demo_accounts.js", "shortDescription": {"text": "Possible secret in tool/seed_demo_accounts.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-6b50a82347f27354", "name": "Insecure pattern 'node_child_process' in tool/build_facebook_assets.js:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tool/build_facebook_assets.js:16"}, "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-8c5b08860d631362", "name": "Insecure pattern 'node_child_process' in tool/build_worldcup_assets.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tool/build_worldcup_assets.js:18"}, "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-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f5b6a5e65c6b80a", "name": "Very large file: functions/index.js (7430 lines)", "shortDescription": {"text": "Very large file: functions/index.js (7430 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "9 test file(s) for 107 source file(s) (ratio 0.08). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 638 console/debugger/print-style debug statements in non-test source. This is a common fast-generation residue before production cleanup."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b2a6250083a784", "name": "Placeholder or mock-heavy implementation detected", "shortDescription": {"text": "Placeholder or mock-heavy implementation detected"}, "fullDescription": {"text": "Found 26 placeholder/mock markers across 7 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ba120907e475789", "name": "Commented-code block (5 lines) in functions/reading_level.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in functions/reading_level.js:19"}, "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-2325df3212fe4cdd", "name": "Commented-code block (6 lines) in functions/question_type_handlers.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in functions/question_type_handlers.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f0bab83632d686a4", "name": "Commented-code block (6 lines) in functions/topic_context_defaults.js:8", "shortDescription": {"text": "Commented-code block (6 lines) in functions/topic_context_defaults.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8dfb7b65ee89c05a", "name": "Commented-code block (8 lines) in functions/question_types.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in functions/question_types.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-44ec59e7e8eb174c", "name": "Commented-code block (7 lines) in functions/index.js:3", "shortDescription": {"text": "Commented-code block (7 lines) in functions/index.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a077f9be202ed18", "name": "`fetch()` without try/.catch or AbortSignal \u2014 functions/index.js:1493", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/index.js:1493"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-54d685c4a40ba983", "name": "Commented-code block (8 lines) in functions/facebook_bot.js:5", "shortDescription": {"text": "Commented-code block (8 lines) in functions/facebook_bot.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce9381db4a62a065", "name": "Commented-code block (10 lines) in functions/curriculum_data/index.js:10", "shortDescription": {"text": "Commented-code block (10 lines) in functions/curriculum_data/index.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee84d67e2db5b446", "name": "Commented-code block (5 lines) in tool/scan_paper_questions_batch.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/scan_paper_questions_batch.js:2"}, "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-7092b9240a48f61c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions_batch.js:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions_batch.js:171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4474e62237d5a23e", "name": "Commented-code block (5 lines) in tool/reference_data_homophones.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/reference_data_homophones.js:2"}, "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-024ee6347a89468b", "name": "Commented-code block (6 lines) in tool/promote_writing_prompts_live.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in tool/promote_writing_prompts_live.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-7470d9986368f239", "name": "Commented-code block (7 lines) in tool/backfill_reading_level.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in tool/backfill_reading_level.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-199e4d01d2284b8d", "name": "Commented-code block (5 lines) in tool/migrate_avatar_names_unique.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tool/migrate_avatar_names_unique.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-53004884800450d5", "name": "Commented-code block (5 lines) in tool/seed_tap_diagram_questions.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/seed_tap_diagram_questions.js:2"}, "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-3d663d3a09d11973", "name": "Commented-code block (5 lines) in tool/reference_data_spelling.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/reference_data_spelling.js:2"}, "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-f144d8188b5527db", "name": "Commented-code block (5 lines) in tool/brand_assets_manifest.js:26", "shortDescription": {"text": "Commented-code block (5 lines) in tool/brand_assets_manifest.js:26"}, "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-d65fe8b27ad57fbc", "name": "Commented-code block (6 lines) in tool/check_question_answers.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in tool/check_question_answers.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b02fa0f529f399f8", "name": "Commented-code block (5 lines) in tool/batch_generate.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tool/batch_generate.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-4c949b1a47d9f108", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/batch_generate.js:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/batch_generate.js:136"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cf32bb3ac7f5d434", "name": "Legacy-named symbol `spellsLegacy` in tool/check_legacy_shapes.js:57", "shortDescription": {"text": "Legacy-named symbol `spellsLegacy` in tool/check_legacy_shapes.js:57"}, "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-7ab83b32588c53c1", "name": "Commented-code block (7 lines) in tool/parse_sea_framework.js:10", "shortDescription": {"text": "Commented-code block (7 lines) in tool/parse_sea_framework.js:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a97df6b26610a596", "name": "Commented-code block (10 lines) in tool/extract_epub_text.js:1", "shortDescription": {"text": "Commented-code block (10 lines) in tool/extract_epub_text.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-46ecc8c12aff6416", "name": "Commented-code block (7 lines) in tool/expand_std1_math_topics.js:2", "shortDescription": {"text": "Commented-code block (7 lines) in tool/expand_std1_math_topics.js:2"}, "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-fb9329311f0cd197", "name": "Commented-code block (12 lines) in tool/test_comprehension_extract.js:5", "shortDescription": {"text": "Commented-code block (12 lines) in tool/test_comprehension_extract.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1655cb284a2fbc1", "name": "Commented-code block (5 lines) in tool/backfill_boss_bonuses.js:7", "shortDescription": {"text": "Commented-code block (5 lines) in tool/backfill_boss_bonuses.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ee31ee33d4dd1324", "name": "Commented-code block (5 lines) in tool/fix_framework_debris.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/fix_framework_debris.js:2"}, "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-17b6bfac382d8bfe", "name": "Commented-code block (5 lines) in tool/smoke_test_short_answer.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/smoke_test_short_answer.js:2"}, "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-c1ea6046901f5d25", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/regenerate_infant_math_quests.js:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/regenerate_infant_math_quests.js:53"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-807448027f9a7916", "name": "Commented-code block (8 lines) in tool/generate_questions_from_scans.js:2", "shortDescription": {"text": "Commented-code block (8 lines) in tool/generate_questions_from_scans.js:2"}, "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-74ae296474a3dbcc", "name": "Commented-code block (7 lines) in tool/audit_question_tiers.js:2", "shortDescription": {"text": "Commented-code block (7 lines) in tool/audit_question_tiers.js:2"}, "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-b714810bfa24a400", "name": "Commented-code block (5 lines) in tool/reference_data_suffixes.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/reference_data_suffixes.js:2"}, "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-f845fa6c5499cfbd", "name": "Commented-code block (5 lines) in tool/fix_broken_correct_answers.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in tool/fix_broken_correct_answers.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d09af1090030d2ff", "name": "Commented-code block (6 lines) in tool/audit_form_conversion_typed.js:2", "shortDescription": {"text": "Commented-code block (6 lines) in tool/audit_form_conversion_typed.js:2"}, "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-8a57df6c9afaa635", "name": "Commented-code block (5 lines) in tool/reference_data_prefixes.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/reference_data_prefixes.js:2"}, "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-0dcaea5dc796df10", "name": "Commented-code block (8 lines) in tool/seed_demo_accounts.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in tool/seed_demo_accounts.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb5a8404e378ddb5", "name": "Commented-code block (5 lines) in tool/backfill_missed_xp.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/backfill_missed_xp.js:2"}, "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-ae5fcd48d347fd5a", "name": "Commented-code block (8 lines) in tool/parse_curriculum_guides.js:8", "shortDescription": {"text": "Commented-code block (8 lines) in tool/parse_curriculum_guides.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ada6b39ec82f96d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/ls_list_ids.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/ls_list_ids.js:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35071d174a551319", "name": "Commented-code block (6 lines) in tool/generate_brand_assets.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in tool/generate_brand_assets.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c005e253e8981b40", "name": "Commented-code block (10 lines) in tool/backfill_writing_prompt_grades.js:2", "shortDescription": {"text": "Commented-code block (10 lines) in tool/backfill_writing_prompt_grades.js:2"}, "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-247bd5f2032fed8a", "name": "Commented-code block (5 lines) in tool/scan_paper_questions.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/scan_paper_questions.js:2"}, "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-4b7d170234f0d2ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions.js:56", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions.js:56"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2508890a893ffddc", "name": "Commented-code block (6 lines) in tool/toggle_prefix_suffix_visibility.js:9", "shortDescription": {"text": "Commented-code block (6 lines) in tool/toggle_prefix_suffix_visibility.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90a7794b6018cb4f", "name": "Commented-code block (5 lines) in tool/seed_reference_lists.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/seed_reference_lists.js:2"}, "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-b0f7512917b26e45", "name": "Commented-code block (5 lines) in tool/capture_intended_types.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/capture_intended_types.js:2"}, "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-345805aaccd4c0fa", "name": "Commented-code block (5 lines) in tool/smoke_tap_diagram_trigger.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/smoke_tap_diagram_trigger.js:2"}, "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-fc67ea3c984d5f4c", "name": "Commented-code block (6 lines) in tool/convert_mcq_to_short_answer.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in tool/convert_mcq_to_short_answer.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a245122e96fb417d", "name": "Commented-code block (5 lines) in tool/migrate_math_quests_to_variants.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in tool/migrate_math_quests_to_variants.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f59c77c8ee4a1930", "name": "Commented-code block (6 lines) in tool/seed_word_study_topics.js:2", "shortDescription": {"text": "Commented-code block (6 lines) in tool/seed_word_study_topics.js:2"}, "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-172db7d56469d943", "name": "Legacy-named symbol `hasLegacy` in tool/migrate_wc_leaderboard_anon.js:34", "shortDescription": {"text": "Legacy-named symbol `hasLegacy` in tool/migrate_wc_leaderboard_anon.js:34"}, "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-ea08d7ba15ae25a4", "name": "Commented-code block (8 lines) in tool/migrate_wc_leaderboard_anon.js:4", "shortDescription": {"text": "Commented-code block (8 lines) in tool/migrate_wc_leaderboard_anon.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-f999c34fcb1440cf", "name": "Commented-code block (7 lines) in tool/seed_std3_spelling.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in tool/seed_std3_spelling.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32e0e533fa76bc37", "name": "Commented-code block (5 lines) in tool/update_data_handling_context.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in tool/update_data_handling_context.js:2"}, "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-0839b97d74a0dc98", "name": "Commented-code block (5 lines) in tool/cleanup_premium_leak.js:6", "shortDescription": {"text": "Commented-code block (5 lines) in tool/cleanup_premium_leak.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d91d856705668e1", "name": "Commented-code block (7 lines) in tool/seed.js:11", "shortDescription": {"text": "Commented-code block (7 lines) in tool/seed.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-49caa24741aff1ac", "name": "Commented-code block (6 lines) in tool/seed_std3_wordstudy.js:2", "shortDescription": {"text": "Commented-code block (6 lines) in tool/seed_std3_wordstudy.js:2"}, "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-0547aebb68fdd093", "name": "Commented-code block (10 lines) in tool/scan_mathquest_defects.js:2", "shortDescription": {"text": "Commented-code block (10 lines) in tool/scan_mathquest_defects.js:2"}, "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-424fef2f76cdd09e", "name": "Commented-code block (6 lines) in tool/build_worldcup_assets.js:52", "shortDescription": {"text": "Commented-code block (6 lines) in tool/build_worldcup_assets.js:52"}, "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-37691e0229ed68c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tool/build_worldcup_assets.js:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/build_worldcup_assets.js:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bad55d7536642579", "name": "Commented-code block (5 lines) in tool/audit_premium_leak.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in tool/audit_premium_leak.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ea013dced623a04", "name": "Commented-code block (21 lines) in tool/audit_punctuation_questions.js:9", "shortDescription": {"text": "Commented-code block (21 lines) in tool/audit_punctuation_questions.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ebbceb01a80221b", "name": "Commented-code block (9 lines) in tool/audit_math_questions.js:5", "shortDescription": {"text": "Commented-code block (9 lines) in tool/audit_math_questions.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be505432e4f9604c", "name": "Commented-code block (6 lines) in tool/lib/paper_scan_core.js:2", "shortDescription": {"text": "Commented-code block (6 lines) in tool/lib/paper_scan_core.js:2"}, "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-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ntool/build_paper_catalog.py:render_pages, tool/build_reference_catalog.py:render_pages\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19709"}, "properties": {"repository": "sinakult/sea-chest2", "repoUrl": "https://github.com/sinakult/sea-chest2", "branch": "main"}, "results": [{"ruleId": "scanner-09087dce4aa9b680", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 functions/test_comprehension_branch.js:156"}, "properties": {"repobilityId": "97afafbcbeefe213", "scanner": "scanner-primary", "fingerprint": "09087dce4aa9b680", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4042ae97ddd98897", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions_batch.js:85"}, "properties": {"repobilityId": "120df1cdd0d9ed6a", "scanner": "scanner-primary", "fingerprint": "4042ae97ddd98897", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-faa7a76c87ee4b49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_mathquest_explanations.js:31"}, "properties": {"repobilityId": "0ca54c73fc323f39", "scanner": "scanner-primary", "fingerprint": "faa7a76c87ee4b49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7579bf8a9f17e457", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/promote_writing_prompts_live.js:26"}, "properties": {"repobilityId": "5250eb38714c927a", "scanner": "scanner-primary", "fingerprint": "7579bf8a9f17e457", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1abb71df8de51ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_reading_level.js:30"}, "properties": {"repobilityId": "89ad114baa7da1bf", "scanner": "scanner-primary", "fingerprint": "d1abb71df8de51ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a0c8e75b55d4310", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_buccoo_question.js:20"}, "properties": {"repobilityId": "24d3db8c7e0158fa", "scanner": "scanner-primary", "fingerprint": "7a0c8e75b55d4310", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d489eed5c03fb7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_avatar_names_unique.js:28"}, "properties": {"repobilityId": "7caa8454b7dc4026", "scanner": "scanner-primary", "fingerprint": "4d489eed5c03fb7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e11aaf0407045b7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/download_asset.js:22"}, "properties": {"repobilityId": "a0e5cb4aa7cf828a", "scanner": "scanner-primary", "fingerprint": "e11aaf0407045b7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfd31ffd25539d3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_tap_diagram_questions.js:133"}, "properties": {"repobilityId": "659214e516b6cfbb", "scanner": "scanner-primary", "fingerprint": "cfd31ffd25539d3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-030a4ea125f767b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_data_handling_questions.js:43"}, "properties": {"repobilityId": "c86a75f427139382", "scanner": "scanner-primary", "fingerprint": "030a4ea125f767b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-170b6e0a15069904", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/list_students.js:12"}, "properties": {"repobilityId": "7a1d7a36a182fec4", "scanner": "scanner-primary", "fingerprint": "170b6e0a15069904", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18d50b7d61882395", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/promote.js:82"}, "properties": {"repobilityId": "8ecbba6287115ce9", "scanner": "scanner-primary", "fingerprint": "18d50b7d61882395", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33ad9fb693b4997f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/find_child.js:15"}, "properties": {"repobilityId": "60b3b89c96adca5d", "scanner": "scanner-primary", "fingerprint": "33ad9fb693b4997f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17289bcef138793d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_data_handling_context.js:12"}, "properties": {"repobilityId": "c73e2039dfa0a73e", "scanner": "scanner-primary", "fingerprint": "17289bcef138793d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6984b7ee66565796", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_question_answers.js:78"}, "properties": {"repobilityId": "417c560b8ba18145", "scanner": "scanner-primary", "fingerprint": "6984b7ee66565796", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9ca78bd7f379b17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_punctuation_questions.js:10"}, "properties": {"repobilityId": "ff08ffac35fca289", "scanner": "scanner-primary", "fingerprint": "b9ca78bd7f379b17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0497788411c6b7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_family.js:8"}, "properties": {"repobilityId": "66c35c71ac6ec3aa", "scanner": "scanner-primary", "fingerprint": "c0497788411c6b7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8a352f1b4e9b6f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/batch_generate.js:82"}, "properties": {"repobilityId": "aab815262a981ba8", "scanner": "scanner-primary", "fingerprint": "d8a352f1b4e9b6f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e7f7ad391d759da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_legacy_shapes.js:18"}, "properties": {"repobilityId": "92d9db0ff5833b90", "scanner": "scanner-primary", "fingerprint": "5e7f7ad391d759da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a2b61c80a4c991a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_question.js:13"}, "properties": {"repobilityId": "287b259308bfa584", "scanner": "scanner-primary", "fingerprint": "6a2b61c80a4c991a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-648438101500c4a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/parse_sea_framework.js:336"}, "properties": {"repobilityId": "c58654e814676a84", "scanner": "scanner-primary", "fingerprint": "648438101500c4a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68aae59e61fb8b37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_criterion_coverage.js:33"}, "properties": {"repobilityId": "0194efbc0d37d4c7", "scanner": "scanner-primary", "fingerprint": "68aae59e61fb8b37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17239126aea732b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_student_query.js:7"}, "properties": {"repobilityId": "201a6319cb978e81", "scanner": "scanner-primary", "fingerprint": "17239126aea732b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5bf0624925cb3db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_reference_lists.js:18"}, "properties": {"repobilityId": "44217daa714c963c", "scanner": "scanner-primary", "fingerprint": "d5bf0624925cb3db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eca02dac71fad2f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_broken_question.js:15"}, "properties": {"repobilityId": "39d7b03732b4dcb5", "scanner": "scanner-primary", "fingerprint": "eca02dac71fad2f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5bb75e757e91f83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/list_text_topic_contexts.js:12"}, "properties": {"repobilityId": "2257ea4fb7a2ef22", "scanner": "scanner-primary", "fingerprint": "b5bb75e757e91f83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18ccd92d388a0fc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/expand_std1_math_topics.js:39"}, "properties": {"repobilityId": "6319cd7966062b21", "scanner": "scanner-primary", "fingerprint": "18ccd92d388a0fc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43d75a6e7e313b1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_short_answer_match.js:67"}, "properties": {"repobilityId": "74033a17d725ff91", "scanner": "scanner-primary", "fingerprint": "43d75a6e7e313b1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43bcb577764279d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_comprehension_extract.js:48"}, "properties": {"repobilityId": "626f8eba172cbcc3", "scanner": "scanner-primary", "fingerprint": "43bcb577764279d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fc4dc20bd22bec8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_past_paper_mcq.js:13"}, "properties": {"repobilityId": "f5bf6c9345d71124", "scanner": "scanner-primary", "fingerprint": "0fc4dc20bd22bec8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d07b092313a55207", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_boss_bonuses.js:98"}, "properties": {"repobilityId": "333dbab35f2b3ff7", "scanner": "scanner-primary", "fingerprint": "d07b092313a55207", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a68c2b02b37fbb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_framework_debris.js:32"}, "properties": {"repobilityId": "7bf73305d7016c7e", "scanner": "scanner-primary", "fingerprint": "5a68c2b02b37fbb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae2b049e4b244496", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/smoke_test_short_answer.js:52"}, "properties": {"repobilityId": "99a7c49740a286e6", "scanner": "scanner-primary", "fingerprint": "ae2b049e4b244496", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36e924e30bb6daf3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/regenerate_infant_math_quests.js:98"}, "properties": {"repobilityId": "e9659de3a1b73c25", "scanner": "scanner-primary", "fingerprint": "36e924e30bb6daf3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ae9a2ac848f70b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/generate_questions_from_scans.js:316"}, "properties": {"repobilityId": "a12d936eefca16c9", "scanner": "scanner-primary", "fingerprint": "5ae9a2ac848f70b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37f75877a1471b30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_question_tiers.js:30"}, "properties": {"repobilityId": "f66bde1550c9af93", "scanner": "scanner-primary", "fingerprint": "37f75877a1471b30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23ae39cb3a898438", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/revert_broken_answers_to_submitted.js:38"}, "properties": {"repobilityId": "0b1b07f691b40ad4", "scanner": "scanner-primary", "fingerprint": "23ae39cb3a898438", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b885e15bc85247a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_broken_correct_answers.js:68"}, "properties": {"repobilityId": "db08b1704ffc05b0", "scanner": "scanner-primary", "fingerprint": "5b885e15bc85247a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5c8ee844a544cfc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_form_conversion_typed.js:38"}, "properties": {"repobilityId": "feecc018d4e33e17", "scanner": "scanner-primary", "fingerprint": "c5c8ee844a544cfc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98c847d7d584d01a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_demo_accounts.js:95"}, "properties": {"repobilityId": "1d6d151c0605612e", "scanner": "scanner-primary", "fingerprint": "98c847d7d584d01a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09ce9382341308a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_missed_xp.js:121"}, "properties": {"repobilityId": "b0e1f6fab3cba9b9", "scanner": "scanner-primary", "fingerprint": "09ce9382341308a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26c6227b595b4a40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_shuffle_math_choices.js:21"}, "properties": {"repobilityId": "29b872724f55929a", "scanner": "scanner-primary", "fingerprint": "26c6227b595b4a40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ede37fbf6f7bae7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/parse_curriculum_guides.js:97"}, "properties": {"repobilityId": "e3e736cbbb58556e", "scanner": "scanner-primary", "fingerprint": "7ede37fbf6f7bae7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d538b5ecaa2cc4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/ls_list_ids.js:38"}, "properties": {"repobilityId": "5c73002f2576500a", "scanner": "scanner-primary", "fingerprint": "2d538b5ecaa2cc4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b91dac507f73a2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/flag_spelling_no_error.js:24"}, "properties": {"repobilityId": "e557f570fac46fe4", "scanner": "scanner-primary", "fingerprint": "6b91dac507f73a2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-776950d3139509af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/generate_brand_assets.js:219"}, "properties": {"repobilityId": "f319022b290f0737", "scanner": "scanner-primary", "fingerprint": "776950d3139509af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4da33d03d0e75351", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/backfill_writing_prompt_grades.js:75"}, "properties": {"repobilityId": "a5f5a730d1cfc0a8", "scanner": "scanner-primary", "fingerprint": "4da33d03d0e75351", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8c9973ebe0a2f4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_paper_questions.js:83"}, "properties": {"repobilityId": "821442e406b88dda", "scanner": "scanner-primary", "fingerprint": "f8c9973ebe0a2f4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2f2f001de43b96e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/toggle_prefix_suffix_visibility.js:44"}, "properties": {"repobilityId": "d623d808f2607d42", "scanner": "scanner-primary", "fingerprint": "a2f2f001de43b96e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3854a1bd4d97afb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_math_quests.js:7"}, "properties": {"repobilityId": "71e8b7925c7c6184", "scanner": "scanner-primary", "fingerprint": "b3854a1bd4d97afb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07102572e8377eb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_aaliyah_timestamps.js:19"}, "properties": {"repobilityId": "f9b6b0d19c850724", "scanner": "scanner-primary", "fingerprint": "07102572e8377eb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b69954293c8a82a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/approve_paper_scans.js:47"}, "properties": {"repobilityId": "5047c696a8ed069b", "scanner": "scanner-primary", "fingerprint": "b69954293c8a82a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8dc781a6c41d426", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_cosmic_chocolate_live.js:62"}, "properties": {"repobilityId": "efb517d8729ec177", "scanner": "scanner-primary", "fingerprint": "f8dc781a6c41d426", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b08f576ab8768ee9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_reference_lists.js:160"}, "properties": {"repobilityId": "fee0cdc72cd5fb2b", "scanner": "scanner-primary", "fingerprint": "b08f576ab8768ee9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a281e610c016fcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/capture_intended_types.js:68"}, "properties": {"repobilityId": "8a323f5299ffa559", "scanner": "scanner-primary", "fingerprint": "7a281e610c016fcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-619914a4c3025f30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/smoke_tap_diagram_trigger.js:47"}, "properties": {"repobilityId": "541c2d38cc194309", "scanner": "scanner-primary", "fingerprint": "619914a4c3025f30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d7bd712961dbc86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_zara_variants.js:9"}, "properties": {"repobilityId": "f3dddaa18fdde40b", "scanner": "scanner-primary", "fingerprint": "1d7bd712961dbc86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4dc277650f720af5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/convert_mcq_to_short_answer.js:109"}, "properties": {"repobilityId": "492fc5fb9ea128f8", "scanner": "scanner-primary", "fingerprint": "4dc277650f720af5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9eb7f3d01e6c9929", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/full_batch_summary.js:17"}, "properties": {"repobilityId": "230a1307829f18e8", "scanner": "scanner-primary", "fingerprint": "9eb7f3d01e6c9929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78f480fead8b5327", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_math_quests_to_variants.js:51"}, "properties": {"repobilityId": "f5174b7728b01e1c", "scanner": "scanner-primary", "fingerprint": "78f480fead8b5327", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa218155f04f50dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_word_study_topics.js:48"}, "properties": {"repobilityId": "e084adc9f0cadc5a", "scanner": "scanner-primary", "fingerprint": "fa218155f04f50dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-029a0d1a3172bebc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/export_one_quest.js:18"}, "properties": {"repobilityId": "1a8aec0369301bc4", "scanner": "scanner-primary", "fingerprint": "029a0d1a3172bebc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e25ecbd8cfe0429c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/migrate_wc_leaderboard_anon.js:29"}, "properties": {"repobilityId": "1a2bee34e35cf832", "scanner": "scanner-primary", "fingerprint": "e25ecbd8cfe0429c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62d30c3d601b9ca1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_spelling.js:769"}, "properties": {"repobilityId": "20737b1dbc0229de", "scanner": "scanner-primary", "fingerprint": "62d30c3d601b9ca1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80bad8096ec0ba4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/inspect_children_docs.js:12"}, "properties": {"repobilityId": "0a90502986c37c6b", "scanner": "scanner-primary", "fingerprint": "80bad8096ec0ba4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-245829a1e21be863", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/export_math_questions.js:66"}, "properties": {"repobilityId": "ab8d482006c8bbef", "scanner": "scanner-primary", "fingerprint": "245829a1e21be863", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16407586f176625e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_math_groups_bcd.js:87"}, "properties": {"repobilityId": "70672afff1612fba", "scanner": "scanner-primary", "fingerprint": "16407586f176625e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee0a4384d6931468", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/update_data_handling_context.js:32"}, "properties": {"repobilityId": "65a89e8053ca8c2d", "scanner": "scanner-primary", "fingerprint": "ee0a4384d6931468", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a45a0a27bc72065f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/cleanup_premium_leak.js:20"}, "properties": {"repobilityId": "ad2d74e2f3caa7d0", "scanner": "scanner-primary", "fingerprint": "a45a0a27bc72065f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-016d2a240e897133", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed.js:215"}, "properties": {"repobilityId": "8b0109817cc9c3bb", "scanner": "scanner-primary", "fingerprint": "016d2a240e897133", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f94088ffc7fe5960", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/flag_math_duplicate_choices.js:36"}, "properties": {"repobilityId": "28fd48f8f7807e2b", "scanner": "scanner-primary", "fingerprint": "f94088ffc7fe5960", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39b982d9f657424d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_reference_list_bindings.js:12"}, "properties": {"repobilityId": "e6296d13be2449d9", "scanner": "scanner-primary", "fingerprint": "39b982d9f657424d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2822596319c9036", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/peek_iron_kai.js:11"}, "properties": {"repobilityId": "b704e6a39d069d4a", "scanner": "scanner-primary", "fingerprint": "b2822596319c9036", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a12e6ddaea33749a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/build_facebook_assets.js:240"}, "properties": {"repobilityId": "a5c84133b791bcfd", "scanner": "scanner-primary", "fingerprint": "a12e6ddaea33749a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddee26f638667d86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_spelling_no_error.js:28"}, "properties": {"repobilityId": "61533627c5f21538", "scanner": "scanner-primary", "fingerprint": "ddee26f638667d86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abdf3eb12836d468", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_std3_wordstudy.js:942"}, "properties": {"repobilityId": "1abdb3eef2e1c3f2", "scanner": "scanner-primary", "fingerprint": "abdf3eb12836d468", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c65358963409135", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/scan_mathquest_defects.js:22"}, "properties": {"repobilityId": "f14412610b95769c", "scanner": "scanner-primary", "fingerprint": "3c65358963409135", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35b27ae60a2f4f92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/test_tap_diagram_score.js:67"}, "properties": {"repobilityId": "847a956ca8c027bf", "scanner": "scanner-primary", "fingerprint": "35b27ae60a2f4f92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19e40946a985d047", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/build_worldcup_assets.js:606"}, "properties": {"repobilityId": "e332510dc9e659dd", "scanner": "scanner-primary", "fingerprint": "19e40946a985d047", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37710ba5d4337f9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/cleanup_demo_school.js:28"}, "properties": {"repobilityId": "ce73eea3d5257bec", "scanner": "scanner-primary", "fingerprint": "37710ba5d4337f9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d3ff641f82f127c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/archive_broken_punctuation.js:75"}, "properties": {"repobilityId": "c5951445565dad99", "scanner": "scanner-primary", "fingerprint": "5d3ff641f82f127c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1249410fece59229", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/analyze_mathquest_answer_bias.js:44"}, "properties": {"repobilityId": "fc360b41545aa6f6", "scanner": "scanner-primary", "fingerprint": "1249410fece59229", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a113e1dda3d537d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/fix_math_wrong_keys.js:36"}, "properties": {"repobilityId": "4bf1744af64fde7a", "scanner": "scanner-primary", "fingerprint": "a113e1dda3d537d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72bc835fd9ab6e70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/batch_review.js:155"}, "properties": {"repobilityId": "f3e7fc52f18a266e", "scanner": "scanner-primary", "fingerprint": "72bc835fd9ab6e70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bdef42ca66fd5fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_premium_leak.js:30"}, "properties": {"repobilityId": "aaa103c797aeeb39", "scanner": "scanner-primary", "fingerprint": "5bdef42ca66fd5fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ceefb7b988d07f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_punctuation_questions.js:114"}, "properties": {"repobilityId": "be13defb9d3ba835", "scanner": "scanner-primary", "fingerprint": "0ceefb7b988d07f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74f15bdb791a643f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/check_smoke_tester_family.js:14"}, "properties": {"repobilityId": "5eb0cec39e3d3c31", "scanner": "scanner-primary", "fingerprint": "74f15bdb791a643f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d31126aac592f54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/audit_math_questions.js:68"}, "properties": {"repobilityId": "11a67df293a8b1ab", "scanner": "scanner-primary", "fingerprint": "7d31126aac592f54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52d5e826c7fe113d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/upload_brand_assets.js:92"}, "properties": {"repobilityId": "5d99c71f1697d368", "scanner": "scanner-primary", "fingerprint": "52d5e826c7fe113d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb6457565a9d2a0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/summarize_batch.js:111"}, "properties": {"repobilityId": "8075032fd6e491ee", "scanner": "scanner-primary", "fingerprint": "eb6457565a9d2a0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cd6b1c58ba5de84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tool/seed_world_cup.js:152"}, "properties": {"repobilityId": "f96f462f854bc2ec", "scanner": "scanner-primary", "fingerprint": "0cd6b1c58ba5de84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-59a93bcbc035e0ca", "level": "error", "message": {"text": "Runtime dotenv file present in repo: functions/.env"}, "properties": {"repobilityId": "ba6ecb449054a65b", "scanner": "scanner-primary", "fingerprint": "59a93bcbc035e0ca", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/.env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27124ca56a522ed1", "level": "error", "message": {"text": "Possible secret in tool/batch_generate.js"}, "properties": {"repobilityId": "0cfb1685405e2f28", "scanner": "scanner-primary", "fingerprint": "27124ca56a522ed1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tool/batch_generate.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-b1a541ade2ae67fb", "level": "error", "message": {"text": "Possible secret in tool/regenerate_infant_math_quests.js"}, "properties": {"repobilityId": "fc88a7c0926de124", "scanner": "scanner-primary", "fingerprint": "b1a541ade2ae67fb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tool/regenerate_infant_math_quests.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-b7ad500cbf7a6fce", "level": "error", "message": {"text": "Possible secret in tool/seed_demo_accounts.js"}, "properties": {"repobilityId": "3dff8da254f75a47", "scanner": "scanner-primary", "fingerprint": "b7ad500cbf7a6fce", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tool/seed_demo_accounts.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-6b50a82347f27354", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tool/build_facebook_assets.js:16"}, "properties": {"repobilityId": "b54e0cb559f12b8b", "scanner": "scanner-primary", "fingerprint": "6b50a82347f27354", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tool/build_facebook_assets.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-8c5b08860d631362", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tool/build_worldcup_assets.js:18"}, "properties": {"repobilityId": "4a4053d3bdfdb741", "scanner": "scanner-primary", "fingerprint": "8c5b08860d631362", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tool/build_worldcup_assets.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd7f3c1c34d83159", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fae2dc9047a136f1", "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": 73}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fae2dc9047a136f1", "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": 96}}}]}, {"ruleId": "scanner-6f5b6a5e65c6b80a", "level": "note", "message": {"text": "Very large file: functions/index.js (7430 lines)"}, "properties": {"repobilityId": "534d009a476f25f1", "scanner": "scanner-primary", "fingerprint": "6f5b6a5e65c6b80a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "ad41bde5e28b0d6a", "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": "9cd92cb5463c9d0b", "scanner": "scanner-primary", "fingerprint": "3ab5d313dda8e5f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["debug", "cleanup", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-72b2a6250083a784", "level": "warning", "message": {"text": "Placeholder or mock-heavy implementation detected"}, "properties": {"repobilityId": "4cb14c860cb4f303", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "69f0cc59b36b1890", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "0ab2c196fcd4e58e", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8d68a8d636a2da6d", "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": "52c3decb1bd040f5", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6ba120907e475789", "level": "none", "message": {"text": "Commented-code block (5 lines) in functions/reading_level.js:19"}, "properties": {"repobilityId": "b9f2ac3102a499dd", "scanner": "scanner-primary", "fingerprint": "6ba120907e475789", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2325df3212fe4cdd", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/question_type_handlers.js:1"}, "properties": {"repobilityId": "3bd72a26904fb682", "scanner": "scanner-primary", "fingerprint": "2325df3212fe4cdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0bab83632d686a4", "level": "none", "message": {"text": "Commented-code block (6 lines) in functions/topic_context_defaults.js:8"}, "properties": {"repobilityId": "b44188ddb49c60ec", "scanner": "scanner-primary", "fingerprint": "f0bab83632d686a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8dfb7b65ee89c05a", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/question_types.js:1"}, "properties": {"repobilityId": "3de9bf52fb144269", "scanner": "scanner-primary", "fingerprint": "8dfb7b65ee89c05a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44ec59e7e8eb174c", "level": "none", "message": {"text": "Commented-code block (7 lines) in functions/index.js:3"}, "properties": {"repobilityId": "59f9f8e9b55fe772", "scanner": "scanner-primary", "fingerprint": "44ec59e7e8eb174c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a077f9be202ed18", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/index.js:1493"}, "properties": {"repobilityId": "5ab888191952103a", "scanner": "scanner-primary", "fingerprint": "2a077f9be202ed18", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-54d685c4a40ba983", "level": "none", "message": {"text": "Commented-code block (8 lines) in functions/facebook_bot.js:5"}, "properties": {"repobilityId": "8d86e277b8d427df", "scanner": "scanner-primary", "fingerprint": "54d685c4a40ba983", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce9381db4a62a065", "level": "none", "message": {"text": "Commented-code block (10 lines) in functions/curriculum_data/index.js:10"}, "properties": {"repobilityId": "cd8f54ec8a8e5176", "scanner": "scanner-primary", "fingerprint": "ce9381db4a62a065", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee84d67e2db5b446", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/scan_paper_questions_batch.js:2"}, "properties": {"repobilityId": "5259710480a994f7", "scanner": "scanner-primary", "fingerprint": "ee84d67e2db5b446", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7092b9240a48f61c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions_batch.js:171"}, "properties": {"repobilityId": "987ffb8b167fd838", "scanner": "scanner-primary", "fingerprint": "7092b9240a48f61c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4474e62237d5a23e", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/reference_data_homophones.js:2"}, "properties": {"repobilityId": "66ae36a9dd0d6ba8", "scanner": "scanner-primary", "fingerprint": "4474e62237d5a23e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-024ee6347a89468b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/promote_writing_prompts_live.js:4"}, "properties": {"repobilityId": "25d4640580aa4a83", "scanner": "scanner-primary", "fingerprint": "024ee6347a89468b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7470d9986368f239", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/backfill_reading_level.js:5"}, "properties": {"repobilityId": "8c24ce215801c5c4", "scanner": "scanner-primary", "fingerprint": "7470d9986368f239", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-199e4d01d2284b8d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/migrate_avatar_names_unique.js:4"}, "properties": {"repobilityId": "b1e2fec291b4b41e", "scanner": "scanner-primary", "fingerprint": "199e4d01d2284b8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53004884800450d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/seed_tap_diagram_questions.js:2"}, "properties": {"repobilityId": "d6def9892ab80c62", "scanner": "scanner-primary", "fingerprint": "53004884800450d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d663d3a09d11973", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/reference_data_spelling.js:2"}, "properties": {"repobilityId": "3acf1db3cfbf3e7c", "scanner": "scanner-primary", "fingerprint": "3d663d3a09d11973", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f144d8188b5527db", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/brand_assets_manifest.js:26"}, "properties": {"repobilityId": "3eccb51985b92f01", "scanner": "scanner-primary", "fingerprint": "f144d8188b5527db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d65fe8b27ad57fbc", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/check_question_answers.js:6"}, "properties": {"repobilityId": "e9dc747f7b4bbf9a", "scanner": "scanner-primary", "fingerprint": "d65fe8b27ad57fbc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b02fa0f529f399f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/batch_generate.js:4"}, "properties": {"repobilityId": "752d635ad9594340", "scanner": "scanner-primary", "fingerprint": "b02fa0f529f399f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c949b1a47d9f108", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/batch_generate.js:136"}, "properties": {"repobilityId": "245a67d3529ed93a", "scanner": "scanner-primary", "fingerprint": "4c949b1a47d9f108", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf32bb3ac7f5d434", "level": "note", "message": {"text": "Legacy-named symbol `spellsLegacy` in tool/check_legacy_shapes.js:57"}, "properties": {"repobilityId": "a575a3abf41778ca", "scanner": "scanner-primary", "fingerprint": "cf32bb3ac7f5d434", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7ab83b32588c53c1", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/parse_sea_framework.js:10"}, "properties": {"repobilityId": "05b4e191abdf5562", "scanner": "scanner-primary", "fingerprint": "7ab83b32588c53c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a97df6b26610a596", "level": "none", "message": {"text": "Commented-code block (10 lines) in tool/extract_epub_text.js:1"}, "properties": {"repobilityId": "ed47d4a58d20335e", "scanner": "scanner-primary", "fingerprint": "a97df6b26610a596", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46ecc8c12aff6416", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/expand_std1_math_topics.js:2"}, "properties": {"repobilityId": "2a3d427a8715a309", "scanner": "scanner-primary", "fingerprint": "46ecc8c12aff6416", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb9329311f0cd197", "level": "none", "message": {"text": "Commented-code block (12 lines) in tool/test_comprehension_extract.js:5"}, "properties": {"repobilityId": "8b1bfaa2df54bc32", "scanner": "scanner-primary", "fingerprint": "fb9329311f0cd197", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1655cb284a2fbc1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/backfill_boss_bonuses.js:7"}, "properties": {"repobilityId": "e2614528edd83d1c", "scanner": "scanner-primary", "fingerprint": "d1655cb284a2fbc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee31ee33d4dd1324", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/fix_framework_debris.js:2"}, "properties": {"repobilityId": "eeae9521b23b7dec", "scanner": "scanner-primary", "fingerprint": "ee31ee33d4dd1324", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17b6bfac382d8bfe", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/smoke_test_short_answer.js:2"}, "properties": {"repobilityId": "10dc6bf1d78b141e", "scanner": "scanner-primary", "fingerprint": "17b6bfac382d8bfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1ea6046901f5d25", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/regenerate_infant_math_quests.js:53"}, "properties": {"repobilityId": "2ae6e3b9639487c6", "scanner": "scanner-primary", "fingerprint": "c1ea6046901f5d25", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-807448027f9a7916", "level": "none", "message": {"text": "Commented-code block (8 lines) in tool/generate_questions_from_scans.js:2"}, "properties": {"repobilityId": "15ba91f51948b81f", "scanner": "scanner-primary", "fingerprint": "807448027f9a7916", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74ae296474a3dbcc", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/audit_question_tiers.js:2"}, "properties": {"repobilityId": "631cc2630b402e28", "scanner": "scanner-primary", "fingerprint": "74ae296474a3dbcc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b714810bfa24a400", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/reference_data_suffixes.js:2"}, "properties": {"repobilityId": "5ef6bcdee78c9f1d", "scanner": "scanner-primary", "fingerprint": "b714810bfa24a400", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f845fa6c5499cfbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/fix_broken_correct_answers.js:6"}, "properties": {"repobilityId": "a6df78f6ffb8b2c1", "scanner": "scanner-primary", "fingerprint": "f845fa6c5499cfbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d09af1090030d2ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/audit_form_conversion_typed.js:2"}, "properties": {"repobilityId": "f3a377b6c74c39b7", "scanner": "scanner-primary", "fingerprint": "d09af1090030d2ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a57df6c9afaa635", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/reference_data_prefixes.js:2"}, "properties": {"repobilityId": "b20f1d3fcaa92ca0", "scanner": "scanner-primary", "fingerprint": "8a57df6c9afaa635", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dcaea5dc796df10", "level": "none", "message": {"text": "Commented-code block (8 lines) in tool/seed_demo_accounts.js:3"}, "properties": {"repobilityId": "7cd58bb632b3e9eb", "scanner": "scanner-primary", "fingerprint": "0dcaea5dc796df10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb5a8404e378ddb5", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/backfill_missed_xp.js:2"}, "properties": {"repobilityId": "faea604983f704a3", "scanner": "scanner-primary", "fingerprint": "cb5a8404e378ddb5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae5fcd48d347fd5a", "level": "none", "message": {"text": "Commented-code block (8 lines) in tool/parse_curriculum_guides.js:8"}, "properties": {"repobilityId": "eca3a1281d30c2ec", "scanner": "scanner-primary", "fingerprint": "ae5fcd48d347fd5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ada6b39ec82f96d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/ls_list_ids.js:20"}, "properties": {"repobilityId": "ecfb9b620bf8921a", "scanner": "scanner-primary", "fingerprint": "ada6b39ec82f96d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35071d174a551319", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/generate_brand_assets.js:5"}, "properties": {"repobilityId": "7e69d045f22b5900", "scanner": "scanner-primary", "fingerprint": "35071d174a551319", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c005e253e8981b40", "level": "none", "message": {"text": "Commented-code block (10 lines) in tool/backfill_writing_prompt_grades.js:2"}, "properties": {"repobilityId": "020dc5c4067a2423", "scanner": "scanner-primary", "fingerprint": "c005e253e8981b40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-247bd5f2032fed8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/scan_paper_questions.js:2"}, "properties": {"repobilityId": "31c75efe39463bf8", "scanner": "scanner-primary", "fingerprint": "247bd5f2032fed8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b7d170234f0d2ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/scan_paper_questions.js:56"}, "properties": {"repobilityId": "a716998cbcc0be1c", "scanner": "scanner-primary", "fingerprint": "4b7d170234f0d2ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2508890a893ffddc", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/toggle_prefix_suffix_visibility.js:9"}, "properties": {"repobilityId": "ff534c187b351c37", "scanner": "scanner-primary", "fingerprint": "2508890a893ffddc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90a7794b6018cb4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/seed_reference_lists.js:2"}, "properties": {"repobilityId": "9f83c81edcc279e9", "scanner": "scanner-primary", "fingerprint": "90a7794b6018cb4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0f7512917b26e45", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/capture_intended_types.js:2"}, "properties": {"repobilityId": "206194e562e7fc5a", "scanner": "scanner-primary", "fingerprint": "b0f7512917b26e45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-345805aaccd4c0fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/smoke_tap_diagram_trigger.js:2"}, "properties": {"repobilityId": "62d1de1905c37a10", "scanner": "scanner-primary", "fingerprint": "345805aaccd4c0fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc67ea3c984d5f4c", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/convert_mcq_to_short_answer.js:6"}, "properties": {"repobilityId": "b2f99928f73351ae", "scanner": "scanner-primary", "fingerprint": "fc67ea3c984d5f4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a245122e96fb417d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/migrate_math_quests_to_variants.js:3"}, "properties": {"repobilityId": "2d8a0919f25ebc6f", "scanner": "scanner-primary", "fingerprint": "a245122e96fb417d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f59c77c8ee4a1930", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/seed_word_study_topics.js:2"}, "properties": {"repobilityId": "199898de8c2d535f", "scanner": "scanner-primary", "fingerprint": "f59c77c8ee4a1930", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-172db7d56469d943", "level": "note", "message": {"text": "Legacy-named symbol `hasLegacy` in tool/migrate_wc_leaderboard_anon.js:34"}, "properties": {"repobilityId": "0cacc2ef703ad7de", "scanner": "scanner-primary", "fingerprint": "172db7d56469d943", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea08d7ba15ae25a4", "level": "none", "message": {"text": "Commented-code block (8 lines) in tool/migrate_wc_leaderboard_anon.js:4"}, "properties": {"repobilityId": "f1396d8a1386d0c1", "scanner": "scanner-primary", "fingerprint": "ea08d7ba15ae25a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f999c34fcb1440cf", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/seed_std3_spelling.js:5"}, "properties": {"repobilityId": "56c3268097c93f08", "scanner": "scanner-primary", "fingerprint": "f999c34fcb1440cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32e0e533fa76bc37", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/update_data_handling_context.js:2"}, "properties": {"repobilityId": "edf3a37c1fcce8d4", "scanner": "scanner-primary", "fingerprint": "32e0e533fa76bc37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0839b97d74a0dc98", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/cleanup_premium_leak.js:6"}, "properties": {"repobilityId": "fccce271a178f1aa", "scanner": "scanner-primary", "fingerprint": "0839b97d74a0dc98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d91d856705668e1", "level": "none", "message": {"text": "Commented-code block (7 lines) in tool/seed.js:11"}, "properties": {"repobilityId": "93d7542f5992a90f", "scanner": "scanner-primary", "fingerprint": "1d91d856705668e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49caa24741aff1ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/seed_std3_wordstudy.js:2"}, "properties": {"repobilityId": "eb6d1a37a39872d9", "scanner": "scanner-primary", "fingerprint": "49caa24741aff1ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0547aebb68fdd093", "level": "none", "message": {"text": "Commented-code block (10 lines) in tool/scan_mathquest_defects.js:2"}, "properties": {"repobilityId": "29df81bda41dcc53", "scanner": "scanner-primary", "fingerprint": "0547aebb68fdd093", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-424fef2f76cdd09e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/build_worldcup_assets.js:52"}, "properties": {"repobilityId": "da54a084284f051d", "scanner": "scanner-primary", "fingerprint": "424fef2f76cdd09e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37691e0229ed68c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tool/build_worldcup_assets.js:109"}, "properties": {"repobilityId": "9cd739dc1900e151", "scanner": "scanner-primary", "fingerprint": "37691e0229ed68c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bad55d7536642579", "level": "none", "message": {"text": "Commented-code block (5 lines) in tool/audit_premium_leak.js:5"}, "properties": {"repobilityId": "a97332dd2991ce34", "scanner": "scanner-primary", "fingerprint": "bad55d7536642579", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ea013dced623a04", "level": "none", "message": {"text": "Commented-code block (21 lines) in tool/audit_punctuation_questions.js:9"}, "properties": {"repobilityId": "2b0837b5214b4b10", "scanner": "scanner-primary", "fingerprint": "0ea013dced623a04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ebbceb01a80221b", "level": "none", "message": {"text": "Commented-code block (9 lines) in tool/audit_math_questions.js:5"}, "properties": {"repobilityId": "7cfc4a55c42d30d7", "scanner": "scanner-primary", "fingerprint": "9ebbceb01a80221b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be505432e4f9604c", "level": "none", "message": {"text": "Commented-code block (6 lines) in tool/lib/paper_scan_core.js:2"}, "properties": {"repobilityId": "54195ff216cccec3", "scanner": "scanner-primary", "fingerprint": "be505432e4f9604c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "d486c87b32325bb5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f30a20a85197bae8", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "58d8890e3519051c", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}