{"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-0d5b7bfa5c383553", "name": "Possibly dead Python function: step_theorize", "shortDescription": {"text": "Possibly dead Python function: step_theorize"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b91a7e58d4b5cd4", "name": "Possibly dead Python function: feat_pivot", "shortDescription": {"text": "Possibly dead Python function: feat_pivot"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41cc328821df62bd", "name": "Possibly dead Python function: feat_open_loop", "shortDescription": {"text": "Possibly dead Python function: feat_open_loop"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ab0455a7d9fbdb6", "name": "Possibly dead Python function: feat_proof", "shortDescription": {"text": "Possibly dead Python function: feat_proof"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9f4a1878e1508be2", "name": "Possibly dead Python function: feat_contrast", "shortDescription": {"text": "Possibly dead Python function: feat_contrast"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-caabcf44df6155ae", "name": "Possibly dead Python function: feat_action", "shortDescription": {"text": "Possibly dead Python function: feat_action"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a987f9616c608cd", "name": "Possibly dead Python function: feat_open_loop_first_half", "shortDescription": {"text": "Possibly dead Python function: feat_open_loop_first_half"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-783717e7d6e40b69", "name": "Possibly dead Python function: feat_sensory", "shortDescription": {"text": "Possibly dead Python function: feat_sensory"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39e15d736bf6737c", "name": "Possibly dead Python function: feat_repeated_phrase", "shortDescription": {"text": "Possibly dead Python function: feat_repeated_phrase"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ed3514e4046d668", "name": "Possibly dead Python function: feat_unique_word_ratio", "shortDescription": {"text": "Possibly dead Python function: feat_unique_word_ratio"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00e41f368e4dc07b", "name": "Possibly dead Python function: feat_hapax", "shortDescription": {"text": "Possibly dead Python function: feat_hapax"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12fd1f3921c0f7e9", "name": "Possibly dead Python function: feat_word_count", "shortDescription": {"text": "Possibly dead Python function: feat_word_count"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8555890b2d5118fd", "name": "Possibly dead Python function: feat_hook_word_ratio", "shortDescription": {"text": "Possibly dead Python function: feat_hook_word_ratio"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03114ca6993482fd", "name": "Possibly dead Python function: feat_hook_phrase_diversity", "shortDescription": {"text": "Possibly dead Python function: feat_hook_phrase_diversity"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a96d8ea69f38f1c", "name": "Possibly dead Python function: feat_anticipation", "shortDescription": {"text": "Possibly dead Python function: feat_anticipation"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3c76f9b19790c3d", "name": "Possibly dead Python function: key", "shortDescription": {"text": "Possibly dead Python function: key"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f34d45c3afe8376e", "name": "Stray `console.log` in TS/JS \u2014 test-webgl-check.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-webgl-check.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-3a72974f11e72191", "name": "Stray `console.log` in TS/JS \u2014 _write_doc2_v2.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _write_doc2_v2.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-64a7e3ef2c470e8e", "name": "Stray `console.log` in TS/JS \u2014 _r2_check2.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _r2_check2.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-aef978e4dc6e00c5", "name": "Stray `console.log` in TS/JS \u2014 shorts-crawler.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 shorts-crawler.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-814943e795eaf0c0", "name": "Stray `console.log` in TS/JS \u2014 video-analyzer.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 video-analyzer.js:189"}, "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-09262d2ae134a7a7", "name": "Stray `console.log` in TS/JS \u2014 _classify_shorts.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _classify_shorts.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-350c88d65c3e020b", "name": "Icon-only button without accessible name \u2014 auth-gate.js:485", "shortDescription": {"text": "Icon-only button without accessible name \u2014 auth-gate.js:485"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8942d6886b5cf9d5", "name": "Stray `console.log` in TS/JS \u2014 _cluster_principles.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _cluster_principles.js:63"}, "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-3f65ef4fa39458ac", "name": "Stray `console.log` in TS/JS \u2014 _generate_ideas_v3.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _generate_ideas_v3.js:46"}, "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-cae1e4d148280a77", "name": "Stray `console.log` in TS/JS \u2014 _render_principles_friendly.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _render_principles_friendly.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-818c558263a80f73", "name": "Stray `console.log` in TS/JS \u2014 sync-jarvis-to-r2.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sync-jarvis-to-r2.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-2788e2c91686b8dc", "name": "Stray `console.log` in TS/JS \u2014 _match_by_transcript.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _match_by_transcript.js:80"}, "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-342c046b44b03e78", "name": "Stray `console.log` in TS/JS \u2014 test-game.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-game.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-d7534baba712d75d", "name": "Stray `console.log` in TS/JS \u2014 test-v2.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-v2.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-0ba48e53ac451645", "name": "Stray `console.log` in TS/JS \u2014 _generate_zeigarnik_mechanisms.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _generate_zeigarnik_mechanisms.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-c1c692da044dfbea", "name": "Stray `console.log` in TS/JS \u2014 swipe-scraper.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 swipe-scraper.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-bc4559e40d31b5b0", "name": "Stray `console.log` in TS/JS \u2014 _generate_v3.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _generate_v3.js:16"}, "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-ab89db7924fbcbef", "name": "Stray `console.log` in TS/JS \u2014 cloud-storage.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 cloud-storage.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afa16c0319d742f8", "name": "Stray `console.log` in TS/JS \u2014 _build_compact_graph.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _build_compact_graph.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-63e51c5c8238d906", "name": "Stray `console.log` in TS/JS \u2014 server.js:307", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 server.js:307"}, "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-bbf6a45d17a825c5", "name": "Stray `console.log` in TS/JS \u2014 fetch_transactions.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 fetch_transactions.js:37"}, "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-dd25e79f7f4e7a75", "name": "Stray `console.log` in TS/JS \u2014 _write_doc2.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _write_doc2.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-fd0fa3811935c85c", "name": "Stray `console.log` in TS/JS \u2014 pull_transactions.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 pull_transactions.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-bfe60ad5c28a477f", "name": "Stray `console.log` in TS/JS \u2014 _create_davinci_stack_note.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _create_davinci_stack_note.js:105"}, "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-2c7126f6e4c512fa", "name": "Stray `console.log` in TS/JS \u2014 _extract_principles.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _extract_principles.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-e36bc360ba16a07b", "name": "Stray `console.log` in TS/JS \u2014 _match_channel_to_pen.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _match_channel_to_pen.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb3e4de1fca4a656", "name": "Stray `console.log` in TS/JS \u2014 _r2_check_counts.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _r2_check_counts.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-4e4c512a9050d297", "name": "Stray `console.log` in TS/JS \u2014 _classify_22_mechanisms.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _classify_22_mechanisms.js:16"}, "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-c9453fb39f75cd8e", "name": "Stray `console.log` in TS/JS \u2014 _watcher_r2_live.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 _watcher_r2_live.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-2f41e653393fbe4b", "name": "Stray `console.log` in TS/JS \u2014 buildings/library/library-ui.js:2596", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/library/library-ui.js:2596"}, "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-00d10e3bab63d5a8", "name": "Icon-only button without accessible name \u2014 buildings/gym/gym-ui.js:1455", "shortDescription": {"text": "Icon-only button without accessible name \u2014 buildings/gym/gym-ui.js:1455"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ca2e0b002e78d6d", "name": "Stray `console.log` in TS/JS \u2014 buildings/gym/gym-service.js:196", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/gym/gym-service.js:196"}, "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-ea5b124988ec444d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/rebuild-candidate-queue.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/rebuild-candidate-queue.js:34"}, "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-37f0cf013a3b210d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_runs_progress.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_runs_progress.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-bb6c60e828deefbf", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_progress_only.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_progress_only.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-52bc392c2b6026b2", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_small_files.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_small_files.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-6223cb0bde52b72f", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-runner.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-runner.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-abcb920e327bb3c7", "name": "Icon-only button without accessible name \u2014 buildings/jarvis/jarvis-ui.js:361", "shortDescription": {"text": "Icon-only button without accessible name \u2014 buildings/jarvis/jarvis-ui.js:361"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b2657f03e9dd6f9", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_quick_r2_verify.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_quick_r2_verify.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-72943a575637f774", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_pull_r2.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_pull_r2.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-3b6cf9f0a1a3268c", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/verify-r2.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/verify-r2.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-7a83baea336b94bd", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining_files.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining_files.js:27"}, "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-6bb3b2ffbbc86b08", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_light.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_light.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-40757a97e2cd2a76", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/cleanup-llm-metrics.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/cleanup-llm-metrics.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-6b68988654c5e451", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_graph_only.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_graph_only.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-1cdeb1654a78c0a3", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_check.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_check.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-410981ca3663c715", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check2.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check2.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-5ab1d367e1bf2c65", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_count_local.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_count_local.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-868bda7be46ed4a4", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/analysis_engine.js:931", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/analysis_engine.js:931"}, "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-94f5d32e692f6652", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-to-r2.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-to-r2.js:58"}, "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-e7f0eed0089b562c", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_compact_only.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_compact_only.js:16"}, "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-1c568ef7e6d7f29c", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/upload-tribe-to-r2.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/upload-tribe-to-r2.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af94ab0c711b4b2e", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_queue_only.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_queue_only.js:16"}, "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-c0972e6538d11921", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_live_check.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_live_check.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-e36ddf13aa9c70d7", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_local_state.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_local_state.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-f9bad4963103d03a", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_check.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_check.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-acb101e9980024c6", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-node-autorun.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-node-autorun.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-d4f2a7f143ad491b", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_now.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_now.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-27f1b91a8ba262e2", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_canonical_to_r2.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_canonical_to_r2.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-d85479334ffe2a03", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_now.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_now.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-382254f5592c22da", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_reset_and_sync.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_reset_and_sync.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36a6d5227b4aae0e", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_sizes.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_sizes.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-859c6c8fa3b2c5ab", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_files.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_files.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-17ea061771f7a6bc", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live_counts.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live_counts.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-b6a9e31b7228f98d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_counts.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_counts.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-9a4f7f653bcc3f97", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-ideas-to-r2.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-ideas-to-r2.js:27"}, "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-6e031c12c71509e8", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check.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-1cb5659a7862c1e3", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-autorun-now.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-autorun-now.js:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13e9f7ebfbb0130d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2.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-322f8241d225ab0e", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_status.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_status.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-9c5d686e6eb7bcb9", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live.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-5fd59b508a95e4ff", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining.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-c0dc7aae37aa171d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_launch_overnight.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_launch_overnight.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-a4f211de5cd443cf", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/launch-autorun.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/launch-autorun.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-fdf4fbe6cb14c73c", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-store.js:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-store.js:286"}, "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-cb54eadae6c6ab73", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_check.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_check.js:63"}, "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-db9d7becb5930f7d", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_progress_now.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_progress_now.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-56988c811e4e6f33", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_rebuild_model_v2.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_rebuild_model_v2.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-cc9ca4131f484c41", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_pre_correlations.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_pre_correlations.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-4eeb7b61fc77c562", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_post_correlations.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_post_correlations.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-2eafb15b8cb606b4", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_validate.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_validate.js:94"}, "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-a7d933e588ae755b", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_post_indicators.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_post_indicators.js:76"}, "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-49ed1d6d579a8a63", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_feature_stats.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_feature_stats.js:23"}, "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-b7276378ca2cfeb6", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_gen_model_v2.js:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_gen_model_v2.js:175"}, "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-b55a84753ba7ea1a", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase3_component_emergence.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase3_component_emergence.js:49"}, "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-59901f341ebb26ab", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase4_principle_candidates.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase4_principle_candidates.js:89"}, "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-d59d646358c003fa", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase2_mechanism_extraction.js:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase2_mechanism_extraction.js:257"}, "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-6424412899fddbfd", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase5_bridge_validation.js:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase5_bridge_validation.js:167"}, "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-8bd249fe7ae540d7", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase6_persist.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase6_persist.js:27"}, "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-9fc4e9c286efbdd5", "name": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase1_init.js:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase1_init.js:153"}, "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-d6c5242f510153bf", "name": "Stray `console.log` in TS/JS \u2014 buildings/pen/pen-ui.js:900", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 buildings/pen/pen-ui.js:900"}, "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-28907b92d1c20d6d", "name": "Icon-only button without accessible name \u2014 buildings/storage/storage-ui.js:169", "shortDescription": {"text": "Icon-only button without accessible name \u2014 buildings/storage/storage-ui.js:169"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-debe252e682f5209", "name": "Icon-only button without accessible name \u2014 buildings/workshop/workshop-ui.js:236", "shortDescription": {"text": "Icon-only button without accessible name \u2014 buildings/workshop/workshop-ui.js:236"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bca5e0c5c5e7826b", "name": "Stray `console.log` in TS/JS \u2014 test-screenshots/final/test-runner.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 test-screenshots/final/test-runner.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-8b3696377522bbe8", "name": "Stray `console.log` in TS/JS \u2014 tmp/r2_live_check.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/r2_live_check.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-bbace87f7ed76ef1", "name": "Stray `console.log` in TS/JS \u2014 tmp/r2_check.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/r2_check.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-ebbb77829b46a587", "name": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_signature_verify.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_signature_verify.js:3"}, "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-af3c0f150158a96e", "name": "Stray `console.log` in TS/JS \u2014 tmp/check_phrase_coverage.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/check_phrase_coverage.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-f734d4c7784f33b5", "name": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_premise_alias_verify.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_premise_alias_verify.js:3"}, "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-db68542bc96a1ebd", "name": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_verify.js:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_verify.js:3"}, "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-f6cd08fa8d1eb4b0", "name": "Analyzer timeout: security.gitleaks", "shortDescription": {"text": "Analyzer timeout: security.gitleaks"}, "fullDescription": {"text": "analyzer exceeded 60.0s wall-clock (thread mode \u2014 daemon abandoned). Bump REPOBILITY_ANALYZER_TIMEOUT_S if expected."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9026a5a756fde8f4", "name": "Insecure pattern 'direct_innerhtml_assignment' in pipeline.html:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pipeline.html:142"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e8d25b2e7e6469c0", "name": "Insecure pattern 'node_child_process' in shorts-crawler.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in shorts-crawler.js:5"}, "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-00e1166d56e64936", "name": "Insecure pattern 'node_child_process' in video-analyzer.js:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in video-analyzer.js:6"}, "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-903096f8027461f5", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth-gate.js:34", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth-gate.js:34"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c02919561a095761", "name": "Insecure pattern 'direct_innerhtml_assignment' in index.html:2980", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:2980"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d67d13b9e307e214", "name": "Insecure pattern 'node_child_process' in videolab-coordinator.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in videolab-coordinator.js:15"}, "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-8a3c78ad0306eb2e", "name": "Insecure pattern 'exec_used' in server.js:1243", "shortDescription": {"text": "Insecure pattern 'exec_used' in server.js:1243"}, "fullDescription": {"text": "Found a known-risky pattern (exec_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-260fcaadd7f117f6", "name": "Insecure pattern 'node_child_process' in server.js:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in server.js:33"}, "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-bec492b98e7ad26c", "name": "Insecure pattern 'cors_wildcard' in server.js:467", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in server.js:467"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fcb7010bc3e5f4c3", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/egg-renderer.js:169", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/egg-renderer.js:169"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0d5c074dab5c5e09", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/videolab/videolab-ui.js:58", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/videolab/videolab-ui.js:58"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0db2eac06c8b7efc", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/library-ui.js:122", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/library-ui.js:122"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3efa1061824e24e", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/dag-flowchart.js:423", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/dag-flowchart.js:423"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9abe389169bb36bf", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/movietheatre/movietheatre-ui.js:174", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/movietheatre/movietheatre-ui.js:174"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2997627d20158482", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/research/research-ui.js:214", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/research/research-ui.js:214"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc03c887b3e5193a", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/gym/gym-ui.js:150", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/gym/gym-ui.js:150"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b920c8d23415b4fb", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/chocolatebar/chocolatebar-ui.js:667", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/chocolatebar/chocolatebar-ui.js:667"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7f06fde6aba9c17", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/finance/finance-ui.js:843", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/finance/finance-ui.js:843"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56609bc105a6c0a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/employee/employee-ui.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/employee/employee-ui.js:16"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e79194f9a85372dd", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-ui.js:186", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-ui.js:186"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3beb84ef415b6121", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-quant2.js:404", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-quant2.js:404"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24f38e6d0c98d038", "name": "Insecure pattern 'node_child_process' in buildings/jarvis/_cron_reset_and_sync.js:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in buildings/jarvis/_cron_reset_and_sync.js:35"}, "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-8b33cd573f3a829e", "name": "Insecure pattern 'node_child_process' in buildings/jarvis/overnight_orchestrator.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in buildings/jarvis/overnight_orchestrator.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-0d0d142587b53c67", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-qrd.js:1886", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-qrd.js:1886"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-af9c8279db84e385", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/pen/pen-ui.js:89", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/pen/pen-ui.js:89"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a25e9024070cf734", "name": "Insecure pattern 'insert_adjacent_html' in buildings/pen/pen-ui.js:2384", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in buildings/pen/pen-ui.js:2384"}, "fullDescription": {"text": "Found a known-risky pattern (insert_adjacent_html). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d33c35f953530c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/storage/storage-ui.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/storage/storage-ui.js:74"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-df1295b27b8c214d", "name": "Insecure pattern 'direct_innerhtml_assignment' in buildings/workshop/workshop-ui.js:212", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/workshop/workshop-ui.js:212"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9a2e7cbd009e017f", "name": "Very large file: server.js (6614 lines)", "shortDescription": {"text": "Very large file: server.js (6614 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-3e819e5172b781d8", "name": "Very large file: buildings/library/library-ui.js (5749 lines)", "shortDescription": {"text": "Very large file: buildings/library/library-ui.js (5749 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-3a44d821957a4845", "name": "Very large file: buildings/gym/gym-ui.js (1712 lines)", "shortDescription": {"text": "Very large file: buildings/gym/gym-ui.js (1712 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-1bd2d706316e2299", "name": "Very large file: buildings/jarvis/jarvis-variable-catalog.js (2384 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/jarvis-variable-catalog.js (2384 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-3180dc7422f8e6a4", "name": "Very large file: buildings/jarvis/jarvis-ui.js (11250 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/jarvis-ui.js (11250 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-8f1b2c9c8d43ab54", "name": "Very large file: buildings/jarvis/viral-idea-engine.js (5775 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/viral-idea-engine.js (5775 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-7563c2a37a3b179f", "name": "Very large file: buildings/jarvis/jarvis-qrd.js (1942 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/jarvis-qrd.js (1942 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-c4bf7535424a5898", "name": "Very large file: buildings/jarvis/jarvis-metrics.js (7840 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/jarvis-metrics.js (7840 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-98332737764d3640", "name": "Very large file: buildings/jarvis/pipeline.py (7298 lines)", "shortDescription": {"text": "Very large file: buildings/jarvis/pipeline.py (7298 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-ea91800fb826e023", "name": "Very large file: buildings/pen/pen-ui.js (2819 lines)", "shortDescription": {"text": "Very large file: buildings/pen/pen-ui.js (2819 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-c59a169d7506788f", "name": "Very large file: buildings/storage/storage-ui.js (1146 lines)", "shortDescription": {"text": "Very large file: buildings/storage/storage-ui.js (1146 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-bbf4bd3de545bb18", "name": "Very large file: buildings/workshop/workshop-ui.js (2835 lines)", "shortDescription": {"text": "Very large file: buildings/workshop/workshop-ui.js (2835 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": "7 test file(s) for 169 source file(s) (ratio 0.04). 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 1098 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 108 placeholder/mock markers across 20 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci, tests. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "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-6b238261a9a82885", "name": "`fetch()` without try/.catch or AbortSignal \u2014 shorts-crawler.js:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 shorts-crawler.js:147"}, "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-7e88bd1b93b9e8c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 video-analyzer.js:126", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 video-analyzer.js:126"}, "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-bc21b9656776aca0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 auth-gate.js:532", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 auth-gate.js:532"}, "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-939cfea4e617e3da", "name": "Commented-code block (7 lines) in _generate_ideas_v3.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in _generate_ideas_v3.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-d23c46d30dcf0fbd", "name": "Legacy-named symbol `zeigarnik_theorized_v2` in _generate_zeigarnik_mechanisms.js:8", "shortDescription": {"text": "Legacy-named symbol `zeigarnik_theorized_v2` in _generate_zeigarnik_mechanisms.js:8"}, "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-6f0e538a71a54ffa", "name": "Legacy-named symbol `append_v2` in cloud-storage.js:249", "shortDescription": {"text": "Legacy-named symbol `append_v2` in cloud-storage.js:249"}, "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-dbd13913d2576c50", "name": "`fetch()` without try/.catch or AbortSignal \u2014 cloud-storage.js:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloud-storage.js:128"}, "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-ea51b33928e50e54", "name": "Legacy-named symbol `get_thumbnail_v2` in server.js:2049", "shortDescription": {"text": "Legacy-named symbol `get_thumbnail_v2` in server.js:2049"}, "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-f6505e0229bdaee9", "name": "Commented-code block (6 lines) in server.js:154", "shortDescription": {"text": "Commented-code block (6 lines) in server.js:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6214cb0a0d1c2c4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 server.js:887", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server.js:887"}, "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-9994c567875586eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 gemini-watch.js:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 gemini-watch.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-4f51bb5d6d5767cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/video-service.js:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/video-service.js:98"}, "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-9afd306e91ac4468", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/videolab/videolab-ui.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/videolab/videolab-ui.js:66"}, "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-ac9aab0e8ebc8862", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/notes-service.js:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/notes-service.js:31"}, "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-964ea052718cd52c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/library-ui.js:308", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/library-ui.js:308"}, "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-dcc33ec845083ab1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/movietheatre/movietheatre-ui.js:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/movietheatre/movietheatre-ui.js:37"}, "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-6d054e89b2495bac", "name": "Commented-code block (6 lines) in buildings/jarvis/jarvis-variable-catalog.js:716", "shortDescription": {"text": "Commented-code block (6 lines) in buildings/jarvis/jarvis-variable-catalog.js:716"}, "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-e28cbe816f1e2113", "name": "Commented-code block (5 lines) in buildings/jarvis/jarvis-runner.js:526", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-runner.js:526"}, "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-bbaf3b8166bb4075", "name": "Commented-code block (7 lines) in buildings/jarvis/jarvis-ui.js:4123", "shortDescription": {"text": "Commented-code block (7 lines) in buildings/jarvis/jarvis-ui.js:4123"}, "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-5f6ccf43fb9f75ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-ui.js:1268", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-ui.js:1268"}, "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-43b544e8feb4647b", "name": "Commented-code block (5 lines) in buildings/jarvis/concept-blueprint.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/concept-blueprint.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-c1606191f74ce9f6", "name": "Legacy-named symbol `compound_score_v2` in buildings/jarvis/viral-idea-engine.js:648", "shortDescription": {"text": "Legacy-named symbol `compound_score_v2` in buildings/jarvis/viral-idea-engine.js:648"}, "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-7b89052d68db3e7f", "name": "Commented-code block (5 lines) in buildings/jarvis/viral-idea-engine.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/viral-idea-engine.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-6a855d3974c19da9", "name": "Commented-code block (5 lines) in buildings/jarvis/jarvis-qrd.js:203", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-qrd.js:203"}, "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-5f1b74ea81947c39", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-qrd.js:977", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-qrd.js:977"}, "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-a67322a6e512b5db", "name": "Commented-code block (5 lines) in buildings/jarvis/jarvis-metrics.js:2078", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-metrics.js:2078"}, "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-f85d59e3e9530168", "name": "Commented-code block (10 lines) in buildings/jarvis/pipeline.py:6443", "shortDescription": {"text": "Commented-code block (10 lines) in buildings/jarvis/pipeline.py:6443"}, "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-d523bd2ae0283a65", "name": "Commented-code block (5 lines) in buildings/jarvis/hook-model/fix_and_validate.py:327", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/hook-model/fix_and_validate.py:327"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aafc4afaedeb3a2a", "name": "Commented-code block (7 lines) in buildings/jarvis/hook-model/featurizer.js:188", "shortDescription": {"text": "Commented-code block (7 lines) in buildings/jarvis/hook-model/featurizer.js:188"}, "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-516fd773eeb249a1", "name": "Legacy-named symbol `_gen_model_v2` in buildings/jarvis/hook-model/_gen_model_v2.js:21", "shortDescription": {"text": "Legacy-named symbol `_gen_model_v2` in buildings/jarvis/hook-model/_gen_model_v2.js:21"}, "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-0462e28e45124e10", "name": "Commented-code block (8 lines) in buildings/jarvis/hook-model/_gen_model_v2.js:34", "shortDescription": {"text": "Commented-code block (8 lines) in buildings/jarvis/hook-model/_gen_model_v2.js:34"}, "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-bcbdce2b6e02ad4f", "name": "Commented-code block (5 lines) in buildings/jarvis/tribe-analysis/analyze_video.py:117", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/tribe-analysis/analyze_video.py:117"}, "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-0479489208f1f1d7", "name": "Commented-code block (5 lines) in buildings/jarvis/qrd/playground_model.py:31", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/qrd/playground_model.py:31"}, "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-7479a1cbc3ea3de7", "name": "Commented-code block (5 lines) in buildings/jarvis/phases/_lib.js:110", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/phases/_lib.js:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb79eb622090ae15", "name": "Commented-code block (5 lines) in buildings/jarvis/phases/phase2_mechanism_extraction.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/jarvis/phases/phase2_mechanism_extraction.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6cb86dc94eb400f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/pen/pen-ui.js:901", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/pen/pen-ui.js:901"}, "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-dc81bef9bfbe286e", "name": "Commented-code block (5 lines) in buildings/storage/storage-ui.js:522", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/storage/storage-ui.js:522"}, "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-31026992e5742f2a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-agent.js:344", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-agent.js:344"}, "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-3530ee76d96595fc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-intent.js:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-intent.js:9"}, "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-a9e11bb1a5d181ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-embeddings.js:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-embeddings.js:30"}, "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-2a15d61201cb4508", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-r2.js:11", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-r2.js:11"}, "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-81af904824af6bfb", "name": "Commented-code block (6 lines) in buildings/workshop/pipeline-stages.js:256", "shortDescription": {"text": "Commented-code block (6 lines) in buildings/workshop/pipeline-stages.js:256"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e00b1a757f44475d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/pipeline-service.js:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/pipeline-service.js:42"}, "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-0fd7c50e0eb34952", "name": "Commented-code block (5 lines) in buildings/workshop/workshop-ui.js:1529", "shortDescription": {"text": "Commented-code block (5 lines) in buildings/workshop/workshop-ui.js:1529"}, "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-5d9f2e52b9ce45a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/workshop-ui.js:2216", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/workshop-ui.js:2216"}, "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-64bc033a45ab26f1", "name": "34 env vars used in code but missing from .env.example", "shortDescription": {"text": "34 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `API_READ_KEY`, `APP_URL`, `DROPBOX_ACCESS_TOKEN`, `DROPBOX_APP_KEY`, `DROPBOX_APP_SECRET`, `DROPBOX_REFRESH_TOKEN`, `DROPBOX_ROOT_PATH`, `DYLD_LIBRARY_PATH` + 26 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"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:\nbuildings/jarvis/_watcher_reset_and_prep.py:iso_now, buildings/jarvis/reset_run.py:iso_now\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/21794"}, "properties": {"repository": "tylercsatari/BusinessWorld", "repoUrl": "https://github.com/tylercsatari/BusinessWorld", "branch": "main"}, "results": [{"ruleId": "scanner-0d5b7bfa5c383553", "level": "note", "message": {"text": "Possibly dead Python function: step_theorize"}, "properties": {"repobilityId": "49c9d4efbc79b3c7", "scanner": "scanner-primary", "fingerprint": "0d5b7bfa5c383553", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/pipeline.py:4555"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b91a7e58d4b5cd4", "level": "note", "message": {"text": "Possibly dead Python function: feat_pivot"}, "properties": {"repobilityId": "a9119f2c4dbe81a3", "scanner": "scanner-primary", "fingerprint": "9b91a7e58d4b5cd4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:115"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41cc328821df62bd", "level": "note", "message": {"text": "Possibly dead Python function: feat_open_loop"}, "properties": {"repobilityId": "f4fb3326bbbeda38", "scanner": "scanner-primary", "fingerprint": "41cc328821df62bd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:116"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ab0455a7d9fbdb6", "level": "note", "message": {"text": "Possibly dead Python function: feat_proof"}, "properties": {"repobilityId": "cd0df32de15d434c", "scanner": "scanner-primary", "fingerprint": "9ab0455a7d9fbdb6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:117"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9f4a1878e1508be2", "level": "note", "message": {"text": "Possibly dead Python function: feat_contrast"}, "properties": {"repobilityId": "e86973225063bca0", "scanner": "scanner-primary", "fingerprint": "9f4a1878e1508be2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:118"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-caabcf44df6155ae", "level": "note", "message": {"text": "Possibly dead Python function: feat_action"}, "properties": {"repobilityId": "85f2f653b2f63211", "scanner": "scanner-primary", "fingerprint": "caabcf44df6155ae", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:119"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a987f9616c608cd", "level": "note", "message": {"text": "Possibly dead Python function: feat_open_loop_first_half"}, "properties": {"repobilityId": "4112282cf03c4e1d", "scanner": "scanner-primary", "fingerprint": "5a987f9616c608cd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:121"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-783717e7d6e40b69", "level": "note", "message": {"text": "Possibly dead Python function: feat_sensory"}, "properties": {"repobilityId": "7bc20f4d1007430a", "scanner": "scanner-primary", "fingerprint": "783717e7d6e40b69", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39e15d736bf6737c", "level": "note", "message": {"text": "Possibly dead Python function: feat_repeated_phrase"}, "properties": {"repobilityId": "396eef3beb34bcca", "scanner": "scanner-primary", "fingerprint": "39e15d736bf6737c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:130"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5ed3514e4046d668", "level": "note", "message": {"text": "Possibly dead Python function: feat_unique_word_ratio"}, "properties": {"repobilityId": "a74b170dcb4a0492", "scanner": "scanner-primary", "fingerprint": "5ed3514e4046d668", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:145"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-00e41f368e4dc07b", "level": "note", "message": {"text": "Possibly dead Python function: feat_hapax"}, "properties": {"repobilityId": "a679cd4cd668c1cd", "scanner": "scanner-primary", "fingerprint": "00e41f368e4dc07b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:150"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-12fd1f3921c0f7e9", "level": "note", "message": {"text": "Possibly dead Python function: feat_word_count"}, "properties": {"repobilityId": "984d33faed210fdc", "scanner": "scanner-primary", "fingerprint": "12fd1f3921c0f7e9", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:161"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8555890b2d5118fd", "level": "note", "message": {"text": "Possibly dead Python function: feat_hook_word_ratio"}, "properties": {"repobilityId": "d5419935b0c2d86a", "scanner": "scanner-primary", "fingerprint": "8555890b2d5118fd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:168"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-03114ca6993482fd", "level": "note", "message": {"text": "Possibly dead Python function: feat_hook_phrase_diversity"}, "properties": {"repobilityId": "86bf3830c209355a", "scanner": "scanner-primary", "fingerprint": "03114ca6993482fd", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:174"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a96d8ea69f38f1c", "level": "note", "message": {"text": "Possibly dead Python function: feat_anticipation"}, "properties": {"repobilityId": "56f7b5a28d1df2a4", "scanner": "scanner-primary", "fingerprint": "0a96d8ea69f38f1c", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/hook-model/train.py:183"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c3c76f9b19790c3d", "level": "note", "message": {"text": "Possibly dead Python function: key"}, "properties": {"repobilityId": "82ad9f64418e6fec", "scanner": "scanner-primary", "fingerprint": "c3c76f9b19790c3d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/qrd/playground_model.py:56"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f34d45c3afe8376e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-webgl-check.js:39"}, "properties": {"repobilityId": "e9db325047a22a92", "scanner": "scanner-primary", "fingerprint": "f34d45c3afe8376e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a72974f11e72191", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _write_doc2_v2.js:14"}, "properties": {"repobilityId": "fb28a237ac53c85d", "scanner": "scanner-primary", "fingerprint": "3a72974f11e72191", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64a7e3ef2c470e8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _r2_check2.js:22"}, "properties": {"repobilityId": "ee9a0df8f87393fc", "scanner": "scanner-primary", "fingerprint": "64a7e3ef2c470e8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aef978e4dc6e00c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 shorts-crawler.js:78"}, "properties": {"repobilityId": "85617cb98cb88dde", "scanner": "scanner-primary", "fingerprint": "aef978e4dc6e00c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-814943e795eaf0c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 video-analyzer.js:189"}, "properties": {"repobilityId": "f02619249a0190ef", "scanner": "scanner-primary", "fingerprint": "814943e795eaf0c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09262d2ae134a7a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _classify_shorts.js:19"}, "properties": {"repobilityId": "a3b4c5e230473682", "scanner": "scanner-primary", "fingerprint": "09262d2ae134a7a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-350c88d65c3e020b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 auth-gate.js:485"}, "properties": {"repobilityId": "7e7df3fc5491a253", "scanner": "scanner-primary", "fingerprint": "350c88d65c3e020b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-8942d6886b5cf9d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _cluster_principles.js:63"}, "properties": {"repobilityId": "28c6951e3fdcf818", "scanner": "scanner-primary", "fingerprint": "8942d6886b5cf9d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f65ef4fa39458ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _generate_ideas_v3.js:46"}, "properties": {"repobilityId": "029c4a430c95b8a8", "scanner": "scanner-primary", "fingerprint": "3f65ef4fa39458ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cae1e4d148280a77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _render_principles_friendly.js:98"}, "properties": {"repobilityId": "f26f42c33ef3a30f", "scanner": "scanner-primary", "fingerprint": "cae1e4d148280a77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-818c558263a80f73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sync-jarvis-to-r2.js:21"}, "properties": {"repobilityId": "2d74e0d2e3daf20c", "scanner": "scanner-primary", "fingerprint": "818c558263a80f73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2788e2c91686b8dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _match_by_transcript.js:80"}, "properties": {"repobilityId": "08da1072807f90f9", "scanner": "scanner-primary", "fingerprint": "2788e2c91686b8dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-342c046b44b03e78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-game.js:11"}, "properties": {"repobilityId": "f3eb67a47489dbc3", "scanner": "scanner-primary", "fingerprint": "342c046b44b03e78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7534baba712d75d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-v2.js:11"}, "properties": {"repobilityId": "49456826017b842f", "scanner": "scanner-primary", "fingerprint": "d7534baba712d75d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ba48e53ac451645", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _generate_zeigarnik_mechanisms.js:17"}, "properties": {"repobilityId": "7cfd85827fd6266e", "scanner": "scanner-primary", "fingerprint": "0ba48e53ac451645", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1c692da044dfbea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 swipe-scraper.js:44"}, "properties": {"repobilityId": "178397387dd64131", "scanner": "scanner-primary", "fingerprint": "c1c692da044dfbea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc4559e40d31b5b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _generate_v3.js:16"}, "properties": {"repobilityId": "f732387a64c80d1f", "scanner": "scanner-primary", "fingerprint": "bc4559e40d31b5b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab89db7924fbcbef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 cloud-storage.js:40"}, "properties": {"repobilityId": "54e7e5ad2eec5338", "scanner": "scanner-primary", "fingerprint": "ab89db7924fbcbef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-afa16c0319d742f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _build_compact_graph.js:12"}, "properties": {"repobilityId": "b933ac3190b10186", "scanner": "scanner-primary", "fingerprint": "afa16c0319d742f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63e51c5c8238d906", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 server.js:307"}, "properties": {"repobilityId": "a9deebb5fdc93edc", "scanner": "scanner-primary", "fingerprint": "63e51c5c8238d906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbf6a45d17a825c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 fetch_transactions.js:37"}, "properties": {"repobilityId": "eeba7cc95508d520", "scanner": "scanner-primary", "fingerprint": "bbf6a45d17a825c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd25e79f7f4e7a75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _write_doc2.js:19"}, "properties": {"repobilityId": "81d096469fae5018", "scanner": "scanner-primary", "fingerprint": "dd25e79f7f4e7a75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd0fa3811935c85c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 pull_transactions.js:12"}, "properties": {"repobilityId": "e6bc7ab7f89d52b6", "scanner": "scanner-primary", "fingerprint": "fd0fa3811935c85c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfe60ad5c28a477f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _create_davinci_stack_note.js:105"}, "properties": {"repobilityId": "a421cdd0f53220a9", "scanner": "scanner-primary", "fingerprint": "bfe60ad5c28a477f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c7126f6e4c512fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _extract_principles.js:24"}, "properties": {"repobilityId": "d1e6af736aedb9ac", "scanner": "scanner-primary", "fingerprint": "2c7126f6e4c512fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e36bc360ba16a07b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _match_channel_to_pen.js:71"}, "properties": {"repobilityId": "666f6b1923c6f77d", "scanner": "scanner-primary", "fingerprint": "e36bc360ba16a07b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb3e4de1fca4a656", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _r2_check_counts.js:17"}, "properties": {"repobilityId": "799a299dc8af4489", "scanner": "scanner-primary", "fingerprint": "cb3e4de1fca4a656", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e4c512a9050d297", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _classify_22_mechanisms.js:16"}, "properties": {"repobilityId": "b27aebfee4bbde2f", "scanner": "scanner-primary", "fingerprint": "4e4c512a9050d297", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9453fb39f75cd8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 _watcher_r2_live.js:9"}, "properties": {"repobilityId": "2e562a6e9e58116d", "scanner": "scanner-primary", "fingerprint": "c9453fb39f75cd8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f41e653393fbe4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/library/library-ui.js:2596"}, "properties": {"repobilityId": "18b65772a78e4381", "scanner": "scanner-primary", "fingerprint": "2f41e653393fbe4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00d10e3bab63d5a8", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 buildings/gym/gym-ui.js:1455"}, "properties": {"repobilityId": "35802b8fb31d5a3d", "scanner": "scanner-primary", "fingerprint": "00d10e3bab63d5a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-2ca2e0b002e78d6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/gym/gym-service.js:196"}, "properties": {"repobilityId": "95433c00f38567f7", "scanner": "scanner-primary", "fingerprint": "2ca2e0b002e78d6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea5b124988ec444d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/rebuild-candidate-queue.js:34"}, "properties": {"repobilityId": "79c17441ec94bf45", "scanner": "scanner-primary", "fingerprint": "ea5b124988ec444d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37f0cf013a3b210d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_runs_progress.js:11"}, "properties": {"repobilityId": "1a38fd8cb36b1d1e", "scanner": "scanner-primary", "fingerprint": "37f0cf013a3b210d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb6c60e828deefbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_progress_only.js:8"}, "properties": {"repobilityId": "57843c193c2a643c", "scanner": "scanner-primary", "fingerprint": "bb6c60e828deefbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52bc392c2b6026b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_small_files.js:14"}, "properties": {"repobilityId": "388f52d3e8c74aa6", "scanner": "scanner-primary", "fingerprint": "52bc392c2b6026b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6223cb0bde52b72f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-runner.js:22"}, "properties": {"repobilityId": "31d3b459d47d27a7", "scanner": "scanner-primary", "fingerprint": "6223cb0bde52b72f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abcb920e327bb3c7", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 buildings/jarvis/jarvis-ui.js:361"}, "properties": {"repobilityId": "70c7941592ac6b20", "scanner": "scanner-primary", "fingerprint": "abcb920e327bb3c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-0b2657f03e9dd6f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_quick_r2_verify.js:8"}, "properties": {"repobilityId": "dacf8b5f27e4236c", "scanner": "scanner-primary", "fingerprint": "0b2657f03e9dd6f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72943a575637f774", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_pull_r2.js:21"}, "properties": {"repobilityId": "497c7c048b51ceb5", "scanner": "scanner-primary", "fingerprint": "72943a575637f774", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b6cf9f0a1a3268c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/verify-r2.js:8"}, "properties": {"repobilityId": "c41217ab16fb9adf", "scanner": "scanner-primary", "fingerprint": "3b6cf9f0a1a3268c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a83baea336b94bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining_files.js:27"}, "properties": {"repobilityId": "0a563f3fed8fbe41", "scanner": "scanner-primary", "fingerprint": "7a83baea336b94bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bb3b2ffbbc86b08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_light.js:9"}, "properties": {"repobilityId": "8b3b984e0b31b96d", "scanner": "scanner-primary", "fingerprint": "6bb3b2ffbbc86b08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40757a97e2cd2a76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/cleanup-llm-metrics.js:87"}, "properties": {"repobilityId": "173dcbed95db6cf6", "scanner": "scanner-primary", "fingerprint": "40757a97e2cd2a76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b68988654c5e451", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_graph_only.js:13"}, "properties": {"repobilityId": "5b7c48d06fe4c508", "scanner": "scanner-primary", "fingerprint": "6b68988654c5e451", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cdeb1654a78c0a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_check.js:9"}, "properties": {"repobilityId": "e12bccc3e8d4f87a", "scanner": "scanner-primary", "fingerprint": "1cdeb1654a78c0a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-410981ca3663c715", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check2.js:10"}, "properties": {"repobilityId": "ee64267687ad334e", "scanner": "scanner-primary", "fingerprint": "410981ca3663c715", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ab1d367e1bf2c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_count_local.js:9"}, "properties": {"repobilityId": "9f34b978f48535d5", "scanner": "scanner-primary", "fingerprint": "5ab1d367e1bf2c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-868bda7be46ed4a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/analysis_engine.js:931"}, "properties": {"repobilityId": "180088484802f543", "scanner": "scanner-primary", "fingerprint": "868bda7be46ed4a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94f5d32e692f6652", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-to-r2.js:58"}, "properties": {"repobilityId": "e795970aa70daa8c", "scanner": "scanner-primary", "fingerprint": "94f5d32e692f6652", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7f0eed0089b562c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_compact_only.js:16"}, "properties": {"repobilityId": "9ca6180a94205af4", "scanner": "scanner-primary", "fingerprint": "e7f0eed0089b562c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c568ef7e6d7f29c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/upload-tribe-to-r2.js:45"}, "properties": {"repobilityId": "3e7894976519f424", "scanner": "scanner-primary", "fingerprint": "1c568ef7e6d7f29c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af94ab0c711b4b2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_queue_only.js:16"}, "properties": {"repobilityId": "51acb78917cb7bf2", "scanner": "scanner-primary", "fingerprint": "af94ab0c711b4b2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0972e6538d11921", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_live_check.js:9"}, "properties": {"repobilityId": "aeebd9d349af0aac", "scanner": "scanner-primary", "fingerprint": "c0972e6538d11921", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e36ddf13aa9c70d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_local_state.js:11"}, "properties": {"repobilityId": "a9b1a6481ec98d16", "scanner": "scanner-primary", "fingerprint": "e36ddf13aa9c70d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9bad4963103d03a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_tmp_r2_check.js:9"}, "properties": {"repobilityId": "2e8d8a766408feb6", "scanner": "scanner-primary", "fingerprint": "f9bad4963103d03a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acb101e9980024c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-node-autorun.js:18"}, "properties": {"repobilityId": "fb32cf67426e5531", "scanner": "scanner-primary", "fingerprint": "acb101e9980024c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4f2a7f143ad491b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_now.js:33"}, "properties": {"repobilityId": "fe1da8a8e284fa12", "scanner": "scanner-primary", "fingerprint": "d4f2a7f143ad491b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27f1b91a8ba262e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_canonical_to_r2.js:8"}, "properties": {"repobilityId": "b79b99e51208bbee", "scanner": "scanner-primary", "fingerprint": "27f1b91a8ba262e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d85479334ffe2a03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_now.js:9"}, "properties": {"repobilityId": "a7e9b6ee18c02252", "scanner": "scanner-primary", "fingerprint": "d85479334ffe2a03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-382254f5592c22da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_reset_and_sync.js:25"}, "properties": {"repobilityId": "9fac02d2e9e3bab9", "scanner": "scanner-primary", "fingerprint": "382254f5592c22da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36a6d5227b4aae0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_sizes.js:52"}, "properties": {"repobilityId": "dbf5ec827338dbc2", "scanner": "scanner-primary", "fingerprint": "36a6d5227b4aae0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-859c6c8fa3b2c5ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_key_files.js:33"}, "properties": {"repobilityId": "e2e8582ba035de66", "scanner": "scanner-primary", "fingerprint": "859c6c8fa3b2c5ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17ea061771f7a6bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live_counts.js:8"}, "properties": {"repobilityId": "ba2e4fa96b79f40e", "scanner": "scanner-primary", "fingerprint": "17ea061771f7a6bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6a9e31b7228f98d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_counts.js:9"}, "properties": {"repobilityId": "0e03562b3de57411", "scanner": "scanner-primary", "fingerprint": "b6a9e31b7228f98d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a4f7f653bcc3f97", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/sync-ideas-to-r2.js:27"}, "properties": {"repobilityId": "457f97617bcee25d", "scanner": "scanner-primary", "fingerprint": "9a4f7f653bcc3f97", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e031c12c71509e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_r2_status_check.js:9"}, "properties": {"repobilityId": "0233737b186cb33d", "scanner": "scanner-primary", "fingerprint": "6e031c12c71509e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cb5659a7862c1e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/run-autorun-now.js:5"}, "properties": {"repobilityId": "c167bd2aea6b56d2", "scanner": "scanner-primary", "fingerprint": "1cb5659a7862c1e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13e9f7ebfbb0130d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2.js:8"}, "properties": {"repobilityId": "4105e8c1f3422f36", "scanner": "scanner-primary", "fingerprint": "13e9f7ebfbb0130d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-322f8241d225ab0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_cron_r2_status.js:9"}, "properties": {"repobilityId": "ef088cefdd25437f", "scanner": "scanner-primary", "fingerprint": "322f8241d225ab0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c5d686e6eb7bcb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_check_r2_live.js:9"}, "properties": {"repobilityId": "74623e9eb9b54ac6", "scanner": "scanner-primary", "fingerprint": "9c5d686e6eb7bcb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fd59b508a95e4ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_remaining.js:14"}, "properties": {"repobilityId": "e5f9b4aaac09fa64", "scanner": "scanner-primary", "fingerprint": "5fd59b508a95e4ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0dc7aae37aa171d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_launch_overnight.js:11"}, "properties": {"repobilityId": "0791c609a52debd1", "scanner": "scanner-primary", "fingerprint": "c0dc7aae37aa171d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4f211de5cd443cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/launch-autorun.js:11"}, "properties": {"repobilityId": "292e83a0c391ea36", "scanner": "scanner-primary", "fingerprint": "a4f211de5cd443cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdf4fbe6cb14c73c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/jarvis-store.js:286"}, "properties": {"repobilityId": "15477713813b1912", "scanner": "scanner-primary", "fingerprint": "fdf4fbe6cb14c73c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb54eadae6c6ab73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_watcher_check.js:63"}, "properties": {"repobilityId": "bc75d7d52f7e2e83", "scanner": "scanner-primary", "fingerprint": "cb54eadae6c6ab73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db9d7becb5930f7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/_sync_progress_now.js:13"}, "properties": {"repobilityId": "6b0bdec5c00dca87", "scanner": "scanner-primary", "fingerprint": "db9d7becb5930f7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56988c811e4e6f33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_rebuild_model_v2.js:87"}, "properties": {"repobilityId": "400fec9029155c68", "scanner": "scanner-primary", "fingerprint": "56988c811e4e6f33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc9ca4131f484c41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_pre_correlations.js:36"}, "properties": {"repobilityId": "1dba5ad3cf8d3341", "scanner": "scanner-primary", "fingerprint": "cc9ca4131f484c41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4eeb7b61fc77c562", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_pre_post_correlations.js:36"}, "properties": {"repobilityId": "28d7b6cb5694ccd6", "scanner": "scanner-primary", "fingerprint": "4eeb7b61fc77c562", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eafb15b8cb606b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_validate.js:94"}, "properties": {"repobilityId": "c572aea51d8f2350", "scanner": "scanner-primary", "fingerprint": "2eafb15b8cb606b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7d933e588ae755b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_post_indicators.js:76"}, "properties": {"repobilityId": "39890fd0e0ba1d34", "scanner": "scanner-primary", "fingerprint": "a7d933e588ae755b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49ed1d6d579a8a63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_compute_feature_stats.js:23"}, "properties": {"repobilityId": "6b2a9dc25ef1641b", "scanner": "scanner-primary", "fingerprint": "49ed1d6d579a8a63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7276378ca2cfeb6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/hook-model/_gen_model_v2.js:175"}, "properties": {"repobilityId": "32dcfdf7e53d35c7", "scanner": "scanner-primary", "fingerprint": "b7276378ca2cfeb6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b55a84753ba7ea1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase3_component_emergence.js:49"}, "properties": {"repobilityId": "ccd7f854cfd94fac", "scanner": "scanner-primary", "fingerprint": "b55a84753ba7ea1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59901f341ebb26ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase4_principle_candidates.js:89"}, "properties": {"repobilityId": "c3aef8b36968a64f", "scanner": "scanner-primary", "fingerprint": "59901f341ebb26ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d59d646358c003fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase2_mechanism_extraction.js:257"}, "properties": {"repobilityId": "b343081aad4f75a9", "scanner": "scanner-primary", "fingerprint": "d59d646358c003fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6424412899fddbfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase5_bridge_validation.js:167"}, "properties": {"repobilityId": "6c631816f4714e75", "scanner": "scanner-primary", "fingerprint": "6424412899fddbfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8bd249fe7ae540d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase6_persist.js:27"}, "properties": {"repobilityId": "8de25c494d4cdd9c", "scanner": "scanner-primary", "fingerprint": "8bd249fe7ae540d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9fc4e9c286efbdd5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/jarvis/phases/phase1_init.js:153"}, "properties": {"repobilityId": "1f98d08880b328ac", "scanner": "scanner-primary", "fingerprint": "9fc4e9c286efbdd5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6c5242f510153bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 buildings/pen/pen-ui.js:900"}, "properties": {"repobilityId": "7187af12a825ac36", "scanner": "scanner-primary", "fingerprint": "d6c5242f510153bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28907b92d1c20d6d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 buildings/storage/storage-ui.js:169"}, "properties": {"repobilityId": "0bab991978278984", "scanner": "scanner-primary", "fingerprint": "28907b92d1c20d6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-debe252e682f5209", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 buildings/workshop/workshop-ui.js:236"}, "properties": {"repobilityId": "1baa732c02becaef", "scanner": "scanner-primary", "fingerprint": "debe252e682f5209", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-bca5e0c5c5e7826b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 test-screenshots/final/test-runner.js:11"}, "properties": {"repobilityId": "81a96fa744e59786", "scanner": "scanner-primary", "fingerprint": "bca5e0c5c5e7826b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b3696377522bbe8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/r2_live_check.js:24"}, "properties": {"repobilityId": "6d2b402066fa049c", "scanner": "scanner-primary", "fingerprint": "8b3696377522bbe8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbace87f7ed76ef1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/r2_check.js:17"}, "properties": {"repobilityId": "1d3fc32dc7a6e89e", "scanner": "scanner-primary", "fingerprint": "bbace87f7ed76ef1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ebbb77829b46a587", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_signature_verify.js:3"}, "properties": {"repobilityId": "10e6cb944ef1f2f1", "scanner": "scanner-primary", "fingerprint": "ebbb77829b46a587", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af3c0f150158a96e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/check_phrase_coverage.js:20"}, "properties": {"repobilityId": "346fae458ae40547", "scanner": "scanner-primary", "fingerprint": "af3c0f150158a96e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f734d4c7784f33b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_premise_alias_verify.js:3"}, "properties": {"repobilityId": "d45216048545472b", "scanner": "scanner-primary", "fingerprint": "f734d4c7784f33b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db68542bc96a1ebd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tmp/jarvis_verify.js:3"}, "properties": {"repobilityId": "30efc27dd2c18c12", "scanner": "scanner-primary", "fingerprint": "db68542bc96a1ebd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6cd08fa8d1eb4b0", "level": "warning", "message": {"text": "Analyzer timeout: security.gitleaks"}, "properties": {"repobilityId": "err::timeout::security.gitleaks", "scanner": "scanner-primary", "fingerprint": "f6cd08fa8d1eb4b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["analyzer-error", "timeout"]}}, {"ruleId": "scanner-9026a5a756fde8f4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pipeline.html:142"}, "properties": {"repobilityId": "886c543a56bd7d15", "scanner": "scanner-primary", "fingerprint": "9026a5a756fde8f4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pipeline.html"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-e8d25b2e7e6469c0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in shorts-crawler.js:5"}, "properties": {"repobilityId": "42f3022dd7491942", "scanner": "scanner-primary", "fingerprint": "e8d25b2e7e6469c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "shorts-crawler.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-00e1166d56e64936", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in video-analyzer.js:6"}, "properties": {"repobilityId": "351d88f797eceb2e", "scanner": "scanner-primary", "fingerprint": "00e1166d56e64936", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "video-analyzer.js"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-903096f8027461f5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth-gate.js:34"}, "properties": {"repobilityId": "4371f0e90f0b15d6", "scanner": "scanner-primary", "fingerprint": "903096f8027461f5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth-gate.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-c02919561a095761", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in index.html:2980"}, "properties": {"repobilityId": "f91708437a3a5445", "scanner": "scanner-primary", "fingerprint": "c02919561a095761", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "index.html"}, "region": {"startLine": 2980}}}]}, {"ruleId": "scanner-d67d13b9e307e214", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in videolab-coordinator.js:15"}, "properties": {"repobilityId": "0b5fa0c67b346870", "scanner": "scanner-primary", "fingerprint": "d67d13b9e307e214", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "videolab-coordinator.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-8a3c78ad0306eb2e", "level": "error", "message": {"text": "Insecure pattern 'exec_used' in server.js:1243"}, "properties": {"repobilityId": "b39c750257fe94e1", "scanner": "scanner-primary", "fingerprint": "8a3c78ad0306eb2e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "exec_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.js"}, "region": {"startLine": 1243}}}]}, {"ruleId": "scanner-260fcaadd7f117f6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in server.js:33"}, "properties": {"repobilityId": "23f3ba0b6e438ed3", "scanner": "scanner-primary", "fingerprint": "260fcaadd7f117f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-bec492b98e7ad26c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in server.js:467"}, "properties": {"repobilityId": "0d9bca6c0839725e", "scanner": "scanner-primary", "fingerprint": "bec492b98e7ad26c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "server.js"}, "region": {"startLine": 467}}}]}, {"ruleId": "scanner-fcb7010bc3e5f4c3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/egg-renderer.js:169"}, "properties": {"repobilityId": "721624ca3163a2bc", "scanner": "scanner-primary", "fingerprint": "fcb7010bc3e5f4c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/egg-renderer.js"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-0d5c074dab5c5e09", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/videolab/videolab-ui.js:58"}, "properties": {"repobilityId": "20d2b948578c2451", "scanner": "scanner-primary", "fingerprint": "0d5c074dab5c5e09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/videolab/videolab-ui.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-0db2eac06c8b7efc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/library-ui.js:122"}, "properties": {"repobilityId": "7aa6c4cc85943008", "scanner": "scanner-primary", "fingerprint": "0db2eac06c8b7efc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/library/library-ui.js"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-f3efa1061824e24e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/library/dag-flowchart.js:423"}, "properties": {"repobilityId": "19abfed169de934c", "scanner": "scanner-primary", "fingerprint": "f3efa1061824e24e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/library/dag-flowchart.js"}, "region": {"startLine": 423}}}]}, {"ruleId": "scanner-9abe389169bb36bf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/movietheatre/movietheatre-ui.js:174"}, "properties": {"repobilityId": "dbd20f8306479356", "scanner": "scanner-primary", "fingerprint": "9abe389169bb36bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/movietheatre/movietheatre-ui.js"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-2997627d20158482", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/research/research-ui.js:214"}, "properties": {"repobilityId": "b37b23bba6cb9327", "scanner": "scanner-primary", "fingerprint": "2997627d20158482", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/research/research-ui.js"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-dc03c887b3e5193a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/gym/gym-ui.js:150"}, "properties": {"repobilityId": "284cbe3d355ed41a", "scanner": "scanner-primary", "fingerprint": "dc03c887b3e5193a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/gym/gym-ui.js"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-b920c8d23415b4fb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/chocolatebar/chocolatebar-ui.js:667"}, "properties": {"repobilityId": "4e4e8b53534d10a4", "scanner": "scanner-primary", "fingerprint": "b920c8d23415b4fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/chocolatebar/chocolatebar-ui.js"}, "region": {"startLine": 667}}}]}, {"ruleId": "scanner-c7f06fde6aba9c17", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/finance/finance-ui.js:843"}, "properties": {"repobilityId": "412d0ebf12031dbc", "scanner": "scanner-primary", "fingerprint": "c7f06fde6aba9c17", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/finance/finance-ui.js"}, "region": {"startLine": 843}}}]}, {"ruleId": "scanner-56609bc105a6c0a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/employee/employee-ui.js:16"}, "properties": {"repobilityId": "915e9e2d2dcca809", "scanner": "scanner-primary", "fingerprint": "56609bc105a6c0a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/employee/employee-ui.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-e79194f9a85372dd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-ui.js:186"}, "properties": {"repobilityId": "1be6a9727a7550a1", "scanner": "scanner-primary", "fingerprint": "e79194f9a85372dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/jarvis-ui.js"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-3beb84ef415b6121", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-quant2.js:404"}, "properties": {"repobilityId": "5f00fed2c3b2f236", "scanner": "scanner-primary", "fingerprint": "3beb84ef415b6121", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/jarvis-quant2.js"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-24f38e6d0c98d038", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in buildings/jarvis/_cron_reset_and_sync.js:35"}, "properties": {"repobilityId": "c9337dd75a55cccb", "scanner": "scanner-primary", "fingerprint": "24f38e6d0c98d038", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/_cron_reset_and_sync.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-8b33cd573f3a829e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in buildings/jarvis/overnight_orchestrator.js:18"}, "properties": {"repobilityId": "c3d7ff0e3aa1c8f1", "scanner": "scanner-primary", "fingerprint": "8b33cd573f3a829e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/overnight_orchestrator.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-0d0d142587b53c67", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/jarvis/jarvis-qrd.js:1886"}, "properties": {"repobilityId": "83f4d387ecca31d4", "scanner": "scanner-primary", "fingerprint": "0d0d142587b53c67", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/jarvis/jarvis-qrd.js"}, "region": {"startLine": 1886}}}]}, {"ruleId": "scanner-af9c8279db84e385", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/pen/pen-ui.js:89"}, "properties": {"repobilityId": "b41e3c66917739c0", "scanner": "scanner-primary", "fingerprint": "af9c8279db84e385", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/pen/pen-ui.js"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-a25e9024070cf734", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in buildings/pen/pen-ui.js:2384"}, "properties": {"repobilityId": "729729fd04958342", "scanner": "scanner-primary", "fingerprint": "a25e9024070cf734", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/pen/pen-ui.js"}, "region": {"startLine": 2384}}}]}, {"ruleId": "scanner-2d33c35f953530c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/storage/storage-ui.js:74"}, "properties": {"repobilityId": "fbdaa6abdcfa92fe", "scanner": "scanner-primary", "fingerprint": "2d33c35f953530c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/storage/storage-ui.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-df1295b27b8c214d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in buildings/workshop/workshop-ui.js:212"}, "properties": {"repobilityId": "9e94abbd5e0119d0", "scanner": "scanner-primary", "fingerprint": "df1295b27b8c214d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "buildings/workshop/workshop-ui.js"}, "region": {"startLine": 212}}}]}, {"ruleId": "scanner-9a2e7cbd009e017f", "level": "note", "message": {"text": "Very large file: server.js (6614 lines)"}, "properties": {"repobilityId": "1479ba50e708c5c1", "scanner": "scanner-primary", "fingerprint": "9a2e7cbd009e017f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3e819e5172b781d8", "level": "note", "message": {"text": "Very large file: buildings/library/library-ui.js (5749 lines)"}, "properties": {"repobilityId": "5134d7778f08a770", "scanner": "scanner-primary", "fingerprint": "3e819e5172b781d8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a44d821957a4845", "level": "note", "message": {"text": "Very large file: buildings/gym/gym-ui.js (1712 lines)"}, "properties": {"repobilityId": "8ce6b94d2c2e77bd", "scanner": "scanner-primary", "fingerprint": "3a44d821957a4845", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1bd2d706316e2299", "level": "note", "message": {"text": "Very large file: buildings/jarvis/jarvis-variable-catalog.js (2384 lines)"}, "properties": {"repobilityId": "d6a02b0a6c8e932b", "scanner": "scanner-primary", "fingerprint": "1bd2d706316e2299", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3180dc7422f8e6a4", "level": "note", "message": {"text": "Very large file: buildings/jarvis/jarvis-ui.js (11250 lines)"}, "properties": {"repobilityId": "fb6eb7889589397b", "scanner": "scanner-primary", "fingerprint": "3180dc7422f8e6a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8f1b2c9c8d43ab54", "level": "note", "message": {"text": "Very large file: buildings/jarvis/viral-idea-engine.js (5775 lines)"}, "properties": {"repobilityId": "14cd5088845ef4ad", "scanner": "scanner-primary", "fingerprint": "8f1b2c9c8d43ab54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7563c2a37a3b179f", "level": "note", "message": {"text": "Very large file: buildings/jarvis/jarvis-qrd.js (1942 lines)"}, "properties": {"repobilityId": "4039cda710c9fe3a", "scanner": "scanner-primary", "fingerprint": "7563c2a37a3b179f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c4bf7535424a5898", "level": "note", "message": {"text": "Very large file: buildings/jarvis/jarvis-metrics.js (7840 lines)"}, "properties": {"repobilityId": "c6b7a2bebaeb9e43", "scanner": "scanner-primary", "fingerprint": "c4bf7535424a5898", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-98332737764d3640", "level": "note", "message": {"text": "Very large file: buildings/jarvis/pipeline.py (7298 lines)"}, "properties": {"repobilityId": "7e95da8270ceb2f5", "scanner": "scanner-primary", "fingerprint": "98332737764d3640", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea91800fb826e023", "level": "note", "message": {"text": "Very large file: buildings/pen/pen-ui.js (2819 lines)"}, "properties": {"repobilityId": "6b0a44357e86300e", "scanner": "scanner-primary", "fingerprint": "ea91800fb826e023", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c59a169d7506788f", "level": "note", "message": {"text": "Very large file: buildings/storage/storage-ui.js (1146 lines)"}, "properties": {"repobilityId": "68d7233bb34f99fd", "scanner": "scanner-primary", "fingerprint": "c59a169d7506788f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bbf4bd3de545bb18", "level": "note", "message": {"text": "Very large file: buildings/workshop/workshop-ui.js (2835 lines)"}, "properties": {"repobilityId": "5b67bd1f7e5e0fb9", "scanner": "scanner-primary", "fingerprint": "bbf4bd3de545bb18", "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": "b50b34e5b9d7bee9", "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": "376e8e4e75f558af", "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": "aceca639f60d2ebf", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "f95a4419b2a3a6ca", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "bd72ee53157a544b", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "31ec28776eeb0c58", "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": "9e79cba379d3f92f", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-6b238261a9a82885", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 shorts-crawler.js:147"}, "properties": {"repobilityId": "55b2ba85bdd4054a", "scanner": "scanner-primary", "fingerprint": "6b238261a9a82885", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e88bd1b93b9e8c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 video-analyzer.js:126"}, "properties": {"repobilityId": "7c313d13f757a128", "scanner": "scanner-primary", "fingerprint": "7e88bd1b93b9e8c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bc21b9656776aca0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 auth-gate.js:532"}, "properties": {"repobilityId": "8ee4b5ee2ce97596", "scanner": "scanner-primary", "fingerprint": "bc21b9656776aca0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-939cfea4e617e3da", "level": "none", "message": {"text": "Commented-code block (7 lines) in _generate_ideas_v3.js:7"}, "properties": {"repobilityId": "25a0b8fcbabcea6e", "scanner": "scanner-primary", "fingerprint": "939cfea4e617e3da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d23c46d30dcf0fbd", "level": "note", "message": {"text": "Legacy-named symbol `zeigarnik_theorized_v2` in _generate_zeigarnik_mechanisms.js:8"}, "properties": {"repobilityId": "b8453737e27b6af8", "scanner": "scanner-primary", "fingerprint": "d23c46d30dcf0fbd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6f0e538a71a54ffa", "level": "note", "message": {"text": "Legacy-named symbol `append_v2` in cloud-storage.js:249"}, "properties": {"repobilityId": "1fb6e40ecabd5805", "scanner": "scanner-primary", "fingerprint": "6f0e538a71a54ffa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dbd13913d2576c50", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 cloud-storage.js:128"}, "properties": {"repobilityId": "8fd76ee402bbefc5", "scanner": "scanner-primary", "fingerprint": "dbd13913d2576c50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea51b33928e50e54", "level": "note", "message": {"text": "Legacy-named symbol `get_thumbnail_v2` in server.js:2049"}, "properties": {"repobilityId": "36ac4bb7f49e23f1", "scanner": "scanner-primary", "fingerprint": "ea51b33928e50e54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f6505e0229bdaee9", "level": "none", "message": {"text": "Commented-code block (6 lines) in server.js:154"}, "properties": {"repobilityId": "7d988742e3bbb7b0", "scanner": "scanner-primary", "fingerprint": "f6505e0229bdaee9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6214cb0a0d1c2c4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 server.js:887"}, "properties": {"repobilityId": "48358e40d15cf7cc", "scanner": "scanner-primary", "fingerprint": "6214cb0a0d1c2c4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9994c567875586eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 gemini-watch.js:53"}, "properties": {"repobilityId": "be7cd37ccf2a379f", "scanner": "scanner-primary", "fingerprint": "9994c567875586eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f51bb5d6d5767cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/video-service.js:98"}, "properties": {"repobilityId": "46302350afecb275", "scanner": "scanner-primary", "fingerprint": "4f51bb5d6d5767cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9afd306e91ac4468", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/videolab/videolab-ui.js:66"}, "properties": {"repobilityId": "d7e8bd04b9fb87bb", "scanner": "scanner-primary", "fingerprint": "9afd306e91ac4468", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac9aab0e8ebc8862", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/notes-service.js:31"}, "properties": {"repobilityId": "ddb38632d0133e62", "scanner": "scanner-primary", "fingerprint": "ac9aab0e8ebc8862", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-964ea052718cd52c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/library/library-ui.js:308"}, "properties": {"repobilityId": "a7c30b990ef520ec", "scanner": "scanner-primary", "fingerprint": "964ea052718cd52c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dcc33ec845083ab1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/movietheatre/movietheatre-ui.js:37"}, "properties": {"repobilityId": "ddef44bf6a664c11", "scanner": "scanner-primary", "fingerprint": "dcc33ec845083ab1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d054e89b2495bac", "level": "none", "message": {"text": "Commented-code block (6 lines) in buildings/jarvis/jarvis-variable-catalog.js:716"}, "properties": {"repobilityId": "7fcf08bd6f8b091e", "scanner": "scanner-primary", "fingerprint": "6d054e89b2495bac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e28cbe816f1e2113", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-runner.js:526"}, "properties": {"repobilityId": "04c0104052447d8f", "scanner": "scanner-primary", "fingerprint": "e28cbe816f1e2113", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbaf3b8166bb4075", "level": "none", "message": {"text": "Commented-code block (7 lines) in buildings/jarvis/jarvis-ui.js:4123"}, "properties": {"repobilityId": "b17f61855024e41d", "scanner": "scanner-primary", "fingerprint": "bbaf3b8166bb4075", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f6ccf43fb9f75ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-ui.js:1268"}, "properties": {"repobilityId": "f9fe61782f7e1755", "scanner": "scanner-primary", "fingerprint": "5f6ccf43fb9f75ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43b544e8feb4647b", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/concept-blueprint.js:3"}, "properties": {"repobilityId": "a871c22710dfc389", "scanner": "scanner-primary", "fingerprint": "43b544e8feb4647b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1606191f74ce9f6", "level": "note", "message": {"text": "Legacy-named symbol `compound_score_v2` in buildings/jarvis/viral-idea-engine.js:648"}, "properties": {"repobilityId": "87f48e34244f3ec7", "scanner": "scanner-primary", "fingerprint": "c1606191f74ce9f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7b89052d68db3e7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/viral-idea-engine.js:3"}, "properties": {"repobilityId": "fc8a089d62dc54ee", "scanner": "scanner-primary", "fingerprint": "7b89052d68db3e7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a855d3974c19da9", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-qrd.js:203"}, "properties": {"repobilityId": "2d90f7ee119ef087", "scanner": "scanner-primary", "fingerprint": "6a855d3974c19da9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f1b74ea81947c39", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/jarvis/jarvis-qrd.js:977"}, "properties": {"repobilityId": "2d54ea647d061a35", "scanner": "scanner-primary", "fingerprint": "5f1b74ea81947c39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a67322a6e512b5db", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/jarvis-metrics.js:2078"}, "properties": {"repobilityId": "7f7b0c86482abc61", "scanner": "scanner-primary", "fingerprint": "a67322a6e512b5db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f85d59e3e9530168", "level": "none", "message": {"text": "Commented-code block (10 lines) in buildings/jarvis/pipeline.py:6443"}, "properties": {"repobilityId": "c11631b1ab9c60ef", "scanner": "scanner-primary", "fingerprint": "f85d59e3e9530168", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d523bd2ae0283a65", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/hook-model/fix_and_validate.py:327"}, "properties": {"repobilityId": "64a2b6225f4e2c16", "scanner": "scanner-primary", "fingerprint": "d523bd2ae0283a65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aafc4afaedeb3a2a", "level": "none", "message": {"text": "Commented-code block (7 lines) in buildings/jarvis/hook-model/featurizer.js:188"}, "properties": {"repobilityId": "a06630a1bdc1036d", "scanner": "scanner-primary", "fingerprint": "aafc4afaedeb3a2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-516fd773eeb249a1", "level": "note", "message": {"text": "Legacy-named symbol `_gen_model_v2` in buildings/jarvis/hook-model/_gen_model_v2.js:21"}, "properties": {"repobilityId": "4e4e51018e2f2468", "scanner": "scanner-primary", "fingerprint": "516fd773eeb249a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0462e28e45124e10", "level": "none", "message": {"text": "Commented-code block (8 lines) in buildings/jarvis/hook-model/_gen_model_v2.js:34"}, "properties": {"repobilityId": "b41145e2db6ad9ff", "scanner": "scanner-primary", "fingerprint": "0462e28e45124e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bcbdce2b6e02ad4f", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/tribe-analysis/analyze_video.py:117"}, "properties": {"repobilityId": "27ae44c4d5845833", "scanner": "scanner-primary", "fingerprint": "bcbdce2b6e02ad4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0479489208f1f1d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/qrd/playground_model.py:31"}, "properties": {"repobilityId": "00e0004138cbabec", "scanner": "scanner-primary", "fingerprint": "0479489208f1f1d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7479a1cbc3ea3de7", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/phases/_lib.js:110"}, "properties": {"repobilityId": "8d2a6f093afa6395", "scanner": "scanner-primary", "fingerprint": "7479a1cbc3ea3de7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb79eb622090ae15", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/jarvis/phases/phase2_mechanism_extraction.js:30"}, "properties": {"repobilityId": "070e0f413dfb9a71", "scanner": "scanner-primary", "fingerprint": "cb79eb622090ae15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6cb86dc94eb400f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/pen/pen-ui.js:901"}, "properties": {"repobilityId": "82bb61b3bb726433", "scanner": "scanner-primary", "fingerprint": "6cb86dc94eb400f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc81bef9bfbe286e", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/storage/storage-ui.js:522"}, "properties": {"repobilityId": "9c7e03c144fc6ff7", "scanner": "scanner-primary", "fingerprint": "dc81bef9bfbe286e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31026992e5742f2a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-agent.js:344"}, "properties": {"repobilityId": "949779f5fa98a048", "scanner": "scanner-primary", "fingerprint": "31026992e5742f2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3530ee76d96595fc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-intent.js:9"}, "properties": {"repobilityId": "7f3e3e5c703a698a", "scanner": "scanner-primary", "fingerprint": "3530ee76d96595fc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a9e11bb1a5d181ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-embeddings.js:30"}, "properties": {"repobilityId": "53de33c054a3b885", "scanner": "scanner-primary", "fingerprint": "a9e11bb1a5d181ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a15d61201cb4508", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/storage/storage-r2.js:11"}, "properties": {"repobilityId": "a84efa00e23f7768", "scanner": "scanner-primary", "fingerprint": "2a15d61201cb4508", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-81af904824af6bfb", "level": "none", "message": {"text": "Commented-code block (6 lines) in buildings/workshop/pipeline-stages.js:256"}, "properties": {"repobilityId": "4fd17229e452a6ee", "scanner": "scanner-primary", "fingerprint": "81af904824af6bfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e00b1a757f44475d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/pipeline-service.js:42"}, "properties": {"repobilityId": "cfc179dcc20f7c02", "scanner": "scanner-primary", "fingerprint": "e00b1a757f44475d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0fd7c50e0eb34952", "level": "none", "message": {"text": "Commented-code block (5 lines) in buildings/workshop/workshop-ui.js:1529"}, "properties": {"repobilityId": "76bfc7eeded1ee0b", "scanner": "scanner-primary", "fingerprint": "0fd7c50e0eb34952", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d9f2e52b9ce45a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 buildings/workshop/workshop-ui.js:2216"}, "properties": {"repobilityId": "bfac45da6cabe392", "scanner": "scanner-primary", "fingerprint": "5d9f2e52b9ce45a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64bc033a45ab26f1", "level": "note", "message": {"text": "34 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "dab9f6f977f9c414", "scanner": "scanner-primary", "fingerprint": "64bc033a45ab26f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "0deae98df70e58d2", "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": "69221a9ce1cc2353", "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": "aaff620bdcadd854", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}