{"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-9d6276e0afc98dc4", "name": "Possibly dead Python function: call_ollama", "shortDescription": {"text": "Possibly dead Python function: call_ollama"}, "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-bbe4c852b6c9960e", "name": "Possibly dead Python function: call_openrouter_free", "shortDescription": {"text": "Possibly dead Python function: call_openrouter_free"}, "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-f75aeb687ddca459", "name": "Possibly dead Python function: call_openai", "shortDescription": {"text": "Possibly dead Python function: call_openai"}, "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-3c8ec257bb2ae702", "name": "Possibly dead Python function: parse_resource_metadata", "shortDescription": {"text": "Possibly dead Python function: parse_resource_metadata"}, "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-2ca26bb114cc93be", "name": "Possibly dead Python function: generate_tags", "shortDescription": {"text": "Possibly dead Python function: generate_tags"}, "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-b3b6b73918b743fc", "name": "Possibly dead Python function: run_full_cycle", "shortDescription": {"text": "Possibly dead Python function: run_full_cycle"}, "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-f998add2137caba1", "name": "Possibly dead Python function: spawn_child_jobs", "shortDescription": {"text": "Possibly dead Python function: spawn_child_jobs"}, "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-3cce421471a8ab60", "name": "Possibly dead Python function: all_children_complete", "shortDescription": {"text": "Possibly dead Python function: all_children_complete"}, "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-4bf46f862f03dfce", "name": "Possibly dead Python function: log_message", "shortDescription": {"text": "Possibly dead Python function: log_message"}, "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-27c0f2126b30897b", "name": "Possibly dead Python function: start_health_server", "shortDescription": {"text": "Possibly dead Python function: start_health_server"}, "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-d928bb8d4001cb3b", "name": "Possibly dead Python function: random_phase", "shortDescription": {"text": "Possibly dead Python function: random_phase"}, "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-0a10064e9b1d58e5", "name": "Possibly dead Python function: random_phase", "shortDescription": {"text": "Possibly dead Python function: random_phase"}, "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-9421de88b6f8464d", "name": "Possibly dead Python function: chi4_phase", "shortDescription": {"text": "Possibly dead Python function: chi4_phase"}, "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-83b90ca19ad62ce3", "name": "Possibly dead Python function: circular_metrics", "shortDescription": {"text": "Possibly dead Python function: circular_metrics"}, "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-a04168d9750fcb96", "name": "Possibly dead Python function: elliptic_metrics", "shortDescription": {"text": "Possibly dead Python function: elliptic_metrics"}, "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-c95bf74f8186f824", "name": "Possibly dead Python function: double_metrics", "shortDescription": {"text": "Possibly dead Python function: double_metrics"}, "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-09ac7f5c4a1c0f9e", "name": "Possibly dead Python function: wedge_metrics", "shortDescription": {"text": "Possibly dead Python function: wedge_metrics"}, "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-c632ede6e149ee03", "name": "Possibly dead Python function: parse_axes", "shortDescription": {"text": "Possibly dead Python function: parse_axes"}, "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-7738af276811dd83", "name": "Possibly dead Python function: run_arpack_sigma_h", "shortDescription": {"text": "Possibly dead Python function: run_arpack_sigma_h"}, "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-a89702696fab89f4", "name": "Possibly dead Python function: run_arpack_sm_h", "shortDescription": {"text": "Possibly dead Python function: run_arpack_sm_h"}, "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-58fac50b634a95f6", "name": "Possibly dead Python function: run_arpack_sm_h2", "shortDescription": {"text": "Possibly dead Python function: run_arpack_sm_h2"}, "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-b8a020ea1bf861cb", "name": "Possibly dead Python function: run_lobpcg_h2_random", "shortDescription": {"text": "Possibly dead Python function: run_lobpcg_h2_random"}, "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-6d1775e3b82915f8", "name": "Possibly dead Python function: run_lobpcg_h2_shell", "shortDescription": {"text": "Possibly dead Python function: run_lobpcg_h2_shell"}, "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-7517882dab49b7f7", "name": "Possibly dead Python function: parse_int_list", "shortDescription": {"text": "Possibly dead Python function: parse_int_list"}, "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-5edb56484259eec8", "name": "Possibly dead Python function: parse_str_list", "shortDescription": {"text": "Possibly dead Python function: parse_str_list"}, "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-41fe58b0ffd0cdc2", "name": "Possibly dead Python function: parse_axes", "shortDescription": {"text": "Possibly dead Python function: parse_axes"}, "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-65e3ce8683dd5fb7", "name": "Stray `console.log` in TS/JS \u2014 sw-clear.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 sw-clear.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-33b2b2c79a81c271", "name": "Stray `console.log` in TS/JS \u2014 docker/te-toi/worker.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 docker/te-toi/worker.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-0151459f963c71ac", "name": "Stray `console.log` in TS/JS \u2014 functions/api/auth-google-exchange.js:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 functions/api/auth-google-exchange.js:234"}, "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-d2997c627e0eedbe", "name": "Stray `console.log` in TS/JS \u2014 tests/probe_glm.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/probe_glm.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-de980b54cb831355", "name": "Stray `console.log` in TS/JS \u2014 tests/probe_alternatives.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/probe_alternatives.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-e99fb603267aac30", "name": "Stray `console.log` in TS/JS \u2014 tests/membership-integration-test.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/membership-integration-test.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8719512bbc8833c2", "name": "Stray `console.log` in TS/JS \u2014 tests/verify-graphrag-rpc.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/verify-graphrag-rpc.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-b7202df7eeeb82da", "name": "Stray `console.log` in TS/JS \u2014 tests/bug_hunter_prototype.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/bug_hunter_prototype.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-4e7c151710844ca8", "name": "Stray `console.log` in TS/JS \u2014 tests/check-db-dimensions.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/check-db-dimensions.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-3ab76bc689104ba9", "name": "Stray `console.log` in TS/JS \u2014 tests/playwright/monkey-stress.spec.ts:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/monkey-stress.spec.ts: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-40c3e6d729137da8", "name": "Stray `console.log` in TS/JS \u2014 tests/playwright/forum-e2e.spec.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/forum-e2e.spec.ts: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-b417d16afe4b9292", "name": "Stray `console.log` in TS/JS \u2014 tests/playwright/auth-oauth.spec.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/auth-oauth.spec.ts: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-2cbb6c9c00a9dc25", "name": "Stray `console.log` in TS/JS \u2014 tests/playwright/helpers/mocks.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/helpers/mocks.ts:126"}, "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-30016493c0d9af87", "name": "Icon-only button without accessible name \u2014 js/wordle-progress.js:228", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/wordle-progress.js:228"}, "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-0d038be870859b46", "name": "Icon-only button without accessible name \u2014 js/global-feedback.js:16", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/global-feedback.js:16"}, "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-f7a6c7b5c8419efd", "name": "Icon-only button without accessible name \u2014 js/analytics-dashboard.js:73", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/analytics-dashboard.js:73"}, "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-3028390d875a6113", "name": "TODO/FIXME marker in shipping code \u2014 js/curriculum-viewer.js:2784", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/curriculum-viewer.js:2784"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e31706ecacae910", "name": "Icon-only button without accessible name \u2014 js/activity-generator.js:327", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/activity-generator.js:327"}, "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-fe65bc5bb8755473", "name": "Stray `console.log` in TS/JS \u2014 js/resource-service.js:1444", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/resource-service.js:1444"}, "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-5124cdbf694139e1", "name": "TODO/FIXME marker in shipping code \u2014 js/curriculum-data-bridge.js:1228", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/curriculum-data-bridge.js:1228"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ae2ab8ef02e7549", "name": "TODO/FIXME marker in shipping code \u2014 js/accessibility-enhancements.js:210", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/accessibility-enhancements.js:210"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f954e62d4d36c277", "name": "Icon-only button without accessible name \u2014 js/assessment-tools.js:71", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/assessment-tools.js:71"}, "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-26f83e7d379899fe", "name": "Icon-only button without accessible name \u2014 js/enhanced-header.js:268", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/enhanced-header.js:268"}, "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-68a0ee0f920edb59", "name": "Icon-only button without accessible name \u2014 js/simple-bookmarks.js:321", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/simple-bookmarks.js:321"}, "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-fde10e5f7002f095", "name": "TODO/FIXME marker in shipping code \u2014 js/timetable-manager.js:305", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/timetable-manager.js:305"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71d403343191e5e5", "name": "Stray `console.log` in TS/JS \u2014 js/tts-harness.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/tts-harness.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d5e3a1369307bf9", "name": "Icon-only button without accessible name \u2014 js/content-hierarchy.js:590", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/content-hierarchy.js:590"}, "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-a6d8bb1e16399d6a", "name": "Icon-only button without accessible name \u2014 js/advanced-youtube-search.js:369", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/advanced-youtube-search.js:369"}, "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-a61e5e5c8098518d", "name": "TODO/FIXME marker in shipping code \u2014 js/realtime-pronunciation.js:121", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/realtime-pronunciation.js:121"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92100a5ea4af8401", "name": "Icon-only button without accessible name \u2014 js/advanced-analytics.js:249", "shortDescription": {"text": "Icon-only button without accessible name \u2014 js/advanced-analytics.js:249"}, "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-ff840299842826a9", "name": "TODO/FIXME marker in shipping code \u2014 js/utils/ai-parser.js:104", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 js/utils/ai-parser.js:104"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5f9e69c41cb6914", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/multiplayer.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/multiplayer.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-9cc6ef75591e3b12", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/store.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/store.js:54"}, "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-e96d5a2389c77676", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/engine.js:600", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/engine.js:600"}, "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-f1171684babd82bf", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/init.js:312", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/init.js:312"}, "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-74fd22c401f0a237", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/storage.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/storage.js:61"}, "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-fac89e77866df670", "name": "Stray `console.log` in TS/JS \u2014 js/mindmap/vision.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/vision.js:81"}, "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-85d44c9adbcfc791", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-sitemap.js:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sitemap.js:143"}, "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-a002ea90807eed48", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-curriculum-statements.js:375", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-curriculum-statements.js:375"}, "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-5d1c340264d262d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-profile-query-fix.js:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-profile-query-fix.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-5f975d8caeac77d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-curriculum-quotes.js:468", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-curriculum-quotes.js:468"}, "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-dc47ff25825d731d", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-tables.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-tables.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-fe85de46d8cb836b", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-curriculum-verification.js:880", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-curriculum-verification.js:880"}, "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-bf1f61ca810826e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/enable-cloudflare-auto-deploy.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enable-cloudflare-auto-deploy.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-2f3cadd072f991d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/populate-graph-from-files.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-graph-from-files.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-0d73fbf7c33e7bbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/simulate-teacher-bots.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-teacher-bots.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-9c5f279490a562fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-h1.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-h1.js:93"}, "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-a878c78631e495d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/pages-postinstall.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pages-postinstall.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-ae2e5f7060417f1c", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-graphrag-traversal-parity.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-graphrag-traversal-parity.js:121"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85788bdbea2a500d", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-canonical-routes.js:255", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-canonical-routes.js:255"}, "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-a6aab09f7f618476", "name": "Stray `console.log` in TS/JS \u2014 scripts/connect-graph-to-curriculum.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/connect-graph-to-curriculum.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-44e9ffd3f6bd0b03", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-insert.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-insert.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-05b540ea0847a522", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-secure-ai-service.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-secure-ai-service.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-ba7843584f657a34", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wordle-metadata.js:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wordle-metadata.js:161"}, "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-0ea651ad7b79a7ec", "name": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-embeddings.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-embeddings.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-423c8b6392abd27c", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-forum.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-forum.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d5d5c9e397c8698", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-companion.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-companion.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07856a5a2365bf8b", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-unsurfaced-publishable.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-unsurfaced-publishable.js:224"}, "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-50ac809be4c41e44", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-supabase-functions.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-supabase-functions.js:54"}, "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-69ef51491ce142a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply_migration_manual.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply_migration_manual.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-34b9ddb130e8fee8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-annotations.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-annotations.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-3896dd37399bc8e9", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync_templates.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync_templates.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-5c97037b0b72a7b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-supabase-env.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-supabase-env.js:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ae6189e2e936abf", "name": "Stray `console.log` in TS/JS \u2014 scripts/ears.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ears.js:110"}, "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-8d901876028a8dcf", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify_rpc.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_rpc.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-fc23d031e041f381", "name": "Stray `console.log` in TS/JS \u2014 scripts/eyes.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eyes.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ded2b8b525c31de", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-assets-paths.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-assets-paths.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-5f6034a650e984d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/trigger-latest-deployment.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/trigger-latest-deployment.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7eaafc807079e28", "name": "Stray `console.log` in TS/JS \u2014 scripts/export_dist_csv.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export_dist_csv.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-3ea7cd3ab1edfea5", "name": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-products.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-products.js:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb85f963e5c9466d", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-dashboard.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dashboard.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-838935951510769d", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-rls.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-rls.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-dd4bbedd4ea539d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-header-consistency.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-header-consistency.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-09a333c1e9f416f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/render-kaimahi-lawyer-packet.js:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-kaimahi-lawyer-packet.js:129"}, "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-d7182988887f450a", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-all-lessons.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-all-lessons.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-f2722dd7c6e5ef75", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-browse.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-browse.js:110"}, "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-98d16f048957c86e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-3.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-3.js:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-656d9096e56f58d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-duplicates.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-duplicates.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-587eaac2908242a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/inspect-schema.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inspect-schema.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-e61101619f86ee12", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-edge-function-query.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-edge-function-query.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-dfdb34788f4441ff", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links.js:56"}, "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-7e2b88dce9187335", "name": "Stray `console.log` in TS/JS \u2014 scripts/inspect-graphrag-traversal-diff.js:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inspect-graphrag-traversal-diff.js:199"}, "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-4c0fbcae8cbe1514", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-nz-schools.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-nz-schools.js:56"}, "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-c95b719ebdc0104b", "name": "Stray `console.log` in TS/JS \u2014 scripts/populate-graphrag.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-graphrag.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-5881ad238c5e66ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/bump-css-version.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bump-css-version.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-fe6c3812e03e9a0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/provision-epit-pilot.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/provision-epit-pilot.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-b1a7e641415a0560", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-404s.js:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-404s.js:218"}, "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-e665c9df578e40a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-public-resource-paths.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-public-resource-paths.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-2eafeaeb3fdcb216", "name": "Stray `console.log` in TS/JS \u2014 scripts/simulate-generate-lesson.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-generate-lesson.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5689a8d598ce71e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-internal-links.js:328", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-internal-links.js:328"}, "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-35b21f15e599dd0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-content-production-ledgers.js:420", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-content-production-ledgers.js:420"}, "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-6390c0a78bd43ef8", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-stripe-key.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-stripe-key.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-e9dfbbd48bc13a8e", "name": "Stray `console.log` in TS/JS \u2014 scripts/inject-env-to-html.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-env-to-html.js:50"}, "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-7d13e252afd62be4", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-2.js:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-2.js:59"}, "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-800caa34d8cbb087", "name": "Stray `console.log` in TS/JS \u2014 scripts/disable-cloudflare-auto-deploy.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/disable-cloudflare-auto-deploy.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3e9f883f8c37063", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-cf-api-token.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-cf-api-token.js:91"}, "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-ef7b3d3c8303e268", "name": "Stray `console.log` in TS/JS \u2014 scripts/export-resources-static.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-resources-static.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-264894e77ae98193", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-games-publish-policy.js:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-games-publish-policy.js:254"}, "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-d4914310379ba638", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-production.js:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-production.js:139"}, "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-500d5b2acb7922a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-content.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-content.js:69"}, "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-a87482f014c728e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-env-vars-supabase.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-env-vars-supabase.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe4c0d320ceb3558", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-bug-report.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bug-report.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-e55925d65584c2a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/test_registration_api.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test_registration_api.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-d6e216b007e1639d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-embeddings.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-embeddings.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-a3811460fb418fd9", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-source-registry.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-source-registry.js:138"}, "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-a97f865220ec7f2f", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-lesson-generator.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-lesson-generator.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31c795b42a25f773", "name": "Stray `console.log` in TS/JS \u2014 scripts/repair-content.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-content.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-ac6178bdf6e872eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/query-graph.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query-graph.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17f8eb44f98c6628", "name": "Stray `console.log` in TS/JS \u2014 scripts/bundle-css.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bundle-css.js:50"}, "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-4ec25f2b1addef88", "name": "Stray `console.log` in TS/JS \u2014 scripts/report-content-tranche-priority.js:431", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/report-content-tranche-priority.js:431"}, "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-bbe9aebce6fda80b", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate_sitemap_v2.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_sitemap_v2.js:61"}, "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-5a5eefd73611b5c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-glm-endpoint.js:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-glm-endpoint.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-bb34ea6df12fc4de", "name": "Stray `console.log` in TS/JS \u2014 scripts/minify-js.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/minify-js.js:79"}, "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-c8c1eb219bacc45e", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-search.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-search.js:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7cc0ee87bbdbc1c", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-links.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-links.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-d39deb7050d80479", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-bug-report-migration.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-bug-report-migration.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-7ff119ecfa3b23d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-content-consistency.js:236", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-content-consistency.js:236"}, "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-3bea3027647a5fc7", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-resource-card-rendering.js:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resource-card-rendering.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-23ca4c328040b8ab", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-wordle-data.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-wordle-data.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22aff03c25887203", "name": "Stray `console.log` in TS/JS \u2014 scripts/inventory-teaching-content.js:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inventory-teaching-content.js:240"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e889714bbe445a68", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-job-hunt.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-job-hunt.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-1e6ab48fb20cef2d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate_pilot_migration.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_pilot_migration.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-738193b2415a7577", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration-manual.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration-manual.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-5f28d859f17ef645", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-relative-paths.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-relative-paths.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-ee6854e5e9827d67", "name": "Stray `console.log` in TS/JS \u2014 scripts/bump-js-version.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bump-js-version.js:77"}, "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-6f2b020621dfd99d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate_manifest.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_manifest.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3d03402883d5b57", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-env-vars.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-env-vars.js:73"}, "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-4f32bfa7c25eb0da", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-browse-relevance.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-browse-relevance.js:172"}, "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-45394c9f826d3760", "name": "Stray `console.log` in TS/JS \u2014 scripts/frontend_analyzer.js:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/frontend_analyzer.js:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a62eadea3a785c79", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-graphrag-env.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-graphrag-env.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca2d7c5db39a0100", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-forum-html.js:378", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-forum-html.js:378"}, "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-842b4d5b7b93f93e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-lesson-media-embeds.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-lesson-media-embeds.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-c8481d0b4f8737b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/reset-bug-reports.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reset-bug-reports.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-9b7370f2bf4da631", "name": "Stray `console.log` in TS/JS \u2014 scripts/store-cloudflare-credentials-graphrag.js:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/store-cloudflare-credentials-graphrag.js:107"}, "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-157fac96b898968a", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-traversal.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-traversal.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-23a36c90e0b9eb8c", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-path.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-path.js:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1bb239803abab023", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-knowledge-graph.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-knowledge-graph.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-7ee67ca19af0e94f", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-dashboard-logic.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-dashboard-logic.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-e2177139eae6a889", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify_templates_table.js:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_templates_table.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-d51bc747e3e925e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed_forum.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed_forum.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-4c2945b0ecab104e", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate_component_migration.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_component_migration.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4e5cd115c7e2830", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-cloudflare-build-settings.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-cloudflare-build-settings.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-4eddee88b1254b04", "name": "Stray `console.log` in TS/JS \u2014 scripts/render-newsletters.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-newsletters.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdef8e24d300b9dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/align-curriculum.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/align-curriculum.js:61"}, "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-0b8deb032ff567e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-teaching-content-registry.js:637", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-teaching-content-registry.js:637"}, "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-d0958e2013f16761", "name": "Stray `console.log` in TS/JS \u2014 scripts/force-fix-browse-redirects.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/force-fix-browse-redirects.js:65"}, "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-bdfd07eaadb4783a", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-units-manifest.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-units-manifest.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-019c779fab1d7a4a", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-te-reo-wordle.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-te-reo-wordle.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d67f4ebb1d2de93", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-4.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-4.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60403b2131786b92", "name": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-pages-env.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-pages-env.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-cd3c807f587bc863", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-creation-studio-schema.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-creation-studio-schema.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-ed9450ac384f53a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-game-release-tags.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-game-release-tags.js:110"}, "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-93e4cce897b6c76e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-library-scope.js:567", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-library-scope.js:567"}, "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-abd68f6dbfc0a7a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-env-config.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-env-config.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-52aac0f886ecc372", "name": "Stray `console.log` in TS/JS \u2014 scripts/split-pdf-into-parts.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-pdf-into-parts.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e07ade8076a8c2fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-resource-paths.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-resource-paths.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-069264f0bdec43d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-product-readiness.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-product-readiness.js:120"}, "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-0756b2ce1c441254", "name": "Stray `console.log` in TS/JS \u2014 scripts/manual-migration.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/manual-migration.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-46a55752f9283830", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-stats.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-stats.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-15548ba16b20721b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-lessons-node.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-lessons-node.js:57"}, "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-ca87041626ba15aa", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-source-registry.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-source-registry.js:100"}, "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-0f336e4d15fd30a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/trigger-cloudflare-deployment.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/trigger-cloudflare-deployment.js:57"}, "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-7e4e987066bb5cb8", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-resource-types.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-resource-types.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3962c4b003e2ecdd", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-source-registry.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-source-registry.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-bcb72fe2dcd99812", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate_units.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate_units.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-f6a4e179470548d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/inject-curriculum-ids.js:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-curriculum-ids.js:214"}, "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-9a8e932af82e534d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-embeddings.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-embeddings.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-93ef2b39d76ef048", "name": "Stray `console.log` in TS/JS \u2014 scripts/debug-rag-check.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-rag-check.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-08c3f000a7d0345d", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-components.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-components.js:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-227bb470d4d8283c", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-student-dashboard.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-student-dashboard.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-3a1bb8c3cdb5a998", "name": "Stray `console.log` in TS/JS \u2014 scripts/inject-static-seo.js:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-static-seo.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-dcc7d05c53aa8ef8", "name": "Stray `console.log` in TS/JS \u2014 scripts/production-testing-checklist.js:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/production-testing-checklist.js:192"}, "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-00b33d65ab243c51", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-nesting.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-nesting.js:6"}, "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-40ad344512b83797", "name": "Stray `console.log` in TS/JS \u2014 scripts/catalog.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/catalog.js:6"}, "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-a3ce02c6ba6803e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/legacy/scan_public.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/scan_public.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-89763fd368b4d153", "name": "Stray `console.log` in TS/JS \u2014 scripts/legacy/generate_inventory.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/generate_inventory.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-0076bfbcd705ff4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/legacy/check_links.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/check_links.js:60"}, "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-0f4ff692a54994cd", "name": "Stray `console.log` in TS/JS \u2014 scripts/legacy/load-env-keys.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/load-env-keys.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fa75a03902bf6b2", "name": "Stray `console.log` in TS/JS \u2014 scripts/legacy/analyze_sitemap.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/analyze_sitemap.js:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4a1b0307f76c9a2", "name": "Stray `console.log` in TS/JS \u2014 scratch/search-cf.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch/search-cf.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-7d94608c339f09b6", "name": "Stray `console.log` in TS/JS \u2014 scratch/fetch-cf.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scratch/fetch-cf.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-d2145e80bb8b9595", "name": "Stray `console.log` in TS/JS \u2014 mcp-server/codex-bridge.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/codex-bridge.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-615ea23b61db2c65", "name": "Stray `console.log` in TS/JS \u2014 mcp-server/server.legacy.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/server.legacy.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-82657b88c9553192", "name": "Stray `console.log` in TS/JS \u2014 mcp-server/index.js:1860", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/index.js:1860"}, "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-3e9fecf21fe35bbe", "name": "Icon-only button without accessible name \u2014 kaimahi/js/kaimahi-admin.js:535", "shortDescription": {"text": "Icon-only button without accessible name \u2014 kaimahi/js/kaimahi-admin.js:535"}, "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-f7cec9505559a0b6", "name": "TODO/FIXME marker in shipping code \u2014 kaimahi/js/kaimahi-admin.js:718", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 kaimahi/js/kaimahi-admin.js:718"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-281ebab1b5a44ba7", "name": "Stray `console.log` in TS/JS \u2014 hooks/useHighPhiState.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useHighPhiState.ts: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-724979f667126e5d", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/send-welcome-email/index.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/send-welcome-email/index.ts:139"}, "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-2707674b542d9955", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-handout-pdf/index.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-handout-pdf/index.ts: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-32205f95e0139694", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/ai-companion/index.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/ai-companion/index.ts:91"}, "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-891ae54434c86dd2", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/process-whiteboard/index.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/process-whiteboard/index.ts: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-dec6acdb8cc1e1b2", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-glm-free/index.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-glm-free/index.ts:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5bb2bb077dd27ee", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-test/index.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-test/index.ts: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-026b34761ea74ad1", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe-webhook/index.ts:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe-webhook/index.ts:200"}, "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-aabf98e9ebae48c2", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/forum-post-news-bot/index.ts:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/forum-post-news-bot/index.ts: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-56178cfc527bcc42", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/graphrag-search/index.ts:1299", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/graphrag-search/index.ts:1299"}, "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-91897c450c6f6ef1", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson/index.ts:404", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson/index.ts:404"}, "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-8e9cee52a17f2911", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-page/index.ts:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-page/index.ts:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-796a80e4627de635", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-kaihanga/index.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-kaihanga/index.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-80b6c9de7033a1f0", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/tts-proxy/index.ts:329", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/tts-proxy/index.ts:329"}, "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-5e74b3fa99c1272b", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-secure/index.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-secure/index.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1cdc1040e8effbd", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-curator/index.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-curator/index.ts: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-961abc40104c3d2f", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-736515afd5b79633", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b10d511f8469a2b", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-840fbc8d467102ba", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e5c190b96f811d9", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c44b1da9abbcf7a3", "name": "Docker base image is tag-pinned but not digest-pinned: node:18-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:18-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9506ce4f64f3fca6", "name": "Dockerfile runs as root: docker/dashboard/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/dashboard/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-139167671878e446", "name": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1319b704224ddcd6", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d579a65e2b916764", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8873607d43f6de22", "name": "Docker base image is tag-pinned but not digest-pinned: node:18-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:18-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1f9138d3b451a2c", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2bc7d7a3854bc05", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7703b0b211475d0", "name": "Dockerfile runs as root: docker/te-tirohanga/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: docker/te-tirohanga/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-252af417c596b1e2", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e2460270d93a260", "name": "Dockerfile runs as root: mcp-server/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: mcp-server/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-787e483f8183db8f", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39f3e5d073526f1a", "name": "Insecure pattern 'direct_innerhtml_assignment' in project-submission.html:705", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in project-submission.html:705"}, "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-bc91482a66318c14", "name": "Insecure pattern 'direct_innerhtml_assignment' in public-resource.html:164", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public-resource.html:164"}, "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-6bb4091f1d387017", "name": "Insecure pattern 'direct_innerhtml_assignment' in senior-pathways.html:641", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in senior-pathways.html:641"}, "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-b334bdc21ae04494", "name": "Insecure pattern 'direct_innerhtml_assignment' in forgot-password.html:114", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in forgot-password.html:114"}, "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-836a1867cca76974", "name": "Insecure pattern 'direct_innerhtml_assignment' in curriculum-rutherford.html:655", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in curriculum-rutherford.html:655"}, "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-605a39f46d7119ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in checkout-success.html:340", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in checkout-success.html:340"}, "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-4bdf50fc1de81a21", "name": "Insecure pattern 'direct_innerhtml_assignment' in cultural-validation-checklist.html:534", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cultural-validation-checklist.html:534"}, "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-556ca1ebcc62a4d4", "name": "Insecure pattern 'direct_innerhtml_assignment' in interactive-learning-demo.html:434", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in interactive-learning-demo.html:434"}, "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-523cff4f0922553c", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-grid-explorer-phase-2/index.html:40", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-grid-explorer-phase-2/index.html:406"}, "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-cfb370d2f8ad808d", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-4.html:548", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-4.html:548"}, "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-6a7ddc85ade45b2d", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-4-lesson-3.html:420", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-4-lesson-3.html:420"}, "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-a88ad586ded160ee", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-3.html:479", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-3.html:479"}, "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-2216c2de710690c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-2.html:408", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-2.html:408"}, "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-046faa62ecfd4b37", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/resources/biodiversi", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html: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-ee41d81ac0d83b19", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/y9-science-ecology/r", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html: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-c0178bee451d862e", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y0-mathematics-number-sense-journey-p\u0101ngarau-tua", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html:587"}, "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-b06a1a549f38b5cc", "name": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-society-design.html:483", "shortDescription": {"text": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-society-design.html:483"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20be0d0d451a8798", "name": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-socie", "shortDescription": {"text": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html:483"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5536c894fca4062d", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-phase2-modular/index.html:406", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-phase2-modular/index.html:406"}, "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-70bb23ab7e09b274", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-4.html:633", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-4.html:633"}, "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-27d6aedb95eff0d3", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-4-lesson-3.html:461", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-4-lesson-3.html:461"}, "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-5e84bd338b1dc73b", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-3.html:577", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-3.html:577"}, "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-047ecbea1672ecda", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-2.html:497", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-2.html:497"}, "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-675a5aeda854ddea", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/resources/who-has-the-r", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html:218"}, "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-de4e2a70693d4d58", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/unit-36-phase-3-systems", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html:218"}, "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-f40703e8ed76646e", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-maths/lessons/hamilton-zoo-phase2-m", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-maths/lessons/hamilton-zoo-phase2-modular.html:406"}, "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-5eb38fc5c6c481bd", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/index.html:247"}, "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-5713a55362f53a52", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html:336"}, "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-33d6cd11b14b2ce6", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html:356"}, "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-9bc698502ad2a19b", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html:320"}, "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-8e6af5c5bbb74b88", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html:437"}, "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-a1aae231703af395", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html:356"}, "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-3c4430726abea72e", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-sol", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html:328"}, "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-90f9c48c80abf579", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-mathematics/lessons/hamilton-zoo-ph", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html:431"}, "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-c889a4239a2484ba", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/index.html", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/index.html:766"}, "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-269420c58e67be68", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/unit-43-ph", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html:766"}, "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-c7630cecb5dbaf40", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archiv", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html:624"}, "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-c3e5025b7be18105", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archiv", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html:885"}, "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-6119d85a297e362d", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archiv", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html:237"}, "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-1923fa9bbaf8969c", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archiv", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html:405"}, "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-7014e398d3af857f", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-3", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:624"}, "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-2d66a7409f533d3e", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-3", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:885"}, "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-34281a9ddff3d03a", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-3", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:237"}, "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-fbe2108fac7f7b0a", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-3", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:405"}, "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-60e702b76f5bd87c", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y4-6-mathematics-hamilton-zoo-grid-explorer/index.html:463", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y4-6-mathematics-hamilton-zoo-grid-explorer/index.html:463"}, "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-4b14486b1e3fa9ab", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-grid-explorer-phase-2/index.html:463", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-grid-explorer-phase-2/index.html:463"}, "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-4fc8501e88e769cc", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-4.html:598", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-4.html:598"}, "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-9865475dd3e001f9", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-4-lesson-3.html:461", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-4-lesson-3.html:461"}, "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-46dba76417f3f07d", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-3.html:543", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-3.html:543"}, "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-c89aa687e40f7b2f", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-2.html:472", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-2.html:472"}, "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-539df16470ea2c26", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/resources/biodiversity-tagger-game.h", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html:431"}, "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-53925bac36940255", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/y9-science-ecology/resources/biodive", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html:430"}, "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-c72679b502100a91", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html:696"}, "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-8689d4c64684e4ac", "name": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-society-design.html:510", "shortDescription": {"text": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-society-design.html:510"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a209ccfc84812a2", "name": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html:5", "shortDescription": {"text": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html:507"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9119e5de2a2c7f04", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/resources/who-has-the-real-power-intera", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html:224"}, "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-7d9b179d212b79ad", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resour", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html:221"}, "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-b3680f6235156f18", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-4.html:560", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-4.html:560"}, "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-1a293267ae27585b", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-3.html:503", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-3.html:503"}, "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-79d6943320245c61", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-2.html:432", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-2.html:432"}, "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-11d78dc1fb2d3f64", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y6-8-mathematics-position-orientation-hamilton-zoo/lessons/hamil", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y6-8-mathematics-position-orientation-hamilton-zoo/lessons/hamilton-zoo-phase2-modular.html:442"}, "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-dd294276f29c00c6", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/index.ht", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/index.html:294"}, "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-1a333481a49d4c9b", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html:313"}, "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-f44cb6cc9814059b", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html:324"}, "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-6974ffb91156dab3", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html:305"}, "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-30963f736571fcc8", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html:421"}, "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-6b1c2538666382c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html:316"}, "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-2f77e7968ba86262", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html:299"}, "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-136289954147e926", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.htm", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html:442"}, "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-9977bd9288435c12", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/ar", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-5.html:650"}, "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-dbe789a7c02948dc", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/ar", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-6.html:911"}, "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-27455d399bfd98d6", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/ar", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-1.html:262"}, "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-c9d7441a4289d58c", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/ar", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-4.html:430"}, "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-5a00599e56345e93", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/un", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:650"}, "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-9ea814f90802a517", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/un", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:911"}, "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-3263a91079d72008", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/un", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:262"}, "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-1b5ea35ddb70f3a3", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/un", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:430"}, "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-283690ceee4f4499", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/index.html:774", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/index.html:774"}, "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-ab475355a3f320f0", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-na", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html:824"}, "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-f0c3cd6b2ab5cdc1", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/resources/biodiversity-t", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/resources/biodiversity-tagger-game.html:431"}, "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-6e2fb697b7fc451a", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/y9-science-ecology/resou", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/y9-science-ecology/resources/biodiversity-tagger-game.html:430"}, "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-38e41e9d36a89109", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html:650"}, "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-84b7a2c7e9279357", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html:911"}, "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-d97572bca10703cc", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html:262"}, "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-36788d5bcac6d465", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html:430"}, "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-b5f74ea03acedc77", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critic", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:650"}, "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-4b55e39de668d04c", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critic", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:911"}, "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-64ff304460073a1f", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critic", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:262"}, "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-bd37d7e0f11585e4", "name": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critic", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:430"}, "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-29f35c6cecdace90", "name": "Insecure pattern 'cors_wildcard' in docker/te-aronui/rlm_api.py:51", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in docker/te-aronui/rlm_api.py:51"}, "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-067a9bb9963c6ed9", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/wordfind.html:204", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordfind.html:204"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a20c0a93f5987ab7", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/tukutuku-pattern-explorer.html:650", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/tukutuku-pattern-explorer.html:650"}, "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-4654f7e1b8754fa5", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/categories.html:600", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/categories.html:600"}, "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-d7278e5ff94b2d9d", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/countdown-letters.html:723", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/countdown-letters.html:723"}, "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-0ce502ef50402248", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/whakatohia-patterns.html:878", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/whakatohia-patterns.html:878"}, "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-19d2b1e063e2544a", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/whakapapa-connections.html:886", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/whakapapa-connections.html:886"}, "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-477931e897ef57f2", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-6-letter.html:929", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-6-letter.html:929"}, "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-4ec28525848e8118", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/te-reo-wordle.html:1156", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/te-reo-wordle.html:1156"}, "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-de6e035a642e26b7", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/pangarau-patterns.html:759", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/pangarau-patterns.html:759"}, "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-c19e682bd12004db", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-safe-demo.html:258", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-safe-demo.html:258"}, "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-42ad55f595c2bba8", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-unlimited.html:1097", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-unlimited.html:1097"}, "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-7ede0b3ce1f0d0d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/spelling-bee.html:1161", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/spelling-bee.html:1161"}, "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-1fcd419027186dd5", "name": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-demonstration.html:322", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-demonstration.html:322"}, "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-cf253f967bf82291", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/account-settings.html:1595", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/account-settings.html:1595"}, "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-1c661f1cc3e75591", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-test-simple.html:56", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-test-simple.html:56"}, "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-8b3bce409f02785d", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-diagnostics.html:301", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-diagnostics.html:301"}, "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-a1503fdf9b9ad575", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/profile.html:557", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/profile.html:557"}, "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-09b272f76ab681cf", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/avatar-picker.html:665", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/avatar-picker.html:665"}, "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-f074d65a0f357321", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/oauth-diagnostic.html:84", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/oauth-diagnostic.html:84"}, "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-649587c301c3d2ed", "name": "Insecure pattern 'direct_innerhtml_assignment' in auth/login-simple.html:240", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/login-simple.html:240"}, "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-4058190a3298e282", "name": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/lattice-explorer/index.html:683", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/lattice-explorer/index.html:683"}, "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-81862ed9ff00f6a7", "name": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/cross-lane-correlation/index.html:", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/cross-lane-correlation/index.html:699"}, "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-e0d0fe62373b0d2a", "name": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/graph-ring-traversal/index.html:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/graph-ring-traversal/index.html:912"}, "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-9a58696b425d05ee", "name": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/site-density-profile/index.html:94", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/site-density-profile/index.html:946"}, "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-45a786d78346a0e2", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-sidebar.js:143", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-sidebar.js:143"}, "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-b8f7974c2873b14f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-context-nav.js:56", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-context-nav.js:56"}, "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-43ea328fed6e5bdd", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-notifications.js:58", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-notifications.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-a0188f3e5dd17888", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/interactive-components.js:181", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/interactive-components.js:181"}, "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-7900867f739295f6", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-page.js:319", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-page.js:319"}, "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-c6bb416013d5f04e", "name": "Insecure pattern 'document_write' in js/creation-studio.js:1148", "shortDescription": {"text": "Insecure pattern 'document_write' in js/creation-studio.js:1148"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71b0a7835f5ef425", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/creation-studio.js:242", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/creation-studio.js:242"}, "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-a42e7c0374d4d8d9", "name": "Insecure pattern 'direct_outerhtml_assignment' in js/creation-studio.js:953", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in js/creation-studio.js:953"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1da9b5878200da4b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-news-ticker.js:54", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-news-ticker.js:54"}, "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-afe8f8b83ba4f96a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-progress.js:42", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-progress.js:42"}, "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-177d482368bea393", "name": "Insecure pattern 'insert_adjacent_html' in js/my-kete-progress.js:228", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/my-kete-progress.js:228"}, "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-d2cc41542feccaf3", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-sidebar.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-sidebar.js:33"}, "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-5a406868948e9183", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-heroes.js:331", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-heroes.js:331"}, "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-b388afc52cc90a70", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/games-hub.js:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/games-hub.js:9"}, "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-86c48bf6cb44e6e3", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/lesson-navigation.js:31", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/lesson-navigation.js:31"}, "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-d38b8175a9f215e1", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-progress.js:223", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-progress.js:223"}, "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-94c4eae7f563fe6e", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content-sidebar.js:95", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content-sidebar.js:95"}, "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-c6be11f0a95b6b2f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/save-resource.js:121", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/save-resource.js:121"}, "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-618ba34ade15007d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/global-feedback.js:12", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/global-feedback.js:12"}, "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-d5a9dc96bd7689bb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-whakatauki.js:144", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-whakatauki.js:144"}, "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-ab1becb1c0a60493", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/stats-loader.js:62", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/stats-loader.js:62"}, "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-12935207ca5984d2", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/teacher-dashboard.js:163", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teacher-dashboard.js:163"}, "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-d46c1211b8e75abb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-dashboard.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-dashboard.js:36"}, "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-1ec86aa5bf028f16", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/cookie-consent.js:57", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/cookie-consent.js:57"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2bc294bb3c3b6bff", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-viewer.js:150", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-viewer.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-5d60d91fd7cf5032", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/activity-generator.js:326", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/activity-generator.js:326"}, "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-773780387e848378", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pricing-init.js:86", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pricing-init.js:86"}, "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-e4cf6c414994a1c7", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-footer.js:115", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-footer.js:115"}, "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-3a4bbe2b363e0244", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-core.js:146", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-core.js:146"}, "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-3f2840bb6b0095bb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/input-sanitizer.js:44", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/input-sanitizer.js:44"}, "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-7fe541ae0c6acb26", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/student-dashboard.js:86", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/student-dashboard.js:86"}, "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-735602f0b026b2d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-dashboard-init.js:25", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-dashboard-init.js:25"}, "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-e8792fb0b3660d1d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/streamlined-header.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/streamlined-header.js:41"}, "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-4609738248ba7675", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:63", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:63"}, "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-ad62355c4f5932b7", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-collections.js:274", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-collections.js:274"}, "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-f6c4ccdf3e01a67d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/content-recommendation-engine.js:368", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/content-recommendation-engine.js:368"}, "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-c728bcd80f07bf3e", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/notification-bell.js:73", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/notification-bell.js:73"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b8aab029930319c9", "name": "Insecure pattern 'insert_adjacent_html' in js/resource-curriculum-alignment.js:347", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/resource-curriculum-alignment.js:347"}, "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-e3713a9d166208e9", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/dashboard.js:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/dashboard.js:75"}, "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-42d6ea4e21de8535", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/email-verification-banner.js:31", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/email-verification-banner.js:31"}, "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-202e15493e88005e", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-usage.js:117", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-usage.js:117"}, "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-32517351b56c89f1", "name": "Insecure pattern 'insert_adjacent_html' in js/related-resources.js:536", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/related-resources.js:536"}, "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-d7dc1dc62cde29e8", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/auth-ui.js:193", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/auth-ui.js:193"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c4467b4d66e72a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-data-bridge.js:339", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-data-bridge.js:339"}, "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-f9f09f4a5827ec1e", "name": "Insecure pattern 'insert_adjacent_html' in js/layout-loader.js:49", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/layout-loader.js:49"}, "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-96321ac4c9315e2a", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-editor.js:75", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-editor.js:75"}, "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-958e2d40aaa0f8fc", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-interactive.js:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-interactive.js:26"}, "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-becb7ad4f690f8a1", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/other-resources-graphrag.js:73", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/other-resources-graphrag.js:73"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-139a395e1b67942f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-navigator.js:25", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-navigator.js:25"}, "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-4f6f00b4f95a11af", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility-enhancements.js:254", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility-enhancements.js:254"}, "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-7bf7fc61247249c9", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-sidebar.js:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-sidebar.js:133"}, "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-3f1a1434459290c8", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/maori-pronunciation.js:460", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/maori-pronunciation.js:460"}, "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-31cf52aeba399fee", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/spelling-bee-game.js:403", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/spelling-bee-game.js:403"}, "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-8307dc130756b8fd", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components-navigation.js:460", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components-navigation.js:460"}, "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-9de2765854c5cb07", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/news-loader.js:12", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/news-loader.js:12"}, "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-678ea66516b4f850", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/assessment-tools.js:70", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/assessment-tools.js:70"}, "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-4552461a883d1136", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/footer.js:55", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/footer.js:55"}, "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-63156dfde8e781b5", "name": "Insecure pattern 'insert_adjacent_html' in js/footer.js:57", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/footer.js:57"}, "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-6c3f9df521816bf8", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/english-wordle-game.js:584", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/english-wordle-game.js:584"}, "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-7c6d7c7371e5028b", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/games-page.js:253", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/games-page.js:253"}, "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-8b54ba3d5949c88e", "name": "Insecure pattern 'insert_adjacent_html' in js/seo-schema-generator.js:763", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/seo-schema-generator.js:763"}, "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-ed12c20cbb005e47", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-suggestion-pipeline.js:237", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-suggestion-pipeline.js:237"}, "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-cfc65b9c182f0a63", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/handouts-init.js:79", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/handouts-init.js:79"}, "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-6ddc6a4a5c376df4", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-header.js:125", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-header.js:125"}, "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-6125b8823cc12577", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-game-tracker.js:680", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-game-tracker.js:680"}, "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-2e65dd9efd8ca669", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/bias-buster-game.js:203", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/bias-buster-game.js:203"}, "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-e2bd30c89abc365f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-sidebar.js:43", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-sidebar.js:43"}, "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-a8f098389b817cd0", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/adaptive-difficulty-system.js:649", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/adaptive-difficulty-system.js:649"}, "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-5e5ac5f024bd8124", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/game-cta.js:9", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/game-cta.js:9"}, "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-31711a41b85c5df1", "name": "Insecure pattern 'insert_adjacent_html' in js/video-integration.js:436", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/video-integration.js:436"}, "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-05f28d588081646f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-documents-init.js:59", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-documents-init.js:59"}, "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-d4ad7ba469fe6f02", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/fallacy-defender-game.js:56", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/fallacy-defender-game.js:56"}, "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-16f4237043d9af82", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/simple-bookmarks.js:190", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/simple-bookmarks.js:190"}, "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-1f7db007f92bd893", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-discussion.js:236", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-discussion.js:236"}, "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-d0b0affc847e44fb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content.js:90", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content.js:90"}, "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-f65e43712ceff933", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/timetable-manager.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/timetable-manager.js:41"}, "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-f5cf520ea98f5652", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-page.js:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-page.js:185"}, "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-27560432c89b9aeb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/forum.js:148", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum.js:148"}, "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-fe42a2a3ae8e26ac", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:365", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:365"}, "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-30055f3f2eab779d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-init.js:370", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-init.js:370"}, "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-d09178b56170050c", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/gamification-system.js:557", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/gamification-system.js:557"}, "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-1237e4407b22e764", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-access.js:258", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-access.js:258"}, "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-4646340a320c8b9f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pdf-viewer.js:55", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pdf-viewer.js:55"}, "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-b639877e93983f56", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pwa-registration.js:96", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pwa-registration.js:96"}, "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-0d95d8009acf6d6d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/whakatauki-animator.js:97", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/whakatauki-animator.js:97"}, "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-dc21ecfdd2b7b905", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-browser.js:211", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-browser.js:211"}, "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-25025db2d2de6102", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/content-hierarchy.js:589", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/content-hierarchy.js:589"}, "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-e61e570a2903b898", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-youtube-search.js:264", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-youtube-search.js:264"}, "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-f559b9e017bd0146", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-hero.js:277", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-hero.js:277"}, "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-6c9599819ddf1469", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/school-autocomplete.js:99", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/school-autocomplete.js:99"}, "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-a49d3143114189c7", "name": "Insecure pattern 'document_write' in js/my-kete-timetable.js:817", "shortDescription": {"text": "Insecure pattern 'document_write' in js/my-kete-timetable.js:817"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b69983d2e1c4b887", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-timetable.js:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-timetable.js:185"}, "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-f2675f1027f13378", "name": "Insecure pattern 'direct_outerhtml_assignment' in js/my-kete-timetable.js:927", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in js/my-kete-timetable.js:927"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d1e3f8e7f405d54", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/realtime-pronunciation.js:225", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/realtime-pronunciation.js:225"}, "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-61f86b616dacddee", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/portfolio-sidebar.js:115", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/portfolio-sidebar.js:115"}, "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-c00e0871a7a3de13", "name": "Insecure pattern 'document_write' in js/advanced-analytics.js:403", "shortDescription": {"text": "Insecure pattern 'document_write' in js/advanced-analytics.js:403"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e04af4d99a03d38", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-analytics.js:307", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-analytics.js:307"}, "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-13022543b715f667", "name": "Insecure pattern 'insert_adjacent_html' in js/advanced-analytics.js:295", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/advanced-analytics.js:295"}, "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-4fa103d7aca9295d", "name": "Insecure pattern 'local_storage_auth_token' in js/advanced-analytics.js:124", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in js/advanced-analytics.js:124"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de8786f61b5db634", "name": "Insecure pattern 'local_storage_auth_token' in js/session-manager.js:89", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in js/session-manager.js:89"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8789faabd2d7c5ae", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-component.js:142", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-component.js: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-14f34eb76e2a412f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/password-strength.js:36", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/password-strength.js:36"}, "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-186763878f492340", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete.js:85", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete.js:85"}, "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-4d52bcce26f212b4", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-rating.js:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-rating.js:98"}, "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-3c57bf2115f4dd95", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components.js:94", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components.js:94"}, "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-1a330756a142ed1d", "name": "Insecure pattern 'insert_adjacent_html' in js/shared-components.js:708", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/shared-components.js:708"}, "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-d4e26eaa1a8dd0fa", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-search.js:274", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-search.js:274"}, "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-d00bc227e2d36cd4", "name": "Insecure pattern 'insert_adjacent_html' in js/advanced-search.js:209", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/advanced-search.js:209"}, "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-26ef5caa0c401ec6", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-sharing.js:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-sharing.js:129"}, "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-dee02d0bd91884e1", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/components/sub-status-banner.js:72", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/components/sub-status-banner.js:72"}, "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-4a195d6771c8d999", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/assistants/kaitiaki-assistant.js:140", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/assistants/kaitiaki-assistant.js:140"}, "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-8aa55bf1e4834f20", "name": "Insecure pattern 'insert_adjacent_html' in js/assistants/kaitiaki-assistant.js:108", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in js/assistants/kaitiaki-assistant.js:108"}, "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-0f07cc3cee3b071d", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/math-drills-init.js:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/math-drills-init.js:29"}, "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-339d7ae9805ff3eb", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/profile-viewer.js:52", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/profile-viewer.js:52"}, "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-b6af4f187f7d778e", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/timeline-sequencing-init.js:12", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/timeline-sequencing-init.js:12"}, "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-92c4de9b2de2c1a5", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/assessment-init.js:16", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/assessment-init.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-76d841f8eb370a09", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/lessons-init.js:2", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/lessons-init.js:2"}, "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-1dfb88aa4054c8a4", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/my-submissions-init.js:145", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/my-submissions-init.js:145"}, "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-c5dfc93f21354840", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wananga-init.js:66", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wananga-init.js:66"}, "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-bbe12ec0b744e2d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/weekly-lesson-planner-init.js:50", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/weekly-lesson-planner-init.js:50"}, "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-367b8e1833b38c31", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wordfind-generator-init.js:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wordfind-generator-init.js:47"}, "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-9dfc7b2b5c6a5933", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/services/entitlements.js:1009", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/entitlements.js:1009"}, "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-e0271d4128c5045c", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/services/toast-manager.js:49", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/toast-manager.js:49"}, "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-e43c2daf23a5eae2", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/services/bookmark-service.js:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/bookmark-service.js:98"}, "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-6dbab0571b6c96c0", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/services/studio-enhancer.js:20", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/studio-enhancer.js:20"}, "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-bfbb853602113f3f", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/services/agent-hub.js:82", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/agent-hub.js:82"}, "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-77225af03b814180", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/multiplayer.js:205", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/multiplayer.js:205"}, "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-fff22d25b7d2d5f3", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/engine3d.js:19", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/engine3d.js:19"}, "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-6fad4b4592e4ccad", "name": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/init.js:91", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/init.js:91"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-56faf7a2ede4ad2d", "name": "Insecure pattern 'node_child_process' in scripts/pages-postinstall.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/pages-postinstall.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-b78eda9c981299d8", "name": "Insecure pattern 'node_child_process' in scripts/check-supabase-functions.js:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-supabase-functions.js:3"}, "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-51da49c92e31dc99", "name": "Insecure pattern 'node_child_process' in scripts/eyes.js:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/eyes.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-9dfde9fbd09a5093", "name": "Possible secret in scripts/seed-dashboard.js", "shortDescription": {"text": "Possible secret in scripts/seed-dashboard.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-879542c476d21403", "name": "Insecure pattern 'node_child_process' in scripts/audit-header-consistency.js:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-header-consistency.js:9"}, "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-5097eba7aa8a7dce", "name": "Insecure pattern 'node_child_process' in scripts/report-content-tranche-priority.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/report-content-tranche-priority.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-0457695c54e5015f", "name": "Insecure pattern 'node_child_process' in scripts/set-cf-env-vars.js:103", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/set-cf-env-vars.js:103"}, "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-09598ad4b0bb9fb3", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/fix-forum-html.js:236", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/fix-forum-html.js:236"}, "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-75646abb30b1a051", "name": "Insecure pattern 'node_child_process' in scripts/audit-lesson-media-embeds.js:5", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-lesson-media-embeds.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-008146fe941aa660", "name": "Insecure pattern 'node_child_process' in scripts/trigger-cloudflare-deployment.js:61", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/trigger-cloudflare-deployment.js:61"}, "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-016a8a78a6a5dbd1", "name": "Possible secret in scripts/test-generate-lesson-prod.sh", "shortDescription": {"text": "Possible secret in scripts/test-generate-lesson-prod.sh"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-5be9cf535ebc4202", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/job-seeker/approval-ui/index.html:338", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/job-seeker/approval-ui/index.html:338"}, "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-ff49172f5016e153", "name": "Insecure pattern 'cors_wildcard' in scripts/job-seeker/approval-ui/serve.py:221", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/job-seeker/approval-ui/serve.py:221"}, "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-429afce5d7fc9575", "name": "Insecure pattern 'direct_innerhtml_assignment' in components/zoo-footer.html:216", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in components/zoo-footer.html:216"}, "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-0d86eec3051ac1f5", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-iYjVTevk.html:1", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-iYjVTevk.html:1"}, "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-abd715bbd61adc50", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-CFO4LfNB.html:173", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-CFO4LfNB.html:173"}, "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-3f4d0b8abfc6a6c4", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-DoxgR7cw.html:173", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-DoxgR7cw.html:173"}, "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-d48d56fa93d1a93c", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/te-reo-maths-glossary-bilingual-alpha.html:577", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/te-reo-maths-glossary-bilingual-alpha.html:577"}, "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-cd1c764535f56946", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/index.html:38", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/index.html:38"}, "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-0639da4c0de037ec", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/probability-and-chance-in-m\u0101ori-games.html:275", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/probability-and-chance-in-m\u0101ori-games.html:275"}, "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-09432a3732b98cc1", "name": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/haka-comprehension-handout.html:342", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/haka-comprehension-handout.html:342"}, "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-1c8c555f8cc8ff93", "name": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/datasheet.html:624", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/datasheet.html:624"}, "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-e22c48264313a4bb", "name": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/lattice-explorer/index.html:683", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/lattice-explorer/index.html:683"}, "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-83f529b1743b1788", "name": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/cross-lane-correlation/index.html:699", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/cross-lane-correlation/index.html:699"}, "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-98682913537ef374", "name": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/graph-ring-traversal/index.html:912", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/graph-ring-traversal/index.html:912"}, "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-fa12ced1e0ddf234", "name": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/site-density-profile/index.html:946", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/site-density-profile/index.html:946"}, "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-aacb68aa6c20e16c", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/admin.html:408", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/admin.html:408"}, "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-10461b9552309256", "name": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/timeline.html:376", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/timeline.html:376"}, "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-1c5f5439282e1a0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/concepts/culturally-responsive-pedagogy.html:257", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/concepts/culturally-responsive-pedagogy.html:257"}, "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-b500d885bef48a40", "name": "Insecure pattern 'cors_wildcard' in mcp-server/server.legacy.js:32", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in mcp-server/server.legacy.js:32"}, "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-66ce763ed6c6bcd0", "name": "Insecure pattern 'cors_wildcard' in mcp-server/index.js:1957", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in mcp-server/index.js:1957"}, "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-7bbeffd46e0fc103", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/requests.html:499", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/requests.html:499"}, "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-0203e151142f514f", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/training.html:445", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/training.html:445"}, "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-84fa18687b487b41", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/case-file.html:501", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/case-file.html:501"}, "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-0a3f6adb9326d5f2", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/grievance.html:645", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/grievance.html:645"}, "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-ca9891153aa78da0", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/holidays.html:556", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/holidays.html:556"}, "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-d4b590a176b7d393", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/sick-leave.html:376", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/sick-leave.html:376"}, "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-1910bbbf02f51e71", "name": "Insecure pattern 'insert_adjacent_html' in kaimahi/sick-leave.html:401", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in kaimahi/sick-leave.html:401"}, "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-b9070aa9b7e083dc", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/deductions.html:345", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/deductions.html:345"}, "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-4e54155ac617ca0b", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/resources.html:729", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/resources.html:729"}, "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-282dd36186bb2c9a", "name": "Insecure pattern 'insert_adjacent_html' in kaimahi/resources.html:650", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in kaimahi/resources.html:650"}, "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-b7189be77d1649b2", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/workers.html:298", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/workers.html:298"}, "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-4eca4470aa6d398d", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/calculator.html:789", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/calculator.html:789"}, "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-1af2bd51b6746153", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/union.html:381", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/union.html:381"}, "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-44e80bdff0e51069", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/agreement.html:431", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/agreement.html:431"}, "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-bb7cc8e7ba9ab5ef", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-admin.js:39", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-admin.js:39"}, "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-431d29c3ed5d22b4", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-wage-hub.js:136", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-wage-hub.js:136"}, "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-7b81cbccefb308ea", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-conduct-safety.js:322", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-conduct-safety.js:322"}, "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-617e96ada6295f84", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:194", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:194"}, "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-31350c6830034c53", "name": "Insecure pattern 'direct_outerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:951", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:951"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2521649839f11b37", "name": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-coverage.js:81", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-coverage.js:81"}, "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-2213465b633f375c", "name": "Insecure pattern 'direct_innerhtml_assignment' in teachers/dashboard.html:185", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in teachers/dashboard.html:185"}, "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-12d496a4420fc6c6", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/motivation-engagement-discussion.html:829", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/motivation-engagement-discussion.html:829"}, "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-5b203d0d84bf9208", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part1-engagement.html:665", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part1-engagement.html:665"}, "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-e3420846c69c2d8c", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/impact.html:155", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/impact.html:155"}, "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-565dd3d2222c1e70", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cald-lecture-reflection.html:601", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cald-lecture-reflection.html:601"}, "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-be9d3dbb024debd2", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/observations.html:156", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/observations.html:156"}, "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-6a14c3684ec4f0ef", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/literacy-lecture-reflection.html:936", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/literacy-lecture-reflection.html:936"}, "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-e2921eafadc33322", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/index.html:442", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/index.html:442"}, "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-ea692c0a8c29b2ba", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/pasifika-lecture-reflection.html:545", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/pasifika-lecture-reflection.html:545"}, "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-964c3c93715111d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/collegial-discussion-613.html:517", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/collegial-discussion-613.html:517"}, "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-053c6797f1ad91a8", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/goals.html:918", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/goals.html:918"}, "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-98bcad3f889485f7", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/learning.html:309", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/learning.html:309"}, "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-2cad86f1694cc8bd", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/class-newsletters-691.html:233", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/class-newsletters-691.html:233"}, "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-30a191f5ff456bfb", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/evidence.html:439", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/evidence.html:439"}, "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-2c0fbe3ec9123c29", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part2-engagement.html:325", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part2-engagement.html:325"}, "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-974e98aa6c78645f", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/historical-significance-reflection.html:572", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/historical-significance-reflection.html:572"}, "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-c9a663b992ad8a7a", "name": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/film-analysis-two-cars.html:657", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/film-analysis-two-cars.html:657"}, "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-71f3c5e76949f11c", "name": "Insecure pattern 'cors_wildcard' in supabase/functions/send-welcome-email/index.ts:95", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/send-welcome-email/index.ts:95"}, "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-18d86848813bf0ef", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/admin-checkin.html:342", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/admin-checkin.html:342"}, "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-8f8f0e13216b1aa5", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/dashboard.html:443", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/dashboard.html:443"}, "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-7a597af1c595852f", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/index.html:1541", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/index.html:1541"}, "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-124f15aeb5580d2b", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/redeem.html:337", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/redeem.html:337"}, "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-c28da336bfbc136a", "name": "Insecure pattern 'local_storage_auth_token' in ai-workshop/redeem.html:397", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in ai-workshop/redeem.html:397"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-72e790bb628d52cd", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/organiser.html:425", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/organiser.html:425"}, "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-a8c48b94699a7021", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/booking-success.html:243", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/booking-success.html:243"}, "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-9924c125f3830aaf", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/alumni.html:531", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/alumni.html:531"}, "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-dc35ae217b7f5de9", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/04-terminal.html:1563", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/04-terminal.html:1563"}, "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-2eebd06375ea9df7", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/05-build-anything.html:2023", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/05-build-anything.html:2023"}, "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-9b7abe225dbf7d66", "name": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/health/index.html:220", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/health/index.html:220"}, "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-6e2819f0037186b5", "name": "Possible secret in infrastructure/scripts/archive/direct_column_add.py", "shortDescription": {"text": "Possible secret in infrastructure/scripts/archive/direct_column_add.py"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e2e239e5288576a9", "name": "Insecure pattern 'subprocess_shell_true' in infrastructure/scripts/archive/direct_column_add.py:59", "shortDescription": {"text": "Insecure pattern 'subprocess_shell_true' in infrastructure/scripts/archive/direct_column_add.py:59"}, "fullDescription": {"text": "Found a known-risky pattern (subprocess_shell_true). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a4506584210c0c59", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/wananga.html:447", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/wananga.html:447"}, "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-8daf12717f872cb4", "name": "Insecure pattern 'direct_innerhtml_assignment' in knowledge/learning-areas-status.html:316", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in knowledge/learning-areas-status.html:316"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d825d5f415972e3", "name": "Very large file: js/browse-page.js (2582 lines)", "shortDescription": {"text": "Very large file: js/browse-page.js (2582 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-07a4a99db8fc92b4", "name": "Very large file: js/creation-studio.js (2079 lines)", "shortDescription": {"text": "Very large file: js/creation-studio.js (2079 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-f9fc2c9b28bc709c", "name": "Very large file: js/curriculum-viewer.js (5173 lines)", "shortDescription": {"text": "Very large file: js/curriculum-viewer.js (5173 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-38cdae520c8d47ef", "name": "Very large file: js/resource-service.js (1766 lines)", "shortDescription": {"text": "Very large file: js/resource-service.js (1766 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-01bdb62a6279d17c", "name": "Very large file: js/maori-dictionary-api.js (1812 lines)", "shortDescription": {"text": "Very large file: js/maori-dictionary-api.js (1812 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-c9c5451c1a2aa102", "name": "Very large file: js/shared-sidebar.js (1182 lines)", "shortDescription": {"text": "Very large file: js/shared-sidebar.js (1182 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-ea96dbc39a62edfc", "name": "Very large file: js/my-kete-page.js (1386 lines)", "shortDescription": {"text": "Very large file: js/my-kete-page.js (1386 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-84258af8d9755449", "name": "Very large file: js/youtube-api.js (1207 lines)", "shortDescription": {"text": "Very large file: js/youtube-api.js (1207 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-c6c59d7bcb23dd1c", "name": "Very large file: js/my-kete-timetable.js (1117 lines)", "shortDescription": {"text": "Very large file: js/my-kete-timetable.js (1117 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-fe9a3353e124e060", "name": "Very large file: scripts/index-architecture-to-graphrag.py (1521 lines)", "shortDescription": {"text": "Very large file: scripts/index-architecture-to-graphrag.py (1521 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-02cbeae5a557742f", "name": "Very large file: scripts/fix_23_failing_handouts.py (1192 lines)", "shortDescription": {"text": "Very large file: scripts/fix_23_failing_handouts.py (1192 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-cb3c85952d9d72b6", "name": "Very large file: mcp-server/index.js (2109 lines)", "shortDescription": {"text": "Very large file: mcp-server/index.js (2109 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-82a03176ab67ad54", "name": "Very large file: kaimahi/js/kaimahi-dashboard.js (1341 lines)", "shortDescription": {"text": "Very large file: kaimahi/js/kaimahi-dashboard.js (1341 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-ef4ade419b0661fa", "name": "Very large file: supabase/functions/graphrag-search/index.ts (1707 lines)", "shortDescription": {"text": "Very large file: supabase/functions/graphrag-search/index.ts (1707 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea3b5e389d8c9c0f", "name": "Low test-to-source ratio", "shortDescription": {"text": "Low test-to-source ratio"}, "fullDescription": {"text": "139 tests / 1000 src (ratio 0.14)."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34e40a81476a1c25", "name": "61 TODO/FIXME markers", "shortDescription": {"text": "61 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58f69ceba8fc9aab", "name": "Node manifest has dependencies but no lockfile: docker/te-toi/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: docker/te-toi/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3036d70d2146842b", "name": "Node manifest has dependencies but no lockfile: scripts/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: scripts/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "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 9366 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 210 placeholder/mock markers across 79 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, lockfile. 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": "low", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc55229a7a3c078d", "name": "Agent authority lacks a verifier contract: .mcp.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-67ab2d2aae3deb02", "name": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-requirements.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-requirements.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fc75cfd7a677c8fb", "name": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-impl.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-impl.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d070e155760b6c5", "name": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-system-prompt-loader.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-system-prompt-loader.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ea5150747628e84", "name": "Commented-code block (7 lines) in sw.js:143", "shortDescription": {"text": "Commented-code block (7 lines) in sw.js:143"}, "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-1ba8ee3ef4b01063", "name": "Network/subprocess call without timeout or try/except \u2014 docker/kahirangi/app.py:205", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 docker/kahirangi/app.py:205"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-784a4239dc108535", "name": "Blocking `requests.get(...)` inside `async def health_check` \u2014 docker/kahirangi/app.py:258", "shortDescription": {"text": "Blocking `requests.get(...)` inside `async def health_check` \u2014 docker/kahirangi/app.py:258"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `requests.get(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-40bfbe32f533a3b9", "name": "Commented-code block (5 lines) in docker/te-mahara/worker.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in docker/te-mahara/worker.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf9d966f63e04ca9", "name": "Commented-code block (6 lines) in docker/te-aronui/test_rlm_e2e.py:254", "shortDescription": {"text": "Commented-code block (6 lines) in docker/te-aronui/test_rlm_e2e.py:254"}, "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-25f220bdfc2a2e92", "name": "Commented-code block (5 lines) in docker/te-aronui/test_async_rlm.py:46", "shortDescription": {"text": "Commented-code block (5 lines) in docker/te-aronui/test_async_rlm.py:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b453d05e9c4a96c1", "name": "Commented-code block (5 lines) in docker/te-aronui/test_overlap.py:16", "shortDescription": {"text": "Commented-code block (5 lines) in docker/te-aronui/test_overlap.py:16"}, "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-041d50cc79938539", "name": "Blocking `time.sleep(...)` inside `async def main_loop` \u2014 docker/te-aronui/rlm_worker.py:119", "shortDescription": {"text": "Blocking `time.sleep(...)` inside `async def main_loop` \u2014 docker/te-aronui/rlm_worker.py:119"}, "fullDescription": {"text": "Sync I/O inside an async function blocks the event loop. While `time.sleep(...)` is running, *all* other coroutines on this loop are paused \u2014 silent throughput collapse under concurrency. Use the async equivalent (`httpx.AsyncClient`, `asyncio.sleep`, `aiofiles`) or wrap with `await asyncio.to_thread(...)`."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "high", "confidence": 1.0}}, {"id": "scanner-192656a9b1e928a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 functions/_middleware.js:173", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/_middleware.js:173"}, "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-4093625387805e32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 functions/api/auth-google-exchange.js:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/api/auth-google-exchange.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-314962fcb123816f", "name": "Legacy-named symbol `curriculum_search_v2` in tests/verify-graphrag-rpc.js:44", "shortDescription": {"text": "Legacy-named symbol `curriculum_search_v2` in tests/verify-graphrag-rpc.js:44"}, "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-4c392735d2e9165c", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_function_fixes.py:4", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_function_fixes.py:4"}, "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-cf6a26a9940d6f2e", "name": "Legacy-named symbol `is_backup` in tests/integration/test_resource_links_simple.py:125", "shortDescription": {"text": "Legacy-named symbol `is_backup` in tests/integration/test_resource_links_simple.py:125"}, "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-8596a4c2649db007", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_api.py:12", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_api.py:12"}, "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-c58538aea29d5a1d", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_browser_simulation.py:39", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_browser_simulation.py:39"}, "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-29e45fea51bfe462", "name": "Legacy-named symbol `graphrag_query_v2` in tests/integration/test_graphrag_tools.py:25", "shortDescription": {"text": "Legacy-named symbol `graphrag_query_v2` in tests/integration/test_graphrag_tools.py:25"}, "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-99fed7a43748af5f", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_enhanced_api.py:12", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_enhanced_api.py:12"}, "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-8d23e838e597ebe3", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_viewer_functionality.py:22", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_viewer_functionality.py:22"}, "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-c9509d357226da33", "name": "Legacy-named symbol `curriculum_search_v2` in tests/integration/test_new_function.py:6", "shortDescription": {"text": "Legacy-named symbol `curriculum_search_v2` in tests/integration/test_new_function.py:6"}, "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-c7d2645a667a822d", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_simple_query.py:29", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_simple_query.py:29"}, "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-4b58974cf0aa09cf", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_function.py:25", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_function.py:25"}, "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-e55a0c4361e63bf4", "name": "Legacy-named symbol `unit_copy` in tests/unit/test_sovereign_graphrag_metadata.py:247", "shortDescription": {"text": "Legacy-named symbol `unit_copy` in tests/unit/test_sovereign_graphrag_metadata.py:247"}, "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-1c3bab5fcbba9f46", "name": "Legacy-named symbol `curriculum_filter_v1` in tests/unit/test_graphrag.py:15", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/unit/test_graphrag.py:15"}, "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-cf823e80bc95b9a1", "name": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/account-settings.spec.ts:87", "shortDescription": {"text": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/account-settings.spec.ts:87"}, "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-c39e666a3f238809", "name": "Commented-code block (5 lines) in tests/playwright/auth-oauth.spec.ts:163", "shortDescription": {"text": "Commented-code block (5 lines) in tests/playwright/auth-oauth.spec.ts:163"}, "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-1363ee68819c81ed", "name": "Commented-code block (5 lines) in tests/playwright/student-portal.spec.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in tests/playwright/student-portal.spec.ts:58"}, "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-9949ae8af374bb46", "name": "Legacy-named symbol `tka_creation_recent_exports_v1` in tests/playwright/creation-studio.spec.ts:108", "shortDescription": {"text": "Legacy-named symbol `tka_creation_recent_exports_v1` in tests/playwright/creation-studio.spec.ts:108"}, "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-3916cc0f00ea3aeb", "name": "Commented-code block (5 lines) in tests/playwright/auth-gates.spec.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in tests/playwright/auth-gates.spec.ts: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-48af6ea9fb31cd9a", "name": "Legacy-named symbol `tka_wananga_history_v1` in tests/playwright/new-features.spec.ts:137", "shortDescription": {"text": "Legacy-named symbol `tka_wananga_history_v1` in tests/playwright/new-features.spec.ts:137"}, "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-a262d21e30529585", "name": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/product-readiness.spec.ts:254", "shortDescription": {"text": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/product-readiness.spec.ts:254"}, "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-3e80847d97af5e26", "name": "Commented-code block (5 lines) in _personal/sovereign-lattice/content/tools/winding_number_audit.py:78", "shortDescription": {"text": "Commented-code block (5 lines) in _personal/sovereign-lattice/content/tools/winding_number_audit.py:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bae0895bc0b836d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/stripe-checkout.js:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/stripe-checkout.js:103"}, "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-ae0e914ef58a95c6", "name": "Legacy-named symbol `tka_creation_recent_exports_v1` in js/creation-studio.js:30", "shortDescription": {"text": "Legacy-named symbol `tka_creation_recent_exports_v1` in js/creation-studio.js:30"}, "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-62f40d4c92c210d8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/creation-studio.js:1658", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/creation-studio.js:1658"}, "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-fe8b9bcf4b2dc315", "name": "Legacy-named symbol `eleven_multilingual_v2` in js/pronunciation-config.js:67", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in js/pronunciation-config.js:67"}, "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-9063c524f68e9c62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/pronunciation-config.js:317", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/pronunciation-config.js:317"}, "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-b5f0aedf470a532d", "name": "Legacy-named symbol `resource_permalink_copy` in js/save-resource.js:284", "shortDescription": {"text": "Legacy-named symbol `resource_permalink_copy` in js/save-resource.js:284"}, "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-7aca0f483582e8c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/teacher-dashboard.js:309", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/teacher-dashboard.js:309"}, "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-bf38165a07fb9b36", "name": "Commented-code block (6 lines) in js/site-gate.js:63", "shortDescription": {"text": "Commented-code block (6 lines) in js/site-gate.js:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5f1f90ef9cdec7d6", "name": "Legacy-named symbol `isLegacy` in js/curriculum-viewer.js:192", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in js/curriculum-viewer.js:192"}, "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-2cd1c10ffd681523", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-promotion.js:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-promotion.js:75"}, "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-078e08137a0a37cc", "name": "Commented-code block (5 lines) in js/workshop-core.js:171", "shortDescription": {"text": "Commented-code block (5 lines) in js/workshop-core.js:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf7ccae5900b6b08", "name": "Commented-code block (5 lines) in js/quantum-adaptive-engine.js:673", "shortDescription": {"text": "Commented-code block (5 lines) in js/quantum-adaptive-engine.js:673"}, "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-7dc6c419bd7e0ef2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/student-dashboard.js:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/student-dashboard.js:222"}, "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-17ad85a620425503", "name": "Legacy-named symbol `getCountLegacy` in js/curriculum-api.js:373", "shortDescription": {"text": "Legacy-named symbol `getCountLegacy` in js/curriculum-api.js:373"}, "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-6e24006b3df97755", "name": "Commented-code block (7 lines) in js/supabase-client.js:106", "shortDescription": {"text": "Commented-code block (7 lines) in js/supabase-client.js:106"}, "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-5e7e50178efcfc9d", "name": "Legacy-named symbol `curriculum_filter_v1` in js/resource-service.js:1206", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in js/resource-service.js:1206"}, "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-a3fa88c975ed12b9", "name": "Legacy-named symbol `ticker__copy` in js/auth-ui.js:585", "shortDescription": {"text": "Legacy-named symbol `ticker__copy` in js/auth-ui.js:585"}, "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-8f13a7667f2513ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/other-resources-graphrag.js:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/other-resources-graphrag.js:27"}, "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-665b13927d7d1af3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/forum-api.js:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/forum-api.js:124"}, "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-990e99c6711e4b89", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-sidebar.js:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-sidebar.js:14"}, "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-71d7b819e051651e", "name": "Legacy-named symbol `eleven_multilingual_v2` in js/maori-pronunciation.js:52", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in js/maori-pronunciation.js:52"}, "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-6b6cedc1de7f050d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/maori-pronunciation.js:478", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/maori-pronunciation.js:478"}, "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-f1c874706c8037df", "name": "Commented-code block (6 lines) in js/shared-components-navigation.js:214", "shortDescription": {"text": "Commented-code block (6 lines) in js/shared-components-navigation.js:214"}, "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-8144580b0583908b", "name": "Commented-code block (6 lines) in js/shared-sidebar.js:85", "shortDescription": {"text": "Commented-code block (6 lines) in js/shared-sidebar.js:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1752bf9b9ad68ad", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-sidebar.js:664", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-sidebar.js:664"}, "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-5d7fad949ee24b71", "name": "Legacy-named symbol `spotlight__copy` in js/my-kete-page.js:1032", "shortDescription": {"text": "Legacy-named symbol `spotlight__copy` in js/my-kete-page.js:1032"}, "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-3032b4f67da25047", "name": "Legacy-named symbol `resource_permalink_copy` in js/main.js:767", "shortDescription": {"text": "Legacy-named symbol `resource_permalink_copy` in js/main.js:767"}, "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-82da7fda4d2f34dd", "name": "Legacy-named symbol `tka_wananga_example_dismissed_v1` in js/wananga-example.js:7", "shortDescription": {"text": "Legacy-named symbol `tka_wananga_example_dismissed_v1` in js/wananga-example.js:7"}, "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-4c22391b8c63fda3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/tts-harness.js:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/tts-harness.js:132"}, "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-96b0a3f56b2c33d3", "name": "Commented-code block (5 lines) in js/auth-store.js:81", "shortDescription": {"text": "Commented-code block (5 lines) in js/auth-store.js:81"}, "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-541684bc02181f8c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/kupu-component.js:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/kupu-component.js:93"}, "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-a0c407b77807cb91", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/ai-assistant.js:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/ai-assistant.js:78"}, "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-f82589fc32bff556", "name": "Commented-code block (7 lines) in js/shared-components.js:371", "shortDescription": {"text": "Commented-code block (7 lines) in js/shared-components.js:371"}, "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-b262902a6e5dae0c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-components.js:200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-components.js:200"}, "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-98cb4461d07fc434", "name": "Legacy-named symbol `tka_wananga_history_v1` in js/pages/wananga-init.js:24", "shortDescription": {"text": "Legacy-named symbol `tka_wananga_history_v1` in js/pages/wananga-init.js:24"}, "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-a7acefeaa716bfd9", "name": "Legacy-named symbol `tka_workflow_context_v1` in js/services/studio-bridge.js:9", "shortDescription": {"text": "Legacy-named symbol `tka_workflow_context_v1` in js/services/studio-bridge.js:9"}, "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-556cbb2fa3d29701", "name": "Legacy-named symbol `tka_entitlements_v1` in js/services/entitlements.js:3", "shortDescription": {"text": "Legacy-named symbol `tka_entitlements_v1` in js/services/entitlements.js:3"}, "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-c7af650994773315", "name": "Commented-code block (5 lines) in js/services/entitlements.js:90", "shortDescription": {"text": "Commented-code block (5 lines) in js/services/entitlements.js:90"}, "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-cfac0f9a9da2db5b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/entitlements.js:524", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/entitlements.js:524"}, "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-4f11a838a294e99e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/ai-block-generator.js:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/ai-block-generator.js:79"}, "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-36be9bc7b5e23939", "name": "Commented-code block (5 lines) in js/mindmap/engine.js:799", "shortDescription": {"text": "Commented-code block (5 lines) in js/mindmap/engine.js:799"}, "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-b2f84031226b13d7", "name": "Commented-code block (6 lines) in scripts/verify-curriculum-statements.js:620", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/verify-curriculum-statements.js:620"}, "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-fe470778e0edb48e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enable-cloudflare-auto-deploy.js:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enable-cloudflare-auto-deploy.js:82"}, "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-5848fe88c04276ca", "name": "Commented-code block (5 lines) in scripts/simulate-teacher-bots.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/simulate-teacher-bots.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-fc267478761e609d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-graphrag-traversal-parity.js:126", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-graphrag-traversal-parity.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-c895472e1f7e3c74", "name": "Commented-code block (6 lines) in scripts/connect-graph-to-curriculum.js:61", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/connect-graph-to-curriculum.js:61"}, "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-bc64e174092f59d0", "name": "Commented-code block (5 lines) in scripts/regenerate-embeddings.js:91", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/regenerate-embeddings.js:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe5ba7d1ac27fb0e", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/run-alignment-lane.py:65", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run-alignment-lane.py:65"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7252de09ac29c3ed", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ears.js:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ears.js:87"}, "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-0b6c32fb8cbb297a", "name": "Commented-code block (5 lines) in scripts/fix-nested-main-bug.py:72", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fix-nested-main-bug.py:72"}, "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-fe98e2f2d7f8e31b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eyes.js:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eyes.js:76"}, "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-981a3fad309dc933", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-latest-deployment.js:53", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-latest-deployment.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-a1ce5a3aa6b0efdb", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/patch-second-pass.py:78", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/patch-second-pass.py:78"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7168e275fb38256", "name": "Commented-code block (5 lines) in scripts/strip-injections.py:306", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/strip-injections.py:306"}, "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-f3d506dd72898445", "name": "Legacy-named symbol `graphrag_query_v2` in scripts/graphrag_query_v2.py:9", "shortDescription": {"text": "Legacy-named symbol `graphrag_query_v2` in scripts/graphrag_query_v2.py:9"}, "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-0561c918e2879a20", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/inspect-graphrag-traversal-diff.js:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/inspect-graphrag-traversal-diff.js:138"}, "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-af5c8b1853ca55a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-nz-schools.js:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-nz-schools.js:36"}, "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-6944eda3ca2dea09", "name": "Legacy-named symbol `curriculum_filter_v1` in scripts/codex_mcp_bridge.py:23", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/codex_mcp_bridge.py:23"}, "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-14b532d538117f84", "name": "Commented-code block (5 lines) in scripts/parse_nzc_2007.py:53", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/parse_nzc_2007.py:53"}, "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-39f5a819f55e7ed9", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/graphrag_batch_embeddings.py:24", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/graphrag_batch_embeddings.py:24"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0bc7d5200e507bff", "name": "Commented-code block (12 lines) in scripts/te_reo_perfect_extract.py:17", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/te_reo_perfect_extract.py:17"}, "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-21561c75c827af1a", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/kaimahi-report.py:65", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/kaimahi-report.py:65"}, "fullDescription": {"text": "`urllib.request.urlopen(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33d5f22d0113ce21", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/disable-cloudflare-auto-deploy.js:161", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/disable-cloudflare-auto-deploy.js:161"}, "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-bd66e76cc2e0818d", "name": "Legacy-named symbol `setEnvironmentVariableLegacy` in scripts/set-cloudflare-env-vars-supabase.js:144", "shortDescription": {"text": "Legacy-named symbol `setEnvironmentVariableLegacy` in scripts/set-cloudflare-env-vars-supabase.js:144"}, "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-719bdf39edd38133", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/shell-eyes.py:43", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/shell-eyes.py:43"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-718e090bea350484", "name": "Commented-code block (8 lines) in scripts/fix_verbatim_final.py:404", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/fix_verbatim_final.py:404"}, "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-b3016293553d1bde", "name": "Legacy-named symbol `isLegacy` in scripts/generate-source-registry.js:60", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in scripts/generate-source-registry.js:60"}, "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-d1a345470f033c15", "name": "Commented-code block (5 lines) in scripts/report-content-tranche-priority.js:279", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/report-content-tranche-priority.js:279"}, "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-bc7c6a4913da6fca", "name": "Legacy-named symbol `curriculum_filter_v1` in scripts/quick_graphrag_query.py:20", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/quick_graphrag_query.py:20"}, "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-cd833345d4650c91", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-codebase-intelligence.py:89", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-codebase-intelligence.py:89"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-800172ead38502b3", "name": "Legacy-named symbol `curriculum_filter_v1` in scripts/saas_coordination_system.py:82", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/saas_coordination_system.py:82"}, "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-19f9714fe440aa71", "name": "Commented-code block (5 lines) in scripts/inject_ui_components.py:112", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/inject_ui_components.py:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76f2b38e068efd14", "name": "Commented-code block (6 lines) in scripts/fix_verbatim_statements.py:590", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/fix_verbatim_statements.py:590"}, "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-cd147de3b4ee2fdc", "name": "Commented-code block (5 lines) in scripts/comprehensive_site_audit.py:54", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/comprehensive_site_audit.py:54"}, "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-521c118b9819c14d", "name": "Legacy-named symbol `is_legacy` in scripts/build-teaching-content-registry.js:608", "shortDescription": {"text": "Legacy-named symbol `is_legacy` in scripts/build-teaching-content-registry.js:608"}, "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-6d9d052e7a530671", "name": "Commented-code block (5 lines) in scripts/force-fix-browse-redirects.js:53", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/force-fix-browse-redirects.js:53"}, "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-f9fc76eb4f9fe877", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-stats.js:1", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-stats.js:1"}, "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-c21d50f8ccf7a207", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-cloudflare-deployment.js:66", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-cloudflare-deployment.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-ffbab3028f9ee6b8", "name": "Legacy-named symbol `lessons_backup` in scripts/shell-census.py:28", "shortDescription": {"text": "Legacy-named symbol `lessons_backup` in scripts/shell-census.py:28"}, "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-4249e4986c48da5d", "name": "Commented-code block (5 lines) in scripts/inject_axioms.py:117", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/inject_axioms.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-b15f73b60cc839f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/deploy-nesting.js:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/deploy-nesting.js:17"}, "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-82c24b735c540afc", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/fix-data-subject.py:94", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/fix-data-subject.py:94"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a295ffbb9a472510", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/log-archival/archive_logs.py:61", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/log-archival/archive_logs.py:61"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc675d44d3bcb2df", "name": "Network/subprocess call without timeout or try/except \u2014 scripts/job-seeker/cv_renderer.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/job-seeker/cv_renderer.py:77"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4cc2d13a704d919", "name": "Stub function `log_message` (body is just `pass`/`return`) \u2014 scripts/job-seeker/approval-ui/serve.py:301", "shortDescription": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 scripts/job-seeker/approval-ui/serve.py:301"}, "fullDescription": {"text": "Likely an AI scaffold that was never filled in. Remove or implement."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d12fe0916d5149d", "name": "Legacy-named symbol `final_copy` in scripts/lib/sovereign_graphrag.py:658", "shortDescription": {"text": "Legacy-named symbol `final_copy` in scripts/lib/sovereign_graphrag.py:658"}, "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-63952afed204d3da", "name": "Commented-code block (7 lines) in scripts/legacy/scan_public.js:25", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/legacy/scan_public.js:25"}, "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-16f9ca7674e7ec2f", "name": "Commented-code block (5 lines) in sovereign-lattice/stl_mesh_validator.py:72", "shortDescription": {"text": "Commented-code block (5 lines) in sovereign-lattice/stl_mesh_validator.py:72"}, "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-aae3aebd56bab6db", "name": "Legacy-named symbol `files_to_copy` in sovereign-lattice/compile_b2b_portfolio.py:584", "shortDescription": {"text": "Legacy-named symbol `files_to_copy` in sovereign-lattice/compile_b2b_portfolio.py:584"}, "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-35fb19fc49e8540e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/mcp-stdio-server.js:569", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/mcp-stdio-server.js:569"}, "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-513d2e85ae26e8e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/index.js:241", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/index.js:241"}, "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-fdab30a291b0c1ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-companion/index.ts:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-companion/index.ts:204"}, "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-8e8070c328cd05a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/process-whiteboard/index.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/process-whiteboard/index.ts:60"}, "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-cc7259be35442cb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-glm-free/index.ts:191", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-glm-free/index.ts:191"}, "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-4cefe450cdfcc4dd", "name": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts:356", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts:356"}, "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-a9eff0f091176569", "name": "Commented-code block (7 lines) in supabase/functions/forum-post-news-bot/index.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in supabase/functions/forum-post-news-bot/index.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7c41dce2b87b9fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-post-news-bot/index.ts:340", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-post-news-bot/index.ts:340"}, "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-ee29baa815bcf44e", "name": "Legacy-named symbol `curriculum_search_v2` in supabase/functions/graphrag-search/index.ts:1305", "shortDescription": {"text": "Legacy-named symbol `curriculum_search_v2` in supabase/functions/graphrag-search/index.ts:1305"}, "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-24e311015355e2f9", "name": "Commented-code block (5 lines) in supabase/functions/graphrag-search/index.ts:1505", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/graphrag-search/index.ts:1505"}, "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-81578d152e7398ac", "name": "Commented-code block (5 lines) in supabase/functions/generate-lesson/index.ts:312", "shortDescription": {"text": "Commented-code block (5 lines) in supabase/functions/generate-lesson/index.ts:312"}, "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-b8536cadfcb6cc2b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson/index.ts:269", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson/index.ts:269"}, "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-71a15e4a040f46f0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/send-workshop-emails/index.ts:344", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/send-workshop-emails/index.ts: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-1f2d6813a4a88562", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-timetable/index.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-timetable/index.ts:55"}, "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-b0215998ccc75396", "name": "Legacy-named symbol `eleven_multilingual_v2` in supabase/functions/tts-proxy/index.ts:79", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in supabase/functions/tts-proxy/index.ts:79"}, "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-c06e7a992841ba4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/tts-proxy/index.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/tts-proxy/index.ts:63"}, "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-97580d4c5510a626", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-secure/index.ts:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-secure/index.ts:178"}, "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-12a60f5a2035db2f", "name": "Legacy-named symbol `cleanupOld` in supabase/functions/news-fetcher/index.ts:239", "shortDescription": {"text": "Legacy-named symbol `cleanupOld` in supabase/functions/news-fetcher/index.ts:239"}, "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-223a3074f4b00bdd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/analyze-reflections/index.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/analyze-reflections/index.ts:43"}, "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-6bac7d1b813a2df5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-notify-email/index.ts:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-notify-email/index.ts:114"}, "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-a38a7819e19bafce", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/deploy_migration.py:47", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/deploy_migration.py:47"}, "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-ab528e618547434e", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/deploy_forum_content.py:25", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/deploy_forum_content.py:25"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d3169dc6f57ee40b", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_mcp_queries.py:30", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_mcp_queries.py:30"}, "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-6889becd6ab3e022", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_resource_service_fixed.py:89", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_resource_service_fixed.py:89"}, "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-699c0ca4ba9125b4", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_database_fix.py:15", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_database_fix.py:15"}, "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-8008659fed82294e", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/verify_graphrag_fix.py:43", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/verify_graphrag_fix.py:43"}, "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-edac2fb1ef0738ce", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_fix.py:46", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_fix.py:46"}, "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-14afe80da0ef4b3e", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_fix.py:28", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_fix.py:28"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ae06ccd2ae5310d", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_simple.py:14", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_simple.py:14"}, "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-47db576c2f5e3f8c", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_column_add.py:72", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_column_add.py:72"}, "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-f0a184272bff6577", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_column_add.py:59", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_column_add.py:59"}, "fullDescription": {"text": "`subprocess.run(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f388f3f7819dabbb", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_sql_fix.py:75", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_sql_fix.py:75"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b53398b4af23f6c0", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/setup_codex_mcp_bridge.py:36", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/setup_codex_mcp_bridge.py:36"}, "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-de019554bfc97e38", "name": "Legacy-named symbol `curriculum_v2` in infrastructure/scripts/archive/list_tables.py:30", "shortDescription": {"text": "Legacy-named symbol `curriculum_v2` in infrastructure/scripts/archive/list_tables.py:30"}, "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-d6615e2628a2b6ed", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/index_documentation_files.py:90", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/index_documentation_files.py:90"}, "fullDescription": {"text": "`requests.patch(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2f6236a291692caf", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/enhanced_graphrag_query.py:112", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/enhanced_graphrag_query.py:112"}, "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-2bc60679e6e96cd8", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/deploy_forum_manual.py:30", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/deploy_forum_manual.py:30"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7198745b66211661", "name": "Commented-code block (5 lines) in infrastructure/scripts/archive/test_resource_service_directly.py:21", "shortDescription": {"text": "Commented-code block (5 lines) in infrastructure/scripts/archive/test_resource_service_directly.py:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31d0c061ed6c9ea0", "name": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/archive/investigate_graphrag.py:47", "shortDescription": {"text": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/archive/investigate_graphrag.py:47"}, "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-250ac81e9fcb6c22", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/final_fix.py:87", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/final_fix.py:87"}, "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-7dc48a3661716184", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/final_fix.py:47", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/final_fix.py:47"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e9cf60e2af2bb25b", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/deploy_multi_agent_infrastructure.py:120", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/deploy_multi_agent_infrastructure.py:120"}, "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-2fb901426d7ede92", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/comprehensive_graphrag_query.py:26", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/comprehensive_graphrag_query.py:26"}, "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-f5dbaf53312a5e3b", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/manual_sql_fix.py:32", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/manual_sql_fix.py:32"}, "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-39303480e0c66145", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_column_fix.py:15", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_column_fix.py:15"}, "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-7d2a8219a427d6b1", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_function_fix.py:2", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_function_fix.py:2"}, "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-1b84f2d81e88b952", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/urgent_column_fix.py:57", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/urgent_column_fix.py:57"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67e8ce97fea25700", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_function_fix.py:27", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_function_fix.py:27"}, "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-ee3ceee0c17033a2", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/diagnose_db.py:42", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/diagnose_db.py:42"}, "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-e5498e4e37f76e24", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_function.py:19", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_function.py:19"}, "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-68ece05abb1f9288", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_directly.py:57", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_directly.py:57"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f87f491852b4c72a", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_db_schema.py:47", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_db_schema.py:47"}, "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-7cafa34544bc1bb8", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_db_check.py:15", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_db_check.py:15"}, "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-4587a5e7c4a14bac", "name": "Commented-code block (6 lines) in infrastructure/scripts/archive/apply_graphrag_fix.py:20", "shortDescription": {"text": "Commented-code block (6 lines) in infrastructure/scripts/archive/apply_graphrag_fix.py:20"}, "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-bfacb84f538ae418", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_query.py:59", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_query.py:59"}, "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-d69cca24c57c92a1", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_curriculum_function.py:2", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_curriculum_function.py:2"}, "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-18ccd6ca63089bc5", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/batch_index_high_priority.py:", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/batch_index_high_priority.py:126"}, "fullDescription": {"text": "`requests.patch(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ff7986514d850b7", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/setup_codex_mcp_bridge.py:36", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/setup_codex_mcp_bridge.py:36"}, "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-df5ab411bb01524d", "name": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/maintenance/enhanced_graphrag_query.py:115", "shortDescription": {"text": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/maintenance/enhanced_graphrag_query.py:115"}, "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-2401cf7e347ab5a9", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_forum_manual.py:30", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_forum_manual.py:30"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-03185e552a37d0c8", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_unified_function.py:25", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_unified_function.py:25"}, "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-1ec89d04e9e8effc", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_unified_function.py:31", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_unified_function.py:31"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e2dec4e0e12dedd", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/fix_function_overload_emergency.py:18", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/fix_function_overload_emergency.py:18"}, "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-4e3a971a59d34493", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_multi_agent_infrastructure.py:12", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_multi_agent_infrastructure.py:120"}, "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-df634fe3de55a496", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/comprehensive_graphrag_query.py:26", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/comprehensive_graphrag_query.py:26"}, "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-5590e2d5f15fbe3d", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/direct_function_fix.py:2", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/direct_function_fix.py:2"}, "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-8517cdd1ee48c647", "name": "Legacy-named symbol `bulk_indexer_v2` in infrastructure/scripts/maintenance/fixed_bulk_indexer.py:124", "shortDescription": {"text": "Legacy-named symbol `bulk_indexer_v2` in infrastructure/scripts/maintenance/fixed_bulk_indexer.py:124"}, "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-8e2ee295578105ac", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/graphrag_bulk_indexer.py:94", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/graphrag_bulk_indexer.py:94"}, "fullDescription": {"text": "`requests.patch(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93572d790b699d83", "name": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_function_fix.py:10", "shortDescription": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_function_fix.py:10"}, "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-81d8b874c75ebc9c", "name": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_function_fix.py:77", "shortDescription": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_function_fix.py:77"}, "fullDescription": {"text": "`requests.post(...)` here lacks both a `timeout=` arg and an enclosing try/except. This is exactly the class of bug that took down our git-clone earlier (HTTP/2 stream cancel surfaced as a fatal). Add a `timeout=` and wrap in try/except, or use a wrapper that retries."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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:\ndocker/kaitiaki/rlm_reasoner.py:close, docker/te-aronui/rlm_reasoner.py:close\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49c98f7cedd9c977", "name": "Near-duplicate function bodies in 4 places", "shortDescription": {"text": "Near-duplicate function bodies in 4 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\ndocker/kaitiaki/rlm_reasoner.py:main_async, docker/kaitiaki/rlm_reasoner.py:main, docker/te-aronui/rlm_reasoner.py:main_async, docker/te-aronui/rlm_reasoner.py:main\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a2f6818267a9a8", "name": "Near-duplicate function bodies in 8 places", "shortDescription": {"text": "Near-duplicate function bodies in 8 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\n_personal/sovereign-lattice/content/tools/wedge_core_divergence_audit.py:build_aperiodic_geometry, _personal/sovereign-lattice/content/tools/compare_wilson_mode_geometry.py:build_aperiodic_geometry, _personal/sovereign-lattice/content/tools/branch_cut_delaunay_dirac_probe.py:run_probe, _personal/sovereign-lattice/content/tools/twisted_delaunay_dirac_probe.py:run_probe\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02525d39071dd2c7", "name": "Near-duplicate function bodies in 5 places", "shortDescription": {"text": "Near-duplicate function bodies in 5 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\n_personal/sovereign-lattice/content/tools/wedge_core_divergence_audit.py:cut_shell_ratio, _personal/sovereign-lattice/content/tools/geometric_invariant_audit.py:cut_shell_ratio, _personal/sovereign-lattice/content/tools/cluster_puncture_divergence_audit.py:cut_shell_ratio, _personal/sovereign-lattice/content/tools/double_puncture_divergence_audit.py:cut_shell_ratio\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bb2e05a62aff069", "name": "FastAPI POST `generate_lesson` without auth dependency \u2014 docker/kahirangi/app.py:275", "shortDescription": {"text": "FastAPI POST `generate_lesson` without auth dependency \u2014 docker/kahirangi/app.py:275"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc33b7204baaa49c", "name": "FastAPI POST `rlm_query` without auth dependency \u2014 docker/te-aronui/rlm_api.py:153", "shortDescription": {"text": "FastAPI POST `rlm_query` without auth dependency \u2014 docker/te-aronui/rlm_api.py:153"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c25064b5cbc247a7", "name": "FastAPI POST `rlm_search` without auth dependency \u2014 docker/te-aronui/rlm_api.py:201", "shortDescription": {"text": "FastAPI POST `rlm_search` without auth dependency \u2014 docker/te-aronui/rlm_api.py:201"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-20dfbee461317d7a", "name": "FastAPI POST `rlm_chunk` without auth dependency \u2014 docker/te-aronui/rlm_api.py:222", "shortDescription": {"text": "FastAPI POST `rlm_chunk` without auth dependency \u2014 docker/te-aronui/rlm_api.py:222"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3610a61ba9420ebc", "name": "FastAPI POST `rlm_embed` without auth dependency \u2014 docker/te-aronui/rlm_api.py:247", "shortDescription": {"text": "FastAPI POST `rlm_embed` without auth dependency \u2014 docker/te-aronui/rlm_api.py:247"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-28b4b8abe5928db9", "name": "FastAPI POST `embed` without auth dependency \u2014 scripts/graphrag-embed-api.py:41", "shortDescription": {"text": "FastAPI POST `embed` without auth dependency \u2014 scripts/graphrag-embed-api.py:41"}, "fullDescription": {"text": "`@router.post` decorator with no `Depends(get_current_user)` or auth-shaped dependency in its signature. Mutating endpoints should require authentication unless explicitly public."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-77bb59ff4280b86d", "name": "Dangling fetch: POST https://oauth2.googleapis.com/token (functions/api/auth-google-exchange.js:435)", "shortDescription": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (functions/api/auth-google-exchange.js:435)"}, "fullDescription": {"text": "`functions/api/auth-google-exchange.js:435` calls `POST https://oauth2.googleapis.com/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/oauth2.googleapis.com/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8ffaab0508f6782", "name": "Dangling fetch: POST https://open.bigmodel.cn/api/paas/v4/embeddings (tests/probe_glm.js:11)", "shortDescription": {"text": "Dangling fetch: POST https://open.bigmodel.cn/api/paas/v4/embeddings (tests/probe_glm.js:11)"}, "fullDescription": {"text": "`tests/probe_glm.js:11` calls `POST https://open.bigmodel.cn/api/paas/v4/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/open.bigmodel.cn/api/paas/v4/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ce169f29ce2048c2", "name": "Dangling fetch: POST https://api.deepseek.com/v1/embeddings (tests/probe_alternatives.js:14)", "shortDescription": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/embeddings (tests/probe_alternatives.js:14)"}, "fullDescription": {"text": "`tests/probe_alternatives.js:14` calls `POST https://api.deepseek.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.deepseek.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d5dd8527fbee70f", "name": "Dangling fetch: GET /data/annotations.json (js/browse-page.js:393)", "shortDescription": {"text": "Dangling fetch: GET /data/annotations.json (js/browse-page.js:393)"}, "fullDescription": {"text": "`js/browse-page.js:393` calls `GET /data/annotations.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/annotations.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-069c73aaf0ef19da", "name": "Dangling fetch: POST /api/create-resource-forum-post (js/resource-promotion.js:75)", "shortDescription": {"text": "Dangling fetch: POST /api/create-resource-forum-post (js/resource-promotion.js:75)"}, "fullDescription": {"text": "`js/resource-promotion.js:75` calls `POST /api/create-resource-forum-post` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/create-resource-forum-post`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ed8c923b41532cb", "name": "Dangling fetch: POST /api/ai-companion (js/student-dashboard.js:222)", "shortDescription": {"text": "Dangling fetch: POST /api/ai-companion (js/student-dashboard.js:222)"}, "fullDescription": {"text": "`js/student-dashboard.js:222` calls `POST /api/ai-companion` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/ai-companion`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-48b02c95955aee79", "name": "Dangling fetch: GET /api/get-graphrag-resources?min_quality=3&require_complete=false&limit=0 (js/other-resources-graphra", "shortDescription": {"text": "Dangling fetch: GET /api/get-graphrag-resources?min_quality=3&require_complete=false&limit=0 (js/other-resources-graphrag.js:27)"}, "fullDescription": {"text": "`js/other-resources-graphrag.js:27` calls `GET /api/get-graphrag-resources?min_quality=3&require_complete=false&limit=0` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/get-graphrag-resources`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76f2132699b80f1f", "name": "Dangling fetch: GET /api/env (js/env-loader.js:47)", "shortDescription": {"text": "Dangling fetch: GET /api/env (js/env-loader.js:47)"}, "fullDescription": {"text": "`js/env-loader.js:47` calls `GET /api/env` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/env`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-25d0eb50e2b76bf5", "name": "Dangling fetch: POST /api/auth-forgot-password (js/forgot-password-ui.js:25)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-forgot-password (js/forgot-password-ui.js:25)"}, "fullDescription": {"text": "`js/forgot-password-ui.js:25` calls `POST /api/auth-forgot-password` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-forgot-password`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c6b3a41a5a18d993", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (js/maori-pronunciation.js:406)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (js/maori-pronunciation.js:406)"}, "fullDescription": {"text": "`js/maori-pronunciation.js:406` calls `POST https://api.openai.com/v1/audio/speech` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/audio/speech`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4574fe8f754fdfa", "name": "Dangling fetch: GET /api/news-feed (js/news-loader.js:93)", "shortDescription": {"text": "Dangling fetch: GET /api/news-feed (js/news-loader.js:93)"}, "fullDescription": {"text": "`js/news-loader.js:93` calls `GET /api/news-feed` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/news-feed`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5ad4941b562132c2", "name": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${rssUrl} (js/news-loader.js:224)", "shortDescription": {"text": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${rssUrl} (js/news-loader.js:224)"}, "fullDescription": {"text": "`js/news-loader.js:224` calls `GET https://api.rss2json.com/v1/api.json?rss_url=${rssUrl}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.rss2json.com/v1/api.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0c6a153f4830904d", "name": "Dangling fetch: GET /data/curriculum-documents.json (js/curriculum-documents-init.js:55)", "shortDescription": {"text": "Dangling fetch: GET /data/curriculum-documents.json (js/curriculum-documents-init.js:55)"}, "fullDescription": {"text": "`js/curriculum-documents-init.js:55` calls `GET /data/curriculum-documents.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/curriculum-documents.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c8a17ae1e21018c4", "name": "Dangling fetch: GET /units-manifest.json (js/unit-plans-init.js:225)", "shortDescription": {"text": "Dangling fetch: GET /units-manifest.json (js/unit-plans-init.js:225)"}, "fullDescription": {"text": "`js/unit-plans-init.js:225` calls `GET /units-manifest.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/units-manifest.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b49b665462b57d44", "name": "Dangling fetch: GET /api/youtube-config (js/youtube-api.js:50)", "shortDescription": {"text": "Dangling fetch: GET /api/youtube-config (js/youtube-api.js:50)"}, "fullDescription": {"text": "`js/youtube-api.js:50` calls `GET /api/youtube-config` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/youtube-config`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01d21db4ae424a99", "name": "Dangling fetch: GET /units-manifest.json (js/unit-plans-hero.js:143)", "shortDescription": {"text": "Dangling fetch: GET /units-manifest.json (js/unit-plans-hero.js:143)"}, "fullDescription": {"text": "`js/unit-plans-hero.js:143` calls `GET /units-manifest.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/units-manifest.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c78c235839619aef", "name": "Dangling fetch: GET /components/mobile-bottom-nav.html (js/pages/lessons-init.js:1)", "shortDescription": {"text": "Dangling fetch: GET /components/mobile-bottom-nav.html (js/pages/lessons-init.js:1)"}, "fullDescription": {"text": "`js/pages/lessons-init.js:1` calls `GET /components/mobile-bottom-nav.html` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/components/mobile-bottom-nav.html`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8601f04b8672e7ed", "name": "Dangling fetch: GET /api/get-student-projects (js/pages/my-submissions-init.js:107)", "shortDescription": {"text": "Dangling fetch: GET /api/get-student-projects (js/pages/my-submissions-init.js:107)"}, "fullDescription": {"text": "`js/pages/my-submissions-init.js:107` calls `GET /api/get-student-projects` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/get-student-projects`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3d493bd4704634f2", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/populate-graph-from-files.js:168)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/populate-graph-from-files.js:168)"}, "fullDescription": {"text": "`scripts/populate-graph-from-files.js:168` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-482d0bc6a3888545", "name": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (scripts/test-secure-ai-service.js:32)", "shortDescription": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (scripts/test-secure-ai-service.js:32)"}, "fullDescription": {"text": "`scripts/test-secure-ai-service.js:32` calls `POST https://api.deepseek.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.deepseek.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-79b5b09d3313fb61", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/simulate-generate-lesson.js:104)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/simulate-generate-lesson.js:104)"}, "fullDescription": {"text": "`scripts/simulate-generate-lesson.js:104` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2f36fe1558ca1d8c", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/test-glm-endpoint.js:28)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/test-glm-endpoint.js:28)"}, "fullDescription": {"text": "`scripts/test-glm-endpoint.js:28` calls `POST https://openrouter.ai/api/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/openrouter.ai/api/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d6cb4be43d487aef", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/build-knowledge-graph.js:126)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/build-knowledge-graph.js:126)"}, "fullDescription": {"text": "`scripts/build-knowledge-graph.js:126` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5fa9fb77a06d73dc", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/align-curriculum.js:35)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/align-curriculum.js:35)"}, "fullDescription": {"text": "`scripts/align-curriculum.js:35` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-df60986286d0805a", "name": "Dangling fetch: POST https://api.supabase.com/v1/projects/nlgldaqtubrlcqddppbq/database/query (scripts/deploy-nesting.js", "shortDescription": {"text": "Dangling fetch: POST https://api.supabase.com/v1/projects/nlgldaqtubrlcqddppbq/database/query (scripts/deploy-nesting.js:28)"}, "fullDescription": {"text": "`scripts/deploy-nesting.js:28` calls `POST https://api.supabase.com/v1/projects/nlgldaqtubrlcqddppbq/database/query` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.supabase.com/v1/projects/nlgldaqtubrlcqddppbq/database/query`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ba43e57ceb0c9ff", "name": "Dangling fetch: POST http://host.docker.internal:11434/api/chat (mcp-server/index.js:2004)", "shortDescription": {"text": "Dangling fetch: POST http://host.docker.internal:11434/api/chat (mcp-server/index.js:2004)"}, "fullDescription": {"text": "`mcp-server/index.js:2004` calls `POST http://host.docker.internal:11434/api/chat` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/host.docker.internal:11434/api/chat`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-353812314ab6bd2d", "name": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:96)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:96)"}, "fullDescription": {"text": "`tests/playwright/auth-oauth.spec.ts:96` calls `POST /api/auth-google-exchange` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-google-exchange`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f4c8f1053de741e4", "name": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:130)", "shortDescription": {"text": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:130)"}, "fullDescription": {"text": "`tests/playwright/auth-oauth.spec.ts:130` calls `POST /api/auth-google-exchange` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth-google-exchange`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-82eb368b5831bcb7", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (supabase/functions/curriculum-align/index.ts:77)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (supabase/functions/curriculum-align/index.ts:77)"}, "fullDescription": {"text": "`supabase/functions/curriculum-align/index.ts:77` calls `POST https://api.openai.com/v1/embeddings` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/embeddings`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0379f6d02024134a", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/process-whiteboard/index.ts:60)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/process-whiteboard/index.ts:60)"}, "fullDescription": {"text": "`supabase/functions/process-whiteboard/index.ts:60` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2a1bfa41cc4bd478", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (supabase/functions/generate-lesson-glm-free/index.ts", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (supabase/functions/generate-lesson-glm-free/index.ts:191)"}, "fullDescription": {"text": "`supabase/functions/generate-lesson-glm-free/index.ts:191` calls `POST https://openrouter.ai/api/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/openrouter.ai/api/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-191934589c56f145", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/forum-post-news-bot/index.ts:332)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/forum-post-news-bot/index.ts:332)"}, "fullDescription": {"text": "`supabase/functions/forum-post-news-bot/index.ts:332` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9861c05a1279c973", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${prov", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${provider.key} (supabase/functions/forum-post-news-bot/index.ts:340)"}, "fullDescription": {"text": "`supabase/functions/forum-post-news-bot/index.ts:340` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${provider.key}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f5dfb23d8b75b76b", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/generate-lesson/index.ts:269)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/generate-lesson/index.ts:269)"}, "fullDescription": {"text": "`supabase/functions/generate-lesson/index.ts:269` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-47ea98422d97ba8d", "name": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:344)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:344)"}, "fullDescription": {"text": "`supabase/functions/send-workshop-emails/index.ts:344` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5c454d2ffbc13ce3", "name": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:406)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:406)"}, "fullDescription": {"text": "`supabase/functions/send-workshop-emails/index.ts:406` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c90043a2491d9488", "name": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:428)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:428)"}, "fullDescription": {"text": "`supabase/functions/send-workshop-emails/index.ts:428` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1d68d9ceffad551c", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (supabase/functions/parse-timetable/index.ts:55)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (supabase/functions/parse-timetable/index.ts:55)"}, "fullDescription": {"text": "`supabase/functions/parse-timetable/index.ts:55` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1236c451ef2f4517", "name": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(cleanWord.toLowerCase())} (supa", "shortDescription": {"text": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(cleanWord.toLowerCase())} (supabase/functions/dictionary-service/index.ts:148)"}, "fullDescription": {"text": "`supabase/functions/dictionary-service/index.ts:148` calls `GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(cleanWord.toLowerCase())}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.dictionaryapi.dev/api/v2/entries/en/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-600bba6a4903156c", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (supabase/functions/tts-proxy/index.ts:63)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (supabase/functions/tts-proxy/index.ts:63)"}, "fullDescription": {"text": "`supabase/functions/tts-proxy/index.ts:63` calls `POST https://api.openai.com/v1/audio/speech` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/audio/speech`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e14d9080d44194c9", "name": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (supabase/functions/tts-proxy/index.ts:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (supabase/functions/tts-proxy/index.ts:81)"}, "fullDescription": {"text": "`supabase/functions/tts-proxy/index.ts:81` calls `POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.elevenlabs.io/v1/text-to-speech/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-07889a3cb3c23f56", "name": "Dangling fetch: POST https://${region}.tts.speech.microsoft.com/cognitiveservices/v1 (supabase/functions/tts-proxy/index", "shortDescription": {"text": "Dangling fetch: POST https://${region}.tts.speech.microsoft.com/cognitiveservices/v1 (supabase/functions/tts-proxy/index.ts:120)"}, "fullDescription": {"text": "`supabase/functions/tts-proxy/index.ts:120` calls `POST https://${region}.tts.speech.microsoft.com/cognitiveservices/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/<p>.tts.speech.microsoft.com/cognitiveservices/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5062a854b5454b33", "name": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (supabase/functions/generate-lesson-secure/index.ts:17", "shortDescription": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (supabase/functions/generate-lesson-secure/index.ts:178)"}, "fullDescription": {"text": "`supabase/functions/generate-lesson-secure/index.ts:178` calls `POST https://api.deepseek.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.deepseek.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e1f51feab73bae04", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/analyze-reflections/index.ts:43)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/analyze-reflections/index.ts:43)"}, "fullDescription": {"text": "`supabase/functions/analyze-reflections/index.ts:43` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99591b34697f8bc6", "name": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/forum-notify-email/index.ts:114)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/forum-notify-email/index.ts:114)"}, "fullDescription": {"text": "`supabase/functions/forum-notify-email/index.ts:114` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2dc8f8e2a56df35", "name": "Unused endpoint: POST /generate-lesson", "shortDescription": {"text": "Unused endpoint: POST /generate-lesson"}, "fullDescription": {"text": "`docker/kahirangi/app.py` declares `POST /generate-lesson` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64b202f487de07f3", "name": "Unused endpoint: POST /rlm/query", "shortDescription": {"text": "Unused endpoint: POST /rlm/query"}, "fullDescription": {"text": "`docker/te-aronui/rlm_api.py` declares `POST /rlm/query` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f2443cb4aa8e606", "name": "Unused endpoint: POST /rlm/search", "shortDescription": {"text": "Unused endpoint: POST /rlm/search"}, "fullDescription": {"text": "`docker/te-aronui/rlm_api.py` declares `POST /rlm/search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a876e03294b2aa1c", "name": "Unused endpoint: POST /rlm/chunk", "shortDescription": {"text": "Unused endpoint: POST /rlm/chunk"}, "fullDescription": {"text": "`docker/te-aronui/rlm_api.py` declares `POST /rlm/chunk` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5a1a2390aa8e0b7", "name": "Unused endpoint: POST /rlm/embed", "shortDescription": {"text": "Unused endpoint: POST /rlm/embed"}, "fullDescription": {"text": "`docker/te-aronui/rlm_api.py` declares `POST /rlm/embed` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-21cf56c09f860b64", "name": "Unused endpoint: GET /index.html", "shortDescription": {"text": "Unused endpoint: GET /index.html"}, "fullDescription": {"text": "`scripts/build-content-production-ledgers.js` declares `GET /index.html` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13451f35f0ddd1ca", "name": "Unused endpoint: GET /sse", "shortDescription": {"text": "Unused endpoint: GET /sse"}, "fullDescription": {"text": "`mcp-server/index.js` declares `GET /sse` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cde167f60259e05e", "name": "Unused endpoint: POST /messages", "shortDescription": {"text": "Unused endpoint: POST /messages"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /messages` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-093467ddc6e6a64d", "name": "Unused endpoint: POST /api/generate", "shortDescription": {"text": "Unused endpoint: POST /api/generate"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /api/generate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3eff48d761e020c", "name": "Unused endpoint: POST /graphrag/update", "shortDescription": {"text": "Unused endpoint: POST /graphrag/update"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /graphrag/update` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-88d13dbeee45f04a", "name": "Unused endpoint: POST /graph/traverse", "shortDescription": {"text": "Unused endpoint: POST /graph/traverse"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /graph/traverse` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c4546cb878d5ace", "name": "Unused endpoint: POST /graph/vector-search", "shortDescription": {"text": "Unused endpoint: POST /graph/vector-search"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /graph/vector-search` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-31382516b6cc0c25", "name": "Unused endpoint: POST /graph/embed-query", "shortDescription": {"text": "Unused endpoint: POST /graph/embed-query"}, "fullDescription": {"text": "`mcp-server/index.js` declares `POST /graph/embed-query` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21403"}, "properties": {"repository": "Tobillicious/te-kete-ako-production", "repoUrl": "https://github.com/Tobillicious/te-kete-ako-production", "branch": "main"}, "results": [{"ruleId": "scanner-9d6276e0afc98dc4", "level": "note", "message": {"text": "Possibly dead Python function: call_ollama"}, "properties": {"repobilityId": "9f88b6f60fa66e7d", "scanner": "scanner-primary", "fingerprint": "9d6276e0afc98dc4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/app.py:192"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-bbe4c852b6c9960e", "level": "note", "message": {"text": "Possibly dead Python function: call_openrouter_free"}, "properties": {"repobilityId": "a572d20dffae2fef", "scanner": "scanner-primary", "fingerprint": "bbe4c852b6c9960e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/app.py:203"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f75aeb687ddca459", "level": "note", "message": {"text": "Possibly dead Python function: call_openai"}, "properties": {"repobilityId": "b7b1498a4d1d98ec", "scanner": "scanner-primary", "fingerprint": "f75aeb687ddca459", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/app.py:221"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3c8ec257bb2ae702", "level": "note", "message": {"text": "Possibly dead Python function: parse_resource_metadata"}, "properties": {"repobilityId": "814e05f1f611d2d1", "scanner": "scanner-primary", "fingerprint": "3c8ec257bb2ae702", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-mahara/worker.py:59"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2ca26bb114cc93be", "level": "note", "message": {"text": "Possibly dead Python function: generate_tags"}, "properties": {"repobilityId": "b386c2dd6957853e", "scanner": "scanner-primary", "fingerprint": "2ca26bb114cc93be", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kaitiaki/kaitiaki.py:159"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3b6b73918b743fc", "level": "note", "message": {"text": "Possibly dead Python function: run_full_cycle"}, "properties": {"repobilityId": "8ca80917c5385859", "scanner": "scanner-primary", "fingerprint": "b3b6b73918b743fc", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kaitiaki/kaitiaki.py:440"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f998add2137caba1", "level": "note", "message": {"text": "Possibly dead Python function: spawn_child_jobs"}, "properties": {"repobilityId": "fe85510a1b387196", "scanner": "scanner-primary", "fingerprint": "f998add2137caba1", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_agent_integration.py:293"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3cce421471a8ab60", "level": "note", "message": {"text": "Possibly dead Python function: all_children_complete"}, "properties": {"repobilityId": "5ec8e84806c36431", "scanner": "scanner-primary", "fingerprint": "3cce421471a8ab60", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_agent_integration.py:345"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4bf46f862f03dfce", "level": "note", "message": {"text": "Possibly dead Python function: log_message"}, "properties": {"repobilityId": "965f3150b4af5b2e", "scanner": "scanner-primary", "fingerprint": "4bf46f862f03dfce", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/ingest-codebase-intelligence.py:236"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27c0f2126b30897b", "level": "note", "message": {"text": "Possibly dead Python function: start_health_server"}, "properties": {"repobilityId": "a7a565c21a1dce86", "scanner": "scanner-primary", "fingerprint": "27c0f2126b30897b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/ingest-codebase-intelligence.py:238"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d928bb8d4001cb3b", "level": "note", "message": {"text": "Possibly dead Python function: random_phase"}, "properties": {"repobilityId": "e8ab99162ab4159d", "scanner": "scanner-primary", "fingerprint": "d928bb8d4001cb3b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "riemann-sandbox/tools/twisted_prime_sandbox.py:57"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0a10064e9b1d58e5", "level": "note", "message": {"text": "Possibly dead Python function: random_phase"}, "properties": {"repobilityId": "e8ab99162ab4159d", "scanner": "scanner-primary", "fingerprint": "0a10064e9b1d58e5", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "riemann-sandbox/tools/phase_rigidity_sweep.py:40"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9421de88b6f8464d", "level": "note", "message": {"text": "Possibly dead Python function: chi4_phase"}, "properties": {"repobilityId": "e4fc90eeba4e4417", "scanner": "scanner-primary", "fingerprint": "9421de88b6f8464d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "riemann-sandbox/tools/phase_rigidity_sweep.py:58"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-83b90ca19ad62ce3", "level": "note", "message": {"text": "Possibly dead Python function: circular_metrics"}, "properties": {"repobilityId": "11b5ac1ba835e5c0", "scanner": "scanner-primary", "fingerprint": "83b90ca19ad62ce3", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/boundary_support_family_compare.py:112"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a04168d9750fcb96", "level": "note", "message": {"text": "Possibly dead Python function: elliptic_metrics"}, "properties": {"repobilityId": "e3bb6e6c00c91525", "scanner": "scanner-primary", "fingerprint": "a04168d9750fcb96", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/boundary_support_family_compare.py:127"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c95bf74f8186f824", "level": "note", "message": {"text": "Possibly dead Python function: double_metrics"}, "properties": {"repobilityId": "b5b209d8b4d04030", "scanner": "scanner-primary", "fingerprint": "c95bf74f8186f824", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/boundary_support_family_compare.py:147"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09ac7f5c4a1c0f9e", "level": "note", "message": {"text": "Possibly dead Python function: wedge_metrics"}, "properties": {"repobilityId": "fb979c6f64dc49f0", "scanner": "scanner-primary", "fingerprint": "09ac7f5c4a1c0f9e", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/boundary_support_family_compare.py:165"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c632ede6e149ee03", "level": "note", "message": {"text": "Possibly dead Python function: parse_axes"}, "properties": {"repobilityId": "46bc7d5beaed4832", "scanner": "scanner-primary", "fingerprint": "c632ede6e149ee03", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/hunt_defect_hotspots.py:97"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7738af276811dd83", "level": "note", "message": {"text": "Possibly dead Python function: run_arpack_sigma_h"}, "properties": {"repobilityId": "4106ed124814d6a9", "scanner": "scanner-primary", "fingerprint": "7738af276811dd83", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/basis_extraction_bench.py:99"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a89702696fab89f4", "level": "note", "message": {"text": "Possibly dead Python function: run_arpack_sm_h"}, "properties": {"repobilityId": "5577c1da30fd0c02", "scanner": "scanner-primary", "fingerprint": "a89702696fab89f4", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/basis_extraction_bench.py:113"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-58fac50b634a95f6", "level": "note", "message": {"text": "Possibly dead Python function: run_arpack_sm_h2"}, "properties": {"repobilityId": "c6b7654fc79d6b38", "scanner": "scanner-primary", "fingerprint": "58fac50b634a95f6", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/basis_extraction_bench.py:126"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b8a020ea1bf861cb", "level": "note", "message": {"text": "Possibly dead Python function: run_lobpcg_h2_random"}, "properties": {"repobilityId": "6d70ab2877baa356", "scanner": "scanner-primary", "fingerprint": "b8a020ea1bf861cb", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/basis_extraction_bench.py:141"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6d1775e3b82915f8", "level": "note", "message": {"text": "Possibly dead Python function: run_lobpcg_h2_shell"}, "properties": {"repobilityId": "b170828b10cfca7d", "scanner": "scanner-primary", "fingerprint": "6d1775e3b82915f8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/basis_extraction_bench.py:157"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7517882dab49b7f7", "level": "note", "message": {"text": "Possibly dead Python function: parse_int_list"}, "properties": {"repobilityId": "3940cf925cbd1ad6", "scanner": "scanner-primary", "fingerprint": "7517882dab49b7f7", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/sweep_projection_fermion_window.py:43"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5edb56484259eec8", "level": "note", "message": {"text": "Possibly dead Python function: parse_str_list"}, "properties": {"repobilityId": "9992bcc683f47ed8", "scanner": "scanner-primary", "fingerprint": "5edb56484259eec8", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/sweep_projection_fermion_window.py:47"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-41fe58b0ffd0cdc2", "level": "note", "message": {"text": "Possibly dead Python function: parse_axes"}, "properties": {"repobilityId": "46bc7d5beaed4832", "scanner": "scanner-primary", "fingerprint": "41fe58b0ffd0cdc2", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/tools/extraction_bridge.py:74"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-65e3ce8683dd5fb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 sw-clear.js:8"}, "properties": {"repobilityId": "e7337d7ed9e775dc", "scanner": "scanner-primary", "fingerprint": "65e3ce8683dd5fb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33b2b2c79a81c271", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 docker/te-toi/worker.js:39"}, "properties": {"repobilityId": "89dd595465935bb1", "scanner": "scanner-primary", "fingerprint": "33b2b2c79a81c271", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0151459f963c71ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 functions/api/auth-google-exchange.js:234"}, "properties": {"repobilityId": "32d18b4958a1b309", "scanner": "scanner-primary", "fingerprint": "0151459f963c71ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2997c627e0eedbe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/probe_glm.js:9"}, "properties": {"repobilityId": "a4efedfc72ffa624", "scanner": "scanner-primary", "fingerprint": "d2997c627e0eedbe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de980b54cb831355", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/probe_alternatives.js:11"}, "properties": {"repobilityId": "18a876884b92e2fa", "scanner": "scanner-primary", "fingerprint": "de980b54cb831355", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e99fb603267aac30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/membership-integration-test.js:30"}, "properties": {"repobilityId": "c91da3a24e057d7e", "scanner": "scanner-primary", "fingerprint": "e99fb603267aac30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8719512bbc8833c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/verify-graphrag-rpc.js:11"}, "properties": {"repobilityId": "62b73e08e55a676a", "scanner": "scanner-primary", "fingerprint": "8719512bbc8833c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7202df7eeeb82da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/bug_hunter_prototype.js:20"}, "properties": {"repobilityId": "d9de470de1528c78", "scanner": "scanner-primary", "fingerprint": "b7202df7eeeb82da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e7c151710844ca8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/check-db-dimensions.js:22"}, "properties": {"repobilityId": "e53184c1616d3bb3", "scanner": "scanner-primary", "fingerprint": "4e7c151710844ca8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ab76bc689104ba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/monkey-stress.spec.ts:17"}, "properties": {"repobilityId": "a778c28d60464748", "scanner": "scanner-primary", "fingerprint": "3ab76bc689104ba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40c3e6d729137da8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/forum-e2e.spec.ts:22"}, "properties": {"repobilityId": "2a38a910136f9c20", "scanner": "scanner-primary", "fingerprint": "40c3e6d729137da8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b417d16afe4b9292", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/auth-oauth.spec.ts:18"}, "properties": {"repobilityId": "64ef03571fc1c5f3", "scanner": "scanner-primary", "fingerprint": "b417d16afe4b9292", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2cbb6c9c00a9dc25", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/playwright/helpers/mocks.ts:126"}, "properties": {"repobilityId": "5872443b2d5c5ba3", "scanner": "scanner-primary", "fingerprint": "2cbb6c9c00a9dc25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30016493c0d9af87", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/wordle-progress.js:228"}, "properties": {"repobilityId": "1c0ff74299f3ad23", "scanner": "scanner-primary", "fingerprint": "30016493c0d9af87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-0d038be870859b46", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/global-feedback.js:16"}, "properties": {"repobilityId": "070357e4221b71c1", "scanner": "scanner-primary", "fingerprint": "0d038be870859b46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f7a6c7b5c8419efd", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/analytics-dashboard.js:73"}, "properties": {"repobilityId": "e00a1909a9e4a171", "scanner": "scanner-primary", "fingerprint": "f7a6c7b5c8419efd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3028390d875a6113", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/curriculum-viewer.js:2784"}, "properties": {"repobilityId": "ad5e7257e66a4283", "scanner": "scanner-primary", "fingerprint": "3028390d875a6113", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-7e31706ecacae910", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/activity-generator.js:327"}, "properties": {"repobilityId": "3b6617002cf8be1f", "scanner": "scanner-primary", "fingerprint": "7e31706ecacae910", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fe65bc5bb8755473", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/resource-service.js:1444"}, "properties": {"repobilityId": "aebf2f9c64dc75dd", "scanner": "scanner-primary", "fingerprint": "fe65bc5bb8755473", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5124cdbf694139e1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/curriculum-data-bridge.js:1228"}, "properties": {"repobilityId": "b025d320a66b5c0a", "scanner": "scanner-primary", "fingerprint": "5124cdbf694139e1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-2ae2ab8ef02e7549", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/accessibility-enhancements.js:210"}, "properties": {"repobilityId": "cba2d71dd1f2195f", "scanner": "scanner-primary", "fingerprint": "2ae2ab8ef02e7549", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f954e62d4d36c277", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/assessment-tools.js:71"}, "properties": {"repobilityId": "f534e1a465198f04", "scanner": "scanner-primary", "fingerprint": "f954e62d4d36c277", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-26f83e7d379899fe", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/enhanced-header.js:268"}, "properties": {"repobilityId": "34d80f76e2de9fb6", "scanner": "scanner-primary", "fingerprint": "26f83e7d379899fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-68a0ee0f920edb59", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/simple-bookmarks.js:321"}, "properties": {"repobilityId": "52ed2063df96ea87", "scanner": "scanner-primary", "fingerprint": "68a0ee0f920edb59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fde10e5f7002f095", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/timetable-manager.js:305"}, "properties": {"repobilityId": "6e80ee74eb14887c", "scanner": "scanner-primary", "fingerprint": "fde10e5f7002f095", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-71d403343191e5e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/tts-harness.js:62"}, "properties": {"repobilityId": "b4d9b34f43af2e14", "scanner": "scanner-primary", "fingerprint": "71d403343191e5e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d5e3a1369307bf9", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/content-hierarchy.js:590"}, "properties": {"repobilityId": "4057def65f27ef5c", "scanner": "scanner-primary", "fingerprint": "8d5e3a1369307bf9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-a6d8bb1e16399d6a", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/advanced-youtube-search.js:369"}, "properties": {"repobilityId": "fa6436290ab64224", "scanner": "scanner-primary", "fingerprint": "a6d8bb1e16399d6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-a61e5e5c8098518d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/realtime-pronunciation.js:121"}, "properties": {"repobilityId": "d01e8116fe20f100", "scanner": "scanner-primary", "fingerprint": "a61e5e5c8098518d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-92100a5ea4af8401", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 js/advanced-analytics.js:249"}, "properties": {"repobilityId": "8119a54f45d0bf86", "scanner": "scanner-primary", "fingerprint": "92100a5ea4af8401", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-ff840299842826a9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 js/utils/ai-parser.js:104"}, "properties": {"repobilityId": "1ba43316b778db95", "scanner": "scanner-primary", "fingerprint": "ff840299842826a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f5f9e69c41cb6914", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/multiplayer.js:36"}, "properties": {"repobilityId": "54eac9d8e2cd7fe7", "scanner": "scanner-primary", "fingerprint": "f5f9e69c41cb6914", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9cc6ef75591e3b12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/store.js:54"}, "properties": {"repobilityId": "50965e1609d4e3b9", "scanner": "scanner-primary", "fingerprint": "9cc6ef75591e3b12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e96d5a2389c77676", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/engine.js:600"}, "properties": {"repobilityId": "b99e3319b066f7ae", "scanner": "scanner-primary", "fingerprint": "e96d5a2389c77676", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1171684babd82bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/init.js:312"}, "properties": {"repobilityId": "695896af5be203dd", "scanner": "scanner-primary", "fingerprint": "f1171684babd82bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74fd22c401f0a237", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/storage.js:61"}, "properties": {"repobilityId": "79330822a887a3d5", "scanner": "scanner-primary", "fingerprint": "74fd22c401f0a237", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fac89e77866df670", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 js/mindmap/vision.js:81"}, "properties": {"repobilityId": "45f1487f3c7b74f0", "scanner": "scanner-primary", "fingerprint": "fac89e77866df670", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85d44c9adbcfc791", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sitemap.js:143"}, "properties": {"repobilityId": "97c662424750e259", "scanner": "scanner-primary", "fingerprint": "85d44c9adbcfc791", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a002ea90807eed48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-curriculum-statements.js:375"}, "properties": {"repobilityId": "921ead8e8ba1c9b3", "scanner": "scanner-primary", "fingerprint": "a002ea90807eed48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d1c340264d262d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-profile-query-fix.js:10"}, "properties": {"repobilityId": "3b74e4012312f666", "scanner": "scanner-primary", "fingerprint": "5d1c340264d262d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f975d8caeac77d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-curriculum-quotes.js:468"}, "properties": {"repobilityId": "81c5ce929274a5ca", "scanner": "scanner-primary", "fingerprint": "5f975d8caeac77d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc47ff25825d731d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-tables.js:16"}, "properties": {"repobilityId": "9b1e66478563c3b2", "scanner": "scanner-primary", "fingerprint": "dc47ff25825d731d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe85de46d8cb836b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-curriculum-verification.js:880"}, "properties": {"repobilityId": "dee13358d003cf48", "scanner": "scanner-primary", "fingerprint": "fe85de46d8cb836b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf1f61ca810826e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enable-cloudflare-auto-deploy.js:80"}, "properties": {"repobilityId": "4041513f80ef37a7", "scanner": "scanner-primary", "fingerprint": "bf1f61ca810826e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f3cadd072f991d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-graph-from-files.js:25"}, "properties": {"repobilityId": "987e19ae3d249619", "scanner": "scanner-primary", "fingerprint": "2f3cadd072f991d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d73fbf7c33e7bbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-teacher-bots.js:21"}, "properties": {"repobilityId": "747911f846122410", "scanner": "scanner-primary", "fingerprint": "0d73fbf7c33e7bbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c5f279490a562fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-missing-h1.js:93"}, "properties": {"repobilityId": "45d826a461160ee4", "scanner": "scanner-primary", "fingerprint": "9c5f279490a562fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a878c78631e495d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pages-postinstall.js:39"}, "properties": {"repobilityId": "4518901b2b504085", "scanner": "scanner-primary", "fingerprint": "a878c78631e495d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae2e5f7060417f1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-graphrag-traversal-parity.js:121"}, "properties": {"repobilityId": "a980b0c8876cf261", "scanner": "scanner-primary", "fingerprint": "ae2e5f7060417f1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85788bdbea2a500d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-canonical-routes.js:255"}, "properties": {"repobilityId": "5e733c742bc0f275", "scanner": "scanner-primary", "fingerprint": "85788bdbea2a500d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6aab09f7f618476", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/connect-graph-to-curriculum.js:20"}, "properties": {"repobilityId": "b4b3fd9d94220a87", "scanner": "scanner-primary", "fingerprint": "a6aab09f7f618476", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44e9ffd3f6bd0b03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-insert.js:11"}, "properties": {"repobilityId": "ef91a451be4179f1", "scanner": "scanner-primary", "fingerprint": "44e9ffd3f6bd0b03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05b540ea0847a522", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-secure-ai-service.js:20"}, "properties": {"repobilityId": "67be0af3670d14c5", "scanner": "scanner-primary", "fingerprint": "05b540ea0847a522", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba7843584f657a34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wordle-metadata.js:161"}, "properties": {"repobilityId": "3d6e9985004f44c0", "scanner": "scanner-primary", "fingerprint": "ba7843584f657a34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ea651ad7b79a7ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-embeddings.js:32"}, "properties": {"repobilityId": "441f68ca1f5ed507", "scanner": "scanner-primary", "fingerprint": "0ea651ad7b79a7ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-423c8b6392abd27c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-forum.js:29"}, "properties": {"repobilityId": "7d5e9bc505df02d5", "scanner": "scanner-primary", "fingerprint": "423c8b6392abd27c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d5d5c9e397c8698", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-ai-companion.js:15"}, "properties": {"repobilityId": "70f169fd456a1e8b", "scanner": "scanner-primary", "fingerprint": "8d5d5c9e397c8698", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07856a5a2365bf8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-unsurfaced-publishable.js:224"}, "properties": {"repobilityId": "183f6622d296577d", "scanner": "scanner-primary", "fingerprint": "07856a5a2365bf8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50ac809be4c41e44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-supabase-functions.js:54"}, "properties": {"repobilityId": "361f55212da18860", "scanner": "scanner-primary", "fingerprint": "50ac809be4c41e44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69ef51491ce142a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply_migration_manual.js:16"}, "properties": {"repobilityId": "b4b56213e83f65e1", "scanner": "scanner-primary", "fingerprint": "69ef51491ce142a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34b9ddb130e8fee8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-annotations.js:9"}, "properties": {"repobilityId": "5730036c309cf22e", "scanner": "scanner-primary", "fingerprint": "34b9ddb130e8fee8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3896dd37399bc8e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync_templates.js:19"}, "properties": {"repobilityId": "2da868b6ccdc2074", "scanner": "scanner-primary", "fingerprint": "3896dd37399bc8e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c97037b0b72a7b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-supabase-env.js:72"}, "properties": {"repobilityId": "1f790e85cbccc8a3", "scanner": "scanner-primary", "fingerprint": "5c97037b0b72a7b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ae6189e2e936abf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ears.js:110"}, "properties": {"repobilityId": "9d2ee2a70ee23a45", "scanner": "scanner-primary", "fingerprint": "5ae6189e2e936abf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d901876028a8dcf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_rpc.js:17"}, "properties": {"repobilityId": "df5efe978f3a37bb", "scanner": "scanner-primary", "fingerprint": "8d901876028a8dcf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc23d031e041f381", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eyes.js:109"}, "properties": {"repobilityId": "94723603ac9249ed", "scanner": "scanner-primary", "fingerprint": "fc23d031e041f381", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ded2b8b525c31de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-assets-paths.js:63"}, "properties": {"repobilityId": "3a3eb6f37ad4f398", "scanner": "scanner-primary", "fingerprint": "8ded2b8b525c31de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f6034a650e984d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/trigger-latest-deployment.js:51"}, "properties": {"repobilityId": "4531de3bf5703f10", "scanner": "scanner-primary", "fingerprint": "5f6034a650e984d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7eaafc807079e28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export_dist_csv.js:24"}, "properties": {"repobilityId": "d4fce30dddd53655", "scanner": "scanner-primary", "fingerprint": "c7eaafc807079e28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ea7cd3ab1edfea5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/setup-stripe-products.js:115"}, "properties": {"repobilityId": "9803b3dd767c7aa8", "scanner": "scanner-primary", "fingerprint": "3ea7cd3ab1edfea5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb85f963e5c9466d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-dashboard.js:9"}, "properties": {"repobilityId": "37ac9193c9767cd9", "scanner": "scanner-primary", "fingerprint": "cb85f963e5c9466d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-838935951510769d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-rls.js:16"}, "properties": {"repobilityId": "a4004954ae38e05f", "scanner": "scanner-primary", "fingerprint": "838935951510769d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd4bbedd4ea539d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-header-consistency.js:11"}, "properties": {"repobilityId": "9cc9f362e68dbc22", "scanner": "scanner-primary", "fingerprint": "dd4bbedd4ea539d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09a333c1e9f416f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-kaimahi-lawyer-packet.js:129"}, "properties": {"repobilityId": "143a2b3274d20e55", "scanner": "scanner-primary", "fingerprint": "09a333c1e9f416f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7182988887f450a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-all-lessons.js:19"}, "properties": {"repobilityId": "a1e95aebcf86fd27", "scanner": "scanner-primary", "fingerprint": "d7182988887f450a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f2722dd7c6e5ef75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-browse.js:110"}, "properties": {"repobilityId": "d5b0d614bb66cbce", "scanner": "scanner-primary", "fingerprint": "f2722dd7c6e5ef75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98d16f048957c86e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-3.js:53"}, "properties": {"repobilityId": "01fc5f82b736eeaa", "scanner": "scanner-primary", "fingerprint": "98d16f048957c86e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-656d9096e56f58d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-duplicates.js:16"}, "properties": {"repobilityId": "6e8b62494539f7a4", "scanner": "scanner-primary", "fingerprint": "656d9096e56f58d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-587eaac2908242a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inspect-schema.js:16"}, "properties": {"repobilityId": "a394ea95e3649443", "scanner": "scanner-primary", "fingerprint": "587eaac2908242a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e61101619f86ee12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-edge-function-query.js:11"}, "properties": {"repobilityId": "99dcfa6182d21049", "scanner": "scanner-primary", "fingerprint": "e61101619f86ee12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfdb34788f4441ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links.js:56"}, "properties": {"repobilityId": "09feeab67ac684f6", "scanner": "scanner-primary", "fingerprint": "dfdb34788f4441ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e2b88dce9187335", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inspect-graphrag-traversal-diff.js:199"}, "properties": {"repobilityId": "d570238ffa9fa3fc", "scanner": "scanner-primary", "fingerprint": "7e2b88dce9187335", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c0fbcae8cbe1514", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-nz-schools.js:56"}, "properties": {"repobilityId": "6b4fd5d56725d6db", "scanner": "scanner-primary", "fingerprint": "4c0fbcae8cbe1514", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c95b719ebdc0104b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/populate-graphrag.js:17"}, "properties": {"repobilityId": "447ab466b58cad44", "scanner": "scanner-primary", "fingerprint": "c95b719ebdc0104b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5881ad238c5e66ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bump-css-version.js:80"}, "properties": {"repobilityId": "3ddfb749a55fb389", "scanner": "scanner-primary", "fingerprint": "5881ad238c5e66ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe6c3812e03e9a0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/provision-epit-pilot.js:22"}, "properties": {"repobilityId": "db456dc889db2264", "scanner": "scanner-primary", "fingerprint": "fe6c3812e03e9a0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1a7e641415a0560", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-404s.js:218"}, "properties": {"repobilityId": "1cb5735ef0bb50ee", "scanner": "scanner-primary", "fingerprint": "b1a7e641415a0560", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e665c9df578e40a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-public-resource-paths.js:87"}, "properties": {"repobilityId": "79778dda93de0ed5", "scanner": "scanner-primary", "fingerprint": "e665c9df578e40a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eafeaeb3fdcb216", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/simulate-generate-lesson.js:28"}, "properties": {"repobilityId": "7512f80bd914a071", "scanner": "scanner-primary", "fingerprint": "2eafeaeb3fdcb216", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5689a8d598ce71e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-internal-links.js:328"}, "properties": {"repobilityId": "ec9fb7aa78888f92", "scanner": "scanner-primary", "fingerprint": "e5689a8d598ce71e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35b21f15e599dd0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-content-production-ledgers.js:420"}, "properties": {"repobilityId": "4445c720ffbe49a2", "scanner": "scanner-primary", "fingerprint": "35b21f15e599dd0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6390c0a78bd43ef8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-stripe-key.js:25"}, "properties": {"repobilityId": "b61d0c358a14526c", "scanner": "scanner-primary", "fingerprint": "6390c0a78bd43ef8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9dfbbd48bc13a8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-env-to-html.js:50"}, "properties": {"repobilityId": "638a3022d4296002", "scanner": "scanner-primary", "fingerprint": "e9dfbbd48bc13a8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d13e252afd62be4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-2.js:59"}, "properties": {"repobilityId": "c9768f4a3e373ea9", "scanner": "scanner-primary", "fingerprint": "7d13e252afd62be4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-800caa34d8cbb087", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/disable-cloudflare-auto-deploy.js:26"}, "properties": {"repobilityId": "a9b07c1627c13686", "scanner": "scanner-primary", "fingerprint": "800caa34d8cbb087", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3e9f883f8c37063", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-cf-api-token.js:91"}, "properties": {"repobilityId": "1d65b8d29fde5596", "scanner": "scanner-primary", "fingerprint": "e3e9f883f8c37063", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef7b3d3c8303e268", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-resources-static.js:21"}, "properties": {"repobilityId": "2bb07b1488e374dc", "scanner": "scanner-primary", "fingerprint": "ef7b3d3c8303e268", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-264894e77ae98193", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-games-publish-policy.js:254"}, "properties": {"repobilityId": "22733cb0f86e0a8c", "scanner": "scanner-primary", "fingerprint": "264894e77ae98193", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4914310379ba638", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-production.js:139"}, "properties": {"repobilityId": "bf686beaba10f4a6", "scanner": "scanner-primary", "fingerprint": "d4914310379ba638", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-500d5b2acb7922a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-content.js:69"}, "properties": {"repobilityId": "d20ce129358c9fab", "scanner": "scanner-primary", "fingerprint": "500d5b2acb7922a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a87482f014c728e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cloudflare-env-vars-supabase.js:29"}, "properties": {"repobilityId": "36c1f79fad365a04", "scanner": "scanner-primary", "fingerprint": "a87482f014c728e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe4c0d320ceb3558", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bug-report.js:16"}, "properties": {"repobilityId": "657056c9bf625cdc", "scanner": "scanner-primary", "fingerprint": "fe4c0d320ceb3558", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e55925d65584c2a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test_registration_api.js:11"}, "properties": {"repobilityId": "e6322c7dd511f10b", "scanner": "scanner-primary", "fingerprint": "e55925d65584c2a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6e216b007e1639d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-embeddings.js:23"}, "properties": {"repobilityId": "0eaf12e11c2d3d43", "scanner": "scanner-primary", "fingerprint": "d6e216b007e1639d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3811460fb418fd9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-source-registry.js:138"}, "properties": {"repobilityId": "4bcfd30871f3985b", "scanner": "scanner-primary", "fingerprint": "a3811460fb418fd9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a97f865220ec7f2f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-lesson-generator.js:15"}, "properties": {"repobilityId": "51cf0f2a9b5bcfae", "scanner": "scanner-primary", "fingerprint": "a97f865220ec7f2f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31c795b42a25f773", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-content.js:22"}, "properties": {"repobilityId": "3839ced564b4e4b6", "scanner": "scanner-primary", "fingerprint": "31c795b42a25f773", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac6178bdf6e872eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query-graph.js:15"}, "properties": {"repobilityId": "911e867ab9ce2893", "scanner": "scanner-primary", "fingerprint": "ac6178bdf6e872eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17f8eb44f98c6628", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bundle-css.js:50"}, "properties": {"repobilityId": "57d6df9f90d2d558", "scanner": "scanner-primary", "fingerprint": "17f8eb44f98c6628", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ec25f2b1addef88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/report-content-tranche-priority.js:431"}, "properties": {"repobilityId": "a98e38f3f9086531", "scanner": "scanner-primary", "fingerprint": "4ec25f2b1addef88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbe9aebce6fda80b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_sitemap_v2.js:61"}, "properties": {"repobilityId": "560f0ddac14ef3d6", "scanner": "scanner-primary", "fingerprint": "bbe9aebce6fda80b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a5eefd73611b5c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-glm-endpoint.js:13"}, "properties": {"repobilityId": "a8d993060ce1b110", "scanner": "scanner-primary", "fingerprint": "5a5eefd73611b5c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb34ea6df12fc4de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/minify-js.js:79"}, "properties": {"repobilityId": "e5868154dc42176b", "scanner": "scanner-primary", "fingerprint": "bb34ea6df12fc4de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8c1eb219bacc45e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-search.js:7"}, "properties": {"repobilityId": "d046e92064387ba4", "scanner": "scanner-primary", "fingerprint": "c8c1eb219bacc45e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7cc0ee87bbdbc1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-links.js:8"}, "properties": {"repobilityId": "5d7298696fa87461", "scanner": "scanner-primary", "fingerprint": "b7cc0ee87bbdbc1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d39deb7050d80479", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-bug-report-migration.js:18"}, "properties": {"repobilityId": "a5e42d1659380512", "scanner": "scanner-primary", "fingerprint": "d39deb7050d80479", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ff119ecfa3b23d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-content-consistency.js:236"}, "properties": {"repobilityId": "2f50cd22d13f7a1a", "scanner": "scanner-primary", "fingerprint": "7ff119ecfa3b23d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bea3027647a5fc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-resource-card-rendering.js:286"}, "properties": {"repobilityId": "8427ae8f5f21cfcc", "scanner": "scanner-primary", "fingerprint": "3bea3027647a5fc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23ca4c328040b8ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-wordle-data.js:66"}, "properties": {"repobilityId": "8b21f1d6e1802cef", "scanner": "scanner-primary", "fingerprint": "23ca4c328040b8ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22aff03c25887203", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inventory-teaching-content.js:240"}, "properties": {"repobilityId": "2d4c07b85a32c2a9", "scanner": "scanner-primary", "fingerprint": "22aff03c25887203", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e889714bbe445a68", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-job-hunt.js:14"}, "properties": {"repobilityId": "0ddeacf96c0f10e3", "scanner": "scanner-primary", "fingerprint": "e889714bbe445a68", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e6ab48fb20cef2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_pilot_migration.js:19"}, "properties": {"repobilityId": "669c04d8e54eb38d", "scanner": "scanner-primary", "fingerprint": "1e6ab48fb20cef2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-738193b2415a7577", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-migration-manual.js:18"}, "properties": {"repobilityId": "9f94846fa1b79fc3", "scanner": "scanner-primary", "fingerprint": "738193b2415a7577", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f28d859f17ef645", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-relative-paths.js:45"}, "properties": {"repobilityId": "34854b887b70056d", "scanner": "scanner-primary", "fingerprint": "5f28d859f17ef645", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee6854e5e9827d67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bump-js-version.js:77"}, "properties": {"repobilityId": "86516b7d2983d205", "scanner": "scanner-primary", "fingerprint": "ee6854e5e9827d67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f2b020621dfd99d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_manifest.js:31"}, "properties": {"repobilityId": "73ce1c8a44f2962d", "scanner": "scanner-primary", "fingerprint": "6f2b020621dfd99d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3d03402883d5b57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-env-vars.js:73"}, "properties": {"repobilityId": "1ffba72d4d353090", "scanner": "scanner-primary", "fingerprint": "c3d03402883d5b57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f32bfa7c25eb0da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-browse-relevance.js:172"}, "properties": {"repobilityId": "2909c65946a51a25", "scanner": "scanner-primary", "fingerprint": "4f32bfa7c25eb0da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45394c9f826d3760", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/frontend_analyzer.js:160"}, "properties": {"repobilityId": "f61cbbbae009a770", "scanner": "scanner-primary", "fingerprint": "45394c9f826d3760", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a62eadea3a785c79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-graphrag-env.js:28"}, "properties": {"repobilityId": "5f6bece1b01b9eb5", "scanner": "scanner-primary", "fingerprint": "a62eadea3a785c79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca2d7c5db39a0100", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-forum-html.js:378"}, "properties": {"repobilityId": "6707e3c708e1084b", "scanner": "scanner-primary", "fingerprint": "ca2d7c5db39a0100", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-842b4d5b7b93f93e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-lesson-media-embeds.js:49"}, "properties": {"repobilityId": "8925817515bd35b0", "scanner": "scanner-primary", "fingerprint": "842b4d5b7b93f93e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8481d0b4f8737b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reset-bug-reports.js:16"}, "properties": {"repobilityId": "b361f1f485bfd0dd", "scanner": "scanner-primary", "fingerprint": "c8481d0b4f8737b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b7370f2bf4da631", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/store-cloudflare-credentials-graphrag.js:107"}, "properties": {"repobilityId": "60b6d523dcb24af4", "scanner": "scanner-primary", "fingerprint": "9b7370f2bf4da631", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-157fac96b898968a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-traversal.js:8"}, "properties": {"repobilityId": "9f0eeb25cfd7a7bd", "scanner": "scanner-primary", "fingerprint": "157fac96b898968a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23a36c90e0b9eb8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-path.js:7"}, "properties": {"repobilityId": "8fcbd8e736ee820e", "scanner": "scanner-primary", "fingerprint": "23a36c90e0b9eb8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1bb239803abab023", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-knowledge-graph.js:24"}, "properties": {"repobilityId": "a29b9e02a635c62a", "scanner": "scanner-primary", "fingerprint": "1bb239803abab023", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ee67ca19af0e94f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-dashboard-logic.js:9"}, "properties": {"repobilityId": "4b5d9963496d0456", "scanner": "scanner-primary", "fingerprint": "7ee67ca19af0e94f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2177139eae6a889", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify_templates_table.js:5"}, "properties": {"repobilityId": "ea91032e671aafd2", "scanner": "scanner-primary", "fingerprint": "e2177139eae6a889", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d51bc747e3e925e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed_forum.js:16"}, "properties": {"repobilityId": "fff71a2d175dd481", "scanner": "scanner-primary", "fingerprint": "d51bc747e3e925e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c2945b0ecab104e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate_component_migration.js:31"}, "properties": {"repobilityId": "bbb67045c06c210e", "scanner": "scanner-primary", "fingerprint": "4c2945b0ecab104e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4e5cd115c7e2830", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-cloudflare-build-settings.js:23"}, "properties": {"repobilityId": "725f36511a264e1a", "scanner": "scanner-primary", "fingerprint": "e4e5cd115c7e2830", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4eddee88b1254b04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/render-newsletters.js:43"}, "properties": {"repobilityId": "40a8929fa19f5a81", "scanner": "scanner-primary", "fingerprint": "4eddee88b1254b04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdef8e24d300b9dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/align-curriculum.js:61"}, "properties": {"repobilityId": "9720a26e39a356b6", "scanner": "scanner-primary", "fingerprint": "fdef8e24d300b9dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b8deb032ff567e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-teaching-content-registry.js:637"}, "properties": {"repobilityId": "85273d132bbc55f9", "scanner": "scanner-primary", "fingerprint": "0b8deb032ff567e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0958e2013f16761", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/force-fix-browse-redirects.js:65"}, "properties": {"repobilityId": "9e18394bd5c82d54", "scanner": "scanner-primary", "fingerprint": "d0958e2013f16761", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdfd07eaadb4783a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-units-manifest.js:68"}, "properties": {"repobilityId": "0f7c463f3c542ef1", "scanner": "scanner-primary", "fingerprint": "bdfd07eaadb4783a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-019c779fab1d7a4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-te-reo-wordle.js:43"}, "properties": {"repobilityId": "648d62628ab2cc8c", "scanner": "scanner-primary", "fingerprint": "019c779fab1d7a4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d67f4ebb1d2de93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-links-4.js:51"}, "properties": {"repobilityId": "b19a378d24f4065d", "scanner": "scanner-primary", "fingerprint": "9d67f4ebb1d2de93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60403b2131786b92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/set-cf-pages-env.js:17"}, "properties": {"repobilityId": "478ab87e288f1b55", "scanner": "scanner-primary", "fingerprint": "60403b2131786b92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd3c807f587bc863", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-creation-studio-schema.js:12"}, "properties": {"repobilityId": "28ce34cc5252811c", "scanner": "scanner-primary", "fingerprint": "cd3c807f587bc863", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed9450ac384f53a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-game-release-tags.js:110"}, "properties": {"repobilityId": "ce08c80b01726f7b", "scanner": "scanner-primary", "fingerprint": "ed9450ac384f53a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93e4cce897b6c76e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-teaching-library-scope.js:567"}, "properties": {"repobilityId": "c9219a118f7ba31b", "scanner": "scanner-primary", "fingerprint": "93e4cce897b6c76e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abd68f6dbfc0a7a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-env-config.js:71"}, "properties": {"repobilityId": "bd5c8a472edde559", "scanner": "scanner-primary", "fingerprint": "abd68f6dbfc0a7a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52aac0f886ecc372", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-pdf-into-parts.js:62"}, "properties": {"repobilityId": "2431529ba282b202", "scanner": "scanner-primary", "fingerprint": "52aac0f886ecc372", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e07ade8076a8c2fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-resource-paths.js:16"}, "properties": {"repobilityId": "f80e1c1acf24590f", "scanner": "scanner-primary", "fingerprint": "e07ade8076a8c2fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-069264f0bdec43d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-prod-product-readiness.js:120"}, "properties": {"repobilityId": "5e4d021ba79179b5", "scanner": "scanner-primary", "fingerprint": "069264f0bdec43d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0756b2ce1c441254", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/manual-migration.js:14"}, "properties": {"repobilityId": "78bf8821657c3a0f", "scanner": "scanner-primary", "fingerprint": "0756b2ce1c441254", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46a55752f9283830", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-stats.js:22"}, "properties": {"repobilityId": "4723d649d6f8d94b", "scanner": "scanner-primary", "fingerprint": "46a55752f9283830", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15548ba16b20721b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-lessons-node.js:57"}, "properties": {"repobilityId": "c40ab65859382ed3", "scanner": "scanner-primary", "fingerprint": "15548ba16b20721b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca87041626ba15aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-source-registry.js:100"}, "properties": {"repobilityId": "9ab8247c5d25ed7a", "scanner": "scanner-primary", "fingerprint": "ca87041626ba15aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f336e4d15fd30a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/trigger-cloudflare-deployment.js:57"}, "properties": {"repobilityId": "6ad73ad9ddbbc91b", "scanner": "scanner-primary", "fingerprint": "0f336e4d15fd30a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e4e987066bb5cb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-resource-types.js:15"}, "properties": {"repobilityId": "3e66416863951a6f", "scanner": "scanner-primary", "fingerprint": "7e4e987066bb5cb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3962c4b003e2ecdd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-source-registry.js:19"}, "properties": {"repobilityId": "1ac8e35558a10056", "scanner": "scanner-primary", "fingerprint": "3962c4b003e2ecdd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcb72fe2dcd99812", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate_units.js:89"}, "properties": {"repobilityId": "a269901d67a393b5", "scanner": "scanner-primary", "fingerprint": "bcb72fe2dcd99812", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6a4e179470548d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-curriculum-ids.js:214"}, "properties": {"repobilityId": "dc2dc892eb3a84d4", "scanner": "scanner-primary", "fingerprint": "f6a4e179470548d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a8e932af82e534d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-curriculum-embeddings.js:22"}, "properties": {"repobilityId": "affc57c7b3234820", "scanner": "scanner-primary", "fingerprint": "9a8e932af82e534d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93ef2b39d76ef048", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/debug-rag-check.js:11"}, "properties": {"repobilityId": "448467640a207d32", "scanner": "scanner-primary", "fingerprint": "93ef2b39d76ef048", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08c3f000a7d0345d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-components.js:115"}, "properties": {"repobilityId": "98ab305f35145406", "scanner": "scanner-primary", "fingerprint": "08c3f000a7d0345d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-227bb470d4d8283c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-student-dashboard.js:16"}, "properties": {"repobilityId": "262fc46ff65b35ee", "scanner": "scanner-primary", "fingerprint": "227bb470d4d8283c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a1bb8c3cdb5a998", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/inject-static-seo.js:78"}, "properties": {"repobilityId": "3cc23026da45cf5f", "scanner": "scanner-primary", "fingerprint": "3a1bb8c3cdb5a998", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcc7d05c53aa8ef8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/production-testing-checklist.js:192"}, "properties": {"repobilityId": "b6654dcfa842ab2e", "scanner": "scanner-primary", "fingerprint": "dcc7d05c53aa8ef8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00b33d65ab243c51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-nesting.js:6"}, "properties": {"repobilityId": "ad825d9241ea8107", "scanner": "scanner-primary", "fingerprint": "00b33d65ab243c51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40ad344512b83797", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/catalog.js:6"}, "properties": {"repobilityId": "f61c384eb7dbc3fb", "scanner": "scanner-primary", "fingerprint": "40ad344512b83797", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3ce02c6ba6803e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/scan_public.js:21"}, "properties": {"repobilityId": "c2689f0e5cc8b3d5", "scanner": "scanner-primary", "fingerprint": "a3ce02c6ba6803e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89763fd368b4d153", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/generate_inventory.js:36"}, "properties": {"repobilityId": "102f7b6c9d3226f3", "scanner": "scanner-primary", "fingerprint": "89763fd368b4d153", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0076bfbcd705ff4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/check_links.js:60"}, "properties": {"repobilityId": "c81f7d930a674fd7", "scanner": "scanner-primary", "fingerprint": "0076bfbcd705ff4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f4ff692a54994cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/load-env-keys.js:4"}, "properties": {"repobilityId": "90278bf097e71e89", "scanner": "scanner-primary", "fingerprint": "0f4ff692a54994cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fa75a03902bf6b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/legacy/analyze_sitemap.js:72"}, "properties": {"repobilityId": "41ad01fa8dae8a03", "scanner": "scanner-primary", "fingerprint": "8fa75a03902bf6b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4a1b0307f76c9a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch/search-cf.js:21"}, "properties": {"repobilityId": "dc4067afc5247bfd", "scanner": "scanner-primary", "fingerprint": "c4a1b0307f76c9a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d94608c339f09b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scratch/fetch-cf.js:27"}, "properties": {"repobilityId": "edd93c58fe6250e3", "scanner": "scanner-primary", "fingerprint": "7d94608c339f09b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2145e80bb8b9595", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/codex-bridge.js:18"}, "properties": {"repobilityId": "b3bf284959c9f320", "scanner": "scanner-primary", "fingerprint": "d2145e80bb8b9595", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-615ea23b61db2c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/server.legacy.js:76"}, "properties": {"repobilityId": "443b3d2d7a3cd85a", "scanner": "scanner-primary", "fingerprint": "615ea23b61db2c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82657b88c9553192", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 mcp-server/index.js:1860"}, "properties": {"repobilityId": "da59e30d21bb0d61", "scanner": "scanner-primary", "fingerprint": "82657b88c9553192", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e9fecf21fe35bbe", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 kaimahi/js/kaimahi-admin.js:535"}, "properties": {"repobilityId": "41bb9ccbda64d9dc", "scanner": "scanner-primary", "fingerprint": "3e9fecf21fe35bbe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-f7cec9505559a0b6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 kaimahi/js/kaimahi-admin.js:718"}, "properties": {"repobilityId": "6a477098bd11b77b", "scanner": "scanner-primary", "fingerprint": "f7cec9505559a0b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-281ebab1b5a44ba7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 hooks/useHighPhiState.ts:34"}, "properties": {"repobilityId": "09772b23129b7bb8", "scanner": "scanner-primary", "fingerprint": "281ebab1b5a44ba7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-724979f667126e5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/send-welcome-email/index.ts:139"}, "properties": {"repobilityId": "f47f10c5697fee54", "scanner": "scanner-primary", "fingerprint": "724979f667126e5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2707674b542d9955", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-handout-pdf/index.ts:37"}, "properties": {"repobilityId": "aaafbea34c93b4a2", "scanner": "scanner-primary", "fingerprint": "2707674b542d9955", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32205f95e0139694", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/ai-companion/index.ts:91"}, "properties": {"repobilityId": "7ffc7e974bf81f9c", "scanner": "scanner-primary", "fingerprint": "32205f95e0139694", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-891ae54434c86dd2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/process-whiteboard/index.ts:58"}, "properties": {"repobilityId": "2eeedd0ccbc29968", "scanner": "scanner-primary", "fingerprint": "891ae54434c86dd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dec6acdb8cc1e1b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-glm-free/index.ts:66"}, "properties": {"repobilityId": "8d3eab35b3f1b3d1", "scanner": "scanner-primary", "fingerprint": "dec6acdb8cc1e1b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5bb2bb077dd27ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-test/index.ts:3"}, "properties": {"repobilityId": "56c23cf607bfc485", "scanner": "scanner-primary", "fingerprint": "d5bb2bb077dd27ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-026b34761ea74ad1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/stripe-webhook/index.ts:200"}, "properties": {"repobilityId": "7c738a141c293866", "scanner": "scanner-primary", "fingerprint": "026b34761ea74ad1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aabf98e9ebae48c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/forum-post-news-bot/index.ts:257"}, "properties": {"repobilityId": "76bcc60984639705", "scanner": "scanner-primary", "fingerprint": "aabf98e9ebae48c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56178cfc527bcc42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/graphrag-search/index.ts:1299"}, "properties": {"repobilityId": "5ed728281a470827", "scanner": "scanner-primary", "fingerprint": "56178cfc527bcc42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91897c450c6f6ef1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson/index.ts:404"}, "properties": {"repobilityId": "b94a4d8476199bad", "scanner": "scanner-primary", "fingerprint": "91897c450c6f6ef1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e9cee52a17f2911", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/render-page/index.ts:4"}, "properties": {"repobilityId": "a890f9989598892d", "scanner": "scanner-primary", "fingerprint": "8e9cee52a17f2911", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-796a80e4627de635", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-kaihanga/index.ts:41"}, "properties": {"repobilityId": "bec4fa080b144d2e", "scanner": "scanner-primary", "fingerprint": "796a80e4627de635", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80b6c9de7033a1f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/tts-proxy/index.ts:329"}, "properties": {"repobilityId": "efc640eb5358a26d", "scanner": "scanner-primary", "fingerprint": "80b6c9de7033a1f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e74b3fa99c1272b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/generate-lesson-secure/index.ts:38"}, "properties": {"repobilityId": "28fa52dfb692984b", "scanner": "scanner-primary", "fingerprint": "5e74b3fa99c1272b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1cdc1040e8effbd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/agent-curator/index.ts:37"}, "properties": {"repobilityId": "56ea33a93ca2273e", "scanner": "scanner-primary", "fingerprint": "d1cdc1040e8effbd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-961abc40104c3d2f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "102ac937e5e47629", "scanner": "scanner-primary", "fingerprint": "961abc40104c3d2f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-736515afd5b79633", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim"}, "properties": {"repobilityId": "7ae4a33ff0e7ad4e", "scanner": "scanner-primary", "fingerprint": "736515afd5b79633", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-whakarite/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0b10d511f8469a2b", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "67162402ccc7d5e5", "scanner": "scanner-primary", "fingerprint": "0b10d511f8469a2b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-mahara/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-840fbc8d467102ba", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "fdcfbf826d13d13f", "scanner": "scanner-primary", "fingerprint": "840fbc8d467102ba", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kaitiaki/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7e5c190b96f811d9", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "bb291ca5c8943bd9", "scanner": "scanner-primary", "fingerprint": "7e5c190b96f811d9", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c44b1da9abbcf7a3", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:18-slim"}, "properties": {"repobilityId": "a6d2301b17dee6e1", "scanner": "scanner-primary", "fingerprint": "c44b1da9abbcf7a3", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/mcp/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9506ce4f64f3fca6", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/dashboard/Dockerfile"}, "properties": {"repobilityId": "e3e08ca73dd4f043", "scanner": "scanner-primary", "fingerprint": "9506ce4f64f3fca6", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-139167671878e446", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: nginx:alpine"}, "properties": {"repobilityId": "474c32a4c361667a", "scanner": "scanner-primary", "fingerprint": "139167671878e446", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/dashboard/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1319b704224ddcd6", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "0bc22f7a7500e475", "scanner": "scanner-primary", "fingerprint": "1319b704224ddcd6", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-karere/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d579a65e2b916764", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.10-slim"}, "properties": {"repobilityId": "24179a15f33f8243", "scanner": "scanner-primary", "fingerprint": "d579a65e2b916764", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-karere-rss/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8873607d43f6de22", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:18-slim"}, "properties": {"repobilityId": "67c34b3587f68ece", "scanner": "scanner-primary", "fingerprint": "8873607d43f6de22", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-toi/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d1f9138d3b451a2c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "6a80f2faf6b2f76c", "scanner": "scanner-primary", "fingerprint": "d1f9138d3b451a2c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-kaitatari/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d2bc7d7a3854bc05", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "e0dae99e2ed65f08", "scanner": "scanner-primary", "fingerprint": "d2bc7d7a3854bc05", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-tuhura/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e7703b0b211475d0", "level": "warning", "message": {"text": "Dockerfile runs as root: docker/te-tirohanga/Dockerfile"}, "properties": {"repobilityId": "adfcdf7fbb7bf876", "scanner": "scanner-primary", "fingerprint": "e7703b0b211475d0", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-252af417c596b1e2", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.11-slim"}, "properties": {"repobilityId": "9d7c82c7c349928b", "scanner": "scanner-primary", "fingerprint": "252af417c596b1e2", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-tirohanga/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e2460270d93a260", "level": "warning", "message": {"text": "Dockerfile runs as root: mcp-server/Dockerfile"}, "properties": {"repobilityId": "2fc32db9c026ebf2", "scanner": "scanner-primary", "fingerprint": "0e2460270d93a260", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-787e483f8183db8f", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "489969830de07a64", "scanner": "scanner-primary", "fingerprint": "787e483f8183db8f", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp-server/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-39f3e5d073526f1a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in project-submission.html:705"}, "properties": {"repobilityId": "0d6ac17ccad6b905", "scanner": "scanner-primary", "fingerprint": "39f3e5d073526f1a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "project-submission.html"}, "region": {"startLine": 705}}}]}, {"ruleId": "scanner-bc91482a66318c14", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public-resource.html:164"}, "properties": {"repobilityId": "43d9b70737a5877d", "scanner": "scanner-primary", "fingerprint": "bc91482a66318c14", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public-resource.html"}, "region": {"startLine": 164}}}]}, {"ruleId": "scanner-6bb4091f1d387017", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in senior-pathways.html:641"}, "properties": {"repobilityId": "fbdbc14b7f910442", "scanner": "scanner-primary", "fingerprint": "6bb4091f1d387017", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "senior-pathways.html"}, "region": {"startLine": 641}}}]}, {"ruleId": "scanner-b334bdc21ae04494", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in forgot-password.html:114"}, "properties": {"repobilityId": "df3ab2304c1166cd", "scanner": "scanner-primary", "fingerprint": "b334bdc21ae04494", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "forgot-password.html"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-836a1867cca76974", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in curriculum-rutherford.html:655"}, "properties": {"repobilityId": "52ec53956a9bd9f0", "scanner": "scanner-primary", "fingerprint": "836a1867cca76974", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "curriculum-rutherford.html"}, "region": {"startLine": 655}}}]}, {"ruleId": "scanner-605a39f46d7119ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in checkout-success.html:340"}, "properties": {"repobilityId": "66bb18cdac73dee5", "scanner": "scanner-primary", "fingerprint": "605a39f46d7119ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "checkout-success.html"}, "region": {"startLine": 340}}}]}, {"ruleId": "scanner-4bdf50fc1de81a21", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in cultural-validation-checklist.html:534"}, "properties": {"repobilityId": "71bce02108b6fa44", "scanner": "scanner-primary", "fingerprint": "4bdf50fc1de81a21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "cultural-validation-checklist.html"}, "region": {"startLine": 534}}}]}, {"ruleId": "scanner-556ca1ebcc62a4d4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in interactive-learning-demo.html:434"}, "properties": {"repobilityId": "a28c3590cc3e0314", "scanner": "scanner-primary", "fingerprint": "556ca1ebcc62a4d4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "interactive-learning-demo.html"}, "region": {"startLine": 434}}}]}, {"ruleId": "scanner-523cff4f0922553c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-grid-explorer-phase-2/index.html:406"}, "properties": {"repobilityId": "9a0eef12a929823a", "scanner": "scanner-primary", "fingerprint": "523cff4f0922553c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/hamilton-zoo-grid-explorer-phase-2/index.html"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-cfb370d2f8ad808d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-4.html:548"}, "properties": {"repobilityId": "8d094aee507fa760", "scanner": "scanner-primary", "fingerprint": "cfb370d2f8ad808d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons/unit-5-lesson-4.html"}, "region": {"startLine": 548}}}]}, {"ruleId": "scanner-6a7ddc85ade45b2d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-4-lesson-3.html:420"}, "properties": {"repobilityId": "3e954db3ec2dd0aa", "scanner": "scanner-primary", "fingerprint": "6a7ddc85ade45b2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons/unit-4-lesson-3.html"}, "region": {"startLine": 420}}}]}, {"ruleId": "scanner-a88ad586ded160ee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-3.html:479"}, "properties": {"repobilityId": "3957a9b5810606c6", "scanner": "scanner-primary", "fingerprint": "a88ad586ded160ee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons/unit-5-lesson-3.html"}, "region": {"startLine": 479}}}]}, {"ruleId": "scanner-2216c2de710690c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons/unit-5-lesson-2.html:408"}, "properties": {"repobilityId": "bf2aaf2a662840d5", "scanner": "scanner-primary", "fingerprint": "2216c2de710690c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons/unit-5-lesson-2.html"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-046faa62ecfd4b37", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html:404"}, "properties": {"repobilityId": "2d82a66619243925", "scanner": "scanner-primary", "fingerprint": "046faa62ecfd4b37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-ee41d81ac0d83b19", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html:404"}, "properties": {"repobilityId": "ac9ae5c1284754b7", "scanner": "scanner-primary", "fingerprint": "ee41d81ac0d83b19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 404}}}]}, {"ruleId": "scanner-c0178bee451d862e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html:587"}, "properties": {"repobilityId": "3ecca3b2ce631899", "scanner": "scanner-primary", "fingerprint": "c0178bee451d862e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html"}, "region": {"startLine": 587}}}]}, {"ruleId": "scanner-b06a1a549f38b5cc", "level": "note", "message": {"text": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-society-design.html:483"}, "properties": {"repobilityId": "15b91fe35ae4bacd", "scanner": "scanner-primary", "fingerprint": "b06a1a549f38b5cc", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/guided-inquiry-unit/guided-inquiry-society-design.html"}, "region": {"startLine": 483}}}]}, {"ruleId": "scanner-20be0d0d451a8798", "level": "note", "message": {"text": "Insecure pattern 'document_write' in units/_legacy_archive/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html:483"}, "properties": {"repobilityId": "b7831189531ab1b4", "scanner": "scanner-primary", "fingerprint": "20be0d0d451a8798", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html"}, "region": {"startLine": 483}}}]}, {"ruleId": "scanner-5536c894fca4062d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-phase2-modular/index.html:406"}, "properties": {"repobilityId": "a167d0cdc3d20682", "scanner": "scanner-primary", "fingerprint": "5536c894fca4062d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/hamilton-zoo-phase2-modular/index.html"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-70bb23ab7e09b274", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-4.html:633"}, "properties": {"repobilityId": "ad5a88ec2cb60297", "scanner": "scanner-primary", "fingerprint": "70bb23ab7e09b274", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons_backup/unit-5-lesson-4.html"}, "region": {"startLine": 633}}}]}, {"ruleId": "scanner-27d6aedb95eff0d3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-4-lesson-3.html:461"}, "properties": {"repobilityId": "10762fcfd2861704", "scanner": "scanner-primary", "fingerprint": "27d6aedb95eff0d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons_backup/unit-4-lesson-3.html"}, "region": {"startLine": 461}}}]}, {"ruleId": "scanner-5e84bd338b1dc73b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-3.html:577"}, "properties": {"repobilityId": "dafeeb97909424dd", "scanner": "scanner-primary", "fingerprint": "5e84bd338b1dc73b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons_backup/unit-5-lesson-3.html"}, "region": {"startLine": 577}}}]}, {"ruleId": "scanner-047ecbea1672ecda", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/lessons_backup/unit-5-lesson-2.html:497"}, "properties": {"repobilityId": "ec89d12591ed9266", "scanner": "scanner-primary", "fingerprint": "047ecbea1672ecda", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/lessons_backup/unit-5-lesson-2.html"}, "region": {"startLine": 497}}}]}, {"ruleId": "scanner-675a5aeda854ddea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html:218"}, "properties": {"repobilityId": "97f5986dfeb84e5f", "scanner": "scanner-primary", "fingerprint": "675a5aeda854ddea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-de4e2a70693d4d58", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html:218"}, "properties": {"repobilityId": "7c86b39b5a37582b", "scanner": "scanner-primary", "fingerprint": "de4e2a70693d4d58", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html"}, "region": {"startLine": 218}}}]}, {"ruleId": "scanner-f40703e8ed76646e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-maths/lessons/hamilton-zoo-phase2-modular.html:406"}, "properties": {"repobilityId": "9cd5fae4481256aa", "scanner": "scanner-primary", "fingerprint": "f40703e8ed76646e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/hamilton-zoo-maths/lessons/hamilton-zoo-phase2-modular.html"}, "region": {"startLine": 406}}}]}, {"ruleId": "scanner-5eb38fc5c6c481bd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/index.html:247"}, "properties": {"repobilityId": "e8c8f3c8c2ecf676", "scanner": "scanner-primary", "fingerprint": "5eb38fc5c6c481bd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/index.html"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-5713a55362f53a52", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html:336"}, "properties": {"repobilityId": "9e1c3601fa4471eb", "scanner": "scanner-primary", "fingerprint": "5713a55362f53a52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html"}, "region": {"startLine": 336}}}]}, {"ruleId": "scanner-33d6cd11b14b2ce6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html:356"}, "properties": {"repobilityId": "b96d753143522ed9", "scanner": "scanner-primary", "fingerprint": "33d6cd11b14b2ce6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html"}, "region": {"startLine": 356}}}]}, {"ruleId": "scanner-9bc698502ad2a19b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html:320"}, "properties": {"repobilityId": "4f22a62a5d5cf467", "scanner": "scanner-primary", "fingerprint": "9bc698502ad2a19b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html"}, "region": {"startLine": 320}}}]}, {"ruleId": "scanner-8e6af5c5bbb74b88", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html:437"}, "properties": {"repobilityId": "c4b9e91b6687a83a", "scanner": "scanner-primary", "fingerprint": "8e6af5c5bbb74b88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html"}, "region": {"startLine": 437}}}]}, {"ruleId": "scanner-a1aae231703af395", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html:356"}, "properties": {"repobilityId": "77bf1deaf8082a1c", "scanner": "scanner-primary", "fingerprint": "a1aae231703af395", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html"}, "region": {"startLine": 356}}}]}, {"ruleId": "scanner-3c4430726abea72e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html:328"}, "properties": {"repobilityId": "bf9468d5d280ffc7", "scanner": "scanner-primary", "fingerprint": "3c4430726abea72e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html"}, "region": {"startLine": 328}}}]}, {"ruleId": "scanner-90f9c48c80abf579", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html:431"}, "properties": {"repobilityId": "02ca16f4a9f109f5", "scanner": "scanner-primary", "fingerprint": "90f9c48c80abf579", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-c889a4239a2484ba", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/index.html:766"}, "properties": {"repobilityId": "74fa5f6129616901", "scanner": "scanner-primary", "fingerprint": "c889a4239a2484ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y10-physics-navigation-ocean-sciences/index.html"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-269420c58e67be68", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html:766"}, "properties": {"repobilityId": "0649c83a8435e4a6", "scanner": "scanner-primary", "fingerprint": "269420c58e67be68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html"}, "region": {"startLine": 766}}}]}, {"ruleId": "scanner-c7630cecb5dbaf40", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html:624"}, "properties": {"repobilityId": "a8d8b2d39cbfedd7", "scanner": "scanner-primary", "fingerprint": "c7630cecb5dbaf40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html"}, "region": {"startLine": 624}}}]}, {"ruleId": "scanner-c3e5025b7be18105", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html:885"}, "properties": {"repobilityId": "c2ca83f737e87096", "scanner": "scanner-primary", "fingerprint": "c3e5025b7be18105", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html"}, "region": {"startLine": 885}}}]}, {"ruleId": "scanner-6119d85a297e362d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html:237"}, "properties": {"repobilityId": "180b4b34012e3556", "scanner": "scanner-primary", "fingerprint": "6119d85a297e362d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-1923fa9bbaf8969c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html:405"}, "properties": {"repobilityId": "65f960f109a45fab", "scanner": "scanner-primary", "fingerprint": "1923fa9bbaf8969c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html"}, "region": {"startLine": 405}}}]}, {"ruleId": "scanner-7014e398d3af857f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:624"}, "properties": {"repobilityId": "009754c2a1635a7a", "scanner": "scanner-primary", "fingerprint": "7014e398d3af857f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html"}, "region": {"startLine": 624}}}]}, {"ruleId": "scanner-2d66a7409f533d3e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:885"}, "properties": {"repobilityId": "cbbb755cbdc17779", "scanner": "scanner-primary", "fingerprint": "2d66a7409f533d3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html"}, "region": {"startLine": 885}}}]}, {"ruleId": "scanner-34281a9ddff3d03a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:237"}, "properties": {"repobilityId": "6d6d207944963cad", "scanner": "scanner-primary", "fingerprint": "34281a9ddff3d03a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-fbe2108fac7f7b0a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:405"}, "properties": {"repobilityId": "c6e126f572444046", "scanner": "scanner-primary", "fingerprint": "fbe2108fac7f7b0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/_legacy_archive/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html"}, "region": {"startLine": 405}}}]}, {"ruleId": "scanner-60e702b76f5bd87c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y4-6-mathematics-hamilton-zoo-grid-explorer/index.html:463"}, "properties": {"repobilityId": "f48cc5d6aecb0179", "scanner": "scanner-primary", "fingerprint": "60e702b76f5bd87c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y4-6-mathematics-hamilton-zoo-grid-explorer/index.html"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-4b14486b1e3fa9ab", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-grid-explorer-phase-2/index.html:463"}, "properties": {"repobilityId": "1babe0bff8c9f527", "scanner": "scanner-primary", "fingerprint": "4b14486b1e3fa9ab", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/hamilton-zoo-grid-explorer-phase-2/index.html"}, "region": {"startLine": 463}}}]}, {"ruleId": "scanner-4fc8501e88e769cc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-4.html:598"}, "properties": {"repobilityId": "a7b50280b318ab52", "scanner": "scanner-primary", "fingerprint": "4fc8501e88e769cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/lessons/unit-5-lesson-4.html"}, "region": {"startLine": 598}}}]}, {"ruleId": "scanner-9865475dd3e001f9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-4-lesson-3.html:461"}, "properties": {"repobilityId": "d724f8f152aaa8b7", "scanner": "scanner-primary", "fingerprint": "9865475dd3e001f9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/lessons/unit-4-lesson-3.html"}, "region": {"startLine": 461}}}]}, {"ruleId": "scanner-46dba76417f3f07d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-3.html:543"}, "properties": {"repobilityId": "201898e6df316950", "scanner": "scanner-primary", "fingerprint": "46dba76417f3f07d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/lessons/unit-5-lesson-3.html"}, "region": {"startLine": 543}}}]}, {"ruleId": "scanner-c89aa687e40f7b2f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/lessons/unit-5-lesson-2.html:472"}, "properties": {"repobilityId": "784fc25bd9492afc", "scanner": "scanner-primary", "fingerprint": "c89aa687e40f7b2f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/lessons/unit-5-lesson-2.html"}, "region": {"startLine": 472}}}]}, {"ruleId": "scanner-539df16470ea2c26", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html:431"}, "properties": {"repobilityId": "40aa90f836cca0ee", "scanner": "scanner-primary", "fingerprint": "539df16470ea2c26", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/aotearoas-living-landscapes/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-53925bac36940255", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html:430"}, "properties": {"repobilityId": "d19c3facdd3e135e", "scanner": "scanner-primary", "fingerprint": "53925bac36940255", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/aotearoas-living-landscapes/y9-science-ecology/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-c72679b502100a91", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html:696"}, "properties": {"repobilityId": "b835154dba349907", "scanner": "scanner-primary", "fingerprint": "c72679b502100a91", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y0-mathematics-number-sense-journey-p\u0101ngarau-tuatahi/index.html"}, "region": {"startLine": 696}}}]}, {"ruleId": "scanner-8689d4c64684e4ac", "level": "note", "message": {"text": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-society-design.html:510"}, "properties": {"repobilityId": "971f708ff2d15b77", "scanner": "scanner-primary", "fingerprint": "8689d4c64684e4ac", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/guided-inquiry-unit/guided-inquiry-society-design.html"}, "region": {"startLine": 510}}}]}, {"ruleId": "scanner-7a209ccfc84812a2", "level": "note", "message": {"text": "Insecure pattern 'document_write' in units/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html:507"}, "properties": {"repobilityId": "d82c98e8c86d61c0", "scanner": "scanner-primary", "fingerprint": "7a209ccfc84812a2", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/guided-inquiry-unit/guided-inquiry-y9-10/guided-inquiry-society-design.html"}, "region": {"startLine": 507}}}]}, {"ruleId": "scanner-9119e5de2a2c7f04", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html:224"}, "properties": {"repobilityId": "9f4b429e8b846854", "scanner": "scanner-primary", "fingerprint": "9119e5de2a2c7f04", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y8-systems-thinking-unit/resources/who-has-the-real-power-interactive.html"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-7d9b179d212b79ad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html:221"}, "properties": {"repobilityId": "6a92ccf09b33c72d", "scanner": "scanner-primary", "fingerprint": "7d9b179d212b79ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y8-systems-thinking-unit/unit-36-phase-3-systems-thinking/resources/who-has-the-real-power-interactive.html"}, "region": {"startLine": 221}}}]}, {"ruleId": "scanner-b3680f6235156f18", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-4.html:560"}, "properties": {"repobilityId": "3226e7a8f97d7a00", "scanner": "scanner-primary", "fingerprint": "b3680f6235156f18", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/unit-5-global-connections/lessons/unit-5-lesson-4.html"}, "region": {"startLine": 560}}}]}, {"ruleId": "scanner-1a293267ae27585b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-3.html:503"}, "properties": {"repobilityId": "6805400054060101", "scanner": "scanner-primary", "fingerprint": "1a293267ae27585b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/unit-5-global-connections/lessons/unit-5-lesson-3.html"}, "region": {"startLine": 503}}}]}, {"ruleId": "scanner-79d6943320245c61", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/unit-5-global-connections/lessons/unit-5-lesson-2.html:432"}, "properties": {"repobilityId": "c51e52cc399c73e8", "scanner": "scanner-primary", "fingerprint": "79d6943320245c61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/unit-5-global-connections/lessons/unit-5-lesson-2.html"}, "region": {"startLine": 432}}}]}, {"ruleId": "scanner-11d78dc1fb2d3f64", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y6-8-mathematics-position-orientation-hamilton-zoo/lessons/hamilton-zoo-phase2-modular.html:442"}, "properties": {"repobilityId": "073f3ec86d7171b0", "scanner": "scanner-primary", "fingerprint": "11d78dc1fb2d3f64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y6-8-mathematics-position-orientation-hamilton-zoo/lessons/hamilton-zoo-phase2-modular.html"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-dd294276f29c00c6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/index.html:294"}, "properties": {"repobilityId": "945311da07926321", "scanner": "scanner-primary", "fingerprint": "dd294276f29c00c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/index.html"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-1a333481a49d4c9b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html:313"}, "properties": {"repobilityId": "698ee56797ef9b06", "scanner": "scanner-primary", "fingerprint": "1a333481a49d4c9b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-2.html"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-f44cb6cc9814059b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html:324"}, "properties": {"repobilityId": "20910b7843f6c37e", "scanner": "scanner-primary", "fingerprint": "f44cb6cc9814059b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-5.html"}, "region": {"startLine": 324}}}]}, {"ruleId": "scanner-6974ffb91156dab3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html:305"}, "properties": {"repobilityId": "6f2ffede8ebda94b", "scanner": "scanner-primary", "fingerprint": "6974ffb91156dab3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-6.html"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-30963f736571fcc8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html:421"}, "properties": {"repobilityId": "39e701a81c877126", "scanner": "scanner-primary", "fingerprint": "30963f736571fcc8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-4.html"}, "region": {"startLine": 421}}}]}, {"ruleId": "scanner-6b1c2538666382c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html:316"}, "properties": {"repobilityId": "80360a3b1d765e34", "scanner": "scanner-primary", "fingerprint": "6b1c2538666382c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-3.html"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-2f77e7968ba86262", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html:299"}, "properties": {"repobilityId": "c5140fc1f4b89622", "scanner": "scanner-primary", "fingerprint": "2f77e7968ba86262", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y11-history-social-studies-global-indigenous-solidarity/lessons/lesson-7.html"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-136289954147e926", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html:442"}, "properties": {"repobilityId": "a7467e99a0b34cf0", "scanner": "scanner-primary", "fingerprint": "136289954147e926", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/hamilton-zoo-mathematics/lessons/hamilton-zoo-phase2-modular.html"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-9977bd9288435c12", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-5.html:650"}, "properties": {"repobilityId": "8315a15ff8041fa1", "scanner": "scanner-primary", "fingerprint": "9977bd9288435c12", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-5.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-dbe789a7c02948dc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-6.html:911"}, "properties": {"repobilityId": "80a941c1e6e94408", "scanner": "scanner-primary", "fingerprint": "dbe789a7c02948dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-6.html"}, "region": {"startLine": 911}}}]}, {"ruleId": "scanner-27455d399bfd98d6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-1.html:262"}, "properties": {"repobilityId": "22449681fb357182", "scanner": "scanner-primary", "fingerprint": "27455d399bfd98d6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-1.html"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-c9d7441a4289d58c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-4.html:430"}, "properties": {"repobilityId": "76d18d5cb037c1b3", "scanner": "scanner-primary", "fingerprint": "c9d7441a4289d58c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/archive/lesson-4.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-5a00599e56345e93", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:650"}, "properties": {"repobilityId": "63e89c521b5f6109", "scanner": "scanner-primary", "fingerprint": "5a00599e56345e93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-9ea814f90802a517", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:911"}, "properties": {"repobilityId": "4ee51169e85233f4", "scanner": "scanner-primary", "fingerprint": "9ea814f90802a517", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html"}, "region": {"startLine": 911}}}]}, {"ruleId": "scanner-3263a91079d72008", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:262"}, "properties": {"repobilityId": "bbe10f66167f4cc1", "scanner": "scanner-primary", "fingerprint": "3263a91079d72008", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-1b5ea35ddb70f3a3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:430"}, "properties": {"repobilityId": "fc9da87687c7aa02", "scanner": "scanner-primary", "fingerprint": "1b5ea35ddb70f3a3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y7-8-social-studies-critical-thinking-te-whakaaro-maramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-283690ceee4f4499", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/index.html:774"}, "properties": {"repobilityId": "363b561c06235ef5", "scanner": "scanner-primary", "fingerprint": "283690ceee4f4499", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y10-physics-navigation-ocean-sciences/index.html"}, "region": {"startLine": 774}}}]}, {"ruleId": "scanner-ab475355a3f320f0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html:824"}, "properties": {"repobilityId": "f4ef8723704567c9", "scanner": "scanner-primary", "fingerprint": "ab475355a3f320f0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y10-physics-navigation-ocean-sciences/unit-43-phase-4-physics-navigation/index.html"}, "region": {"startLine": 824}}}]}, {"ruleId": "scanner-f0c3cd6b2ab5cdc1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/resources/biodiversity-tagger-game.html:431"}, "properties": {"repobilityId": "7e4a60f3649186c4", "scanner": "scanner-primary", "fingerprint": "f0c3cd6b2ab5cdc1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y9-science-living-landscapes-ecosystems/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-6e2fb697b7fc451a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/y9-science-living-landscapes-ecosystems/y9-science-ecology/resources/biodiversity-tagger-game.html:430"}, "properties": {"repobilityId": "86033f1f0db05c72", "scanner": "scanner-primary", "fingerprint": "6e2fb697b7fc451a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/y9-science-living-landscapes-ecosystems/y9-science-ecology/resources/biodiversity-tagger-game.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-38e41e9d36a89109", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html:650"}, "properties": {"repobilityId": "a43c2a85adcda72e", "scanner": "scanner-primary", "fingerprint": "38e41e9d36a89109", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-5.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-84b7a2c7e9279357", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html:911"}, "properties": {"repobilityId": "965913dde0326b6b", "scanner": "scanner-primary", "fingerprint": "84b7a2c7e9279357", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-6.html"}, "region": {"startLine": 911}}}]}, {"ruleId": "scanner-d97572bca10703cc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html:262"}, "properties": {"repobilityId": "947e6afcf4ea0e2f", "scanner": "scanner-primary", "fingerprint": "d97572bca10703cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-1.html"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-36788d5bcac6d465", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html:430"}, "properties": {"repobilityId": "f06bbbafb104e745", "scanner": "scanner-primary", "fingerprint": "36788d5bcac6d465", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/archive/lesson-4.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-b5f74ea03acedc77", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html:650"}, "properties": {"repobilityId": "d0bff60bd569ce22", "scanner": "scanner-primary", "fingerprint": "b5f74ea03acedc77", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-5.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-4b55e39de668d04c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html:911"}, "properties": {"repobilityId": "9cd4dc50d4a2a14f", "scanner": "scanner-primary", "fingerprint": "4b55e39de668d04c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-6.html"}, "region": {"startLine": 911}}}]}, {"ruleId": "scanner-64ff304460073a1f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html:262"}, "properties": {"repobilityId": "09e008433926ca2a", "scanner": "scanner-primary", "fingerprint": "64ff304460073a1f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-1.html"}, "region": {"startLine": 262}}}]}, {"ruleId": "scanner-bd37d7e0f11585e4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html:430"}, "properties": {"repobilityId": "bb369bf924a65947", "scanner": "scanner-primary", "fingerprint": "bd37d7e0f11585e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "units/critical-thinking-te-whakaaro-m\u0101ramatanga/unit-34-phase-3-critical-thinking/archive/lesson-4.html"}, "region": {"startLine": 430}}}]}, {"ruleId": "scanner-29f35c6cecdace90", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in docker/te-aronui/rlm_api.py:51"}, "properties": {"repobilityId": "621b85f33c26d361", "scanner": "scanner-primary", "fingerprint": "29f35c6cecdace90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_api.py"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-067a9bb9963c6ed9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordfind.html:204"}, "properties": {"repobilityId": "a7a293e944d3fceb", "scanner": "scanner-primary", "fingerprint": "067a9bb9963c6ed9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/wordfind.html"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-a20c0a93f5987ab7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/tukutuku-pattern-explorer.html:650"}, "properties": {"repobilityId": "266ab7c37eff55f6", "scanner": "scanner-primary", "fingerprint": "a20c0a93f5987ab7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/tukutuku-pattern-explorer.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-4654f7e1b8754fa5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/categories.html:600"}, "properties": {"repobilityId": "f2667bcb3e653220", "scanner": "scanner-primary", "fingerprint": "4654f7e1b8754fa5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/categories.html"}, "region": {"startLine": 600}}}]}, {"ruleId": "scanner-d7278e5ff94b2d9d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/countdown-letters.html:723"}, "properties": {"repobilityId": "53eeaad834857b2e", "scanner": "scanner-primary", "fingerprint": "d7278e5ff94b2d9d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/countdown-letters.html"}, "region": {"startLine": 723}}}]}, {"ruleId": "scanner-0ce502ef50402248", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/whakatohia-patterns.html:878"}, "properties": {"repobilityId": "4d412974eedae8d4", "scanner": "scanner-primary", "fingerprint": "0ce502ef50402248", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/whakatohia-patterns.html"}, "region": {"startLine": 878}}}]}, {"ruleId": "scanner-19d2b1e063e2544a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/whakapapa-connections.html:886"}, "properties": {"repobilityId": "59d2528e604797ff", "scanner": "scanner-primary", "fingerprint": "19d2b1e063e2544a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/whakapapa-connections.html"}, "region": {"startLine": 886}}}]}, {"ruleId": "scanner-477931e897ef57f2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-6-letter.html:929"}, "properties": {"repobilityId": "fb319eeb0c55d1f0", "scanner": "scanner-primary", "fingerprint": "477931e897ef57f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/wordle-6-letter.html"}, "region": {"startLine": 929}}}]}, {"ruleId": "scanner-4ec28525848e8118", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/te-reo-wordle.html:1156"}, "properties": {"repobilityId": "243be357787c6042", "scanner": "scanner-primary", "fingerprint": "4ec28525848e8118", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/te-reo-wordle.html"}, "region": {"startLine": 1156}}}]}, {"ruleId": "scanner-de6e035a642e26b7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/pangarau-patterns.html:759"}, "properties": {"repobilityId": "be9eb44d459ba3f2", "scanner": "scanner-primary", "fingerprint": "de6e035a642e26b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/pangarau-patterns.html"}, "region": {"startLine": 759}}}]}, {"ruleId": "scanner-c19e682bd12004db", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-safe-demo.html:258"}, "properties": {"repobilityId": "8bc6e47cae2b2380", "scanner": "scanner-primary", "fingerprint": "c19e682bd12004db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/kai\u0101rahi-k\u0113mu-safe-demo.html"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-42ad55f595c2bba8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/wordle-unlimited.html:1097"}, "properties": {"repobilityId": "1cfef17afdde4ff2", "scanner": "scanner-primary", "fingerprint": "42ad55f595c2bba8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/wordle-unlimited.html"}, "region": {"startLine": 1097}}}]}, {"ruleId": "scanner-7ede0b3ce1f0d0d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/spelling-bee.html:1161"}, "properties": {"repobilityId": "f8acea24af20e933", "scanner": "scanner-primary", "fingerprint": "7ede0b3ce1f0d0d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/spelling-bee.html"}, "region": {"startLine": 1161}}}]}, {"ruleId": "scanner-1fcd419027186dd5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in games/kai\u0101rahi-k\u0113mu-demonstration.html:322"}, "properties": {"repobilityId": "7d819caa11213792", "scanner": "scanner-primary", "fingerprint": "1fcd419027186dd5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "games/kai\u0101rahi-k\u0113mu-demonstration.html"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-cf253f967bf82291", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/account-settings.html:1595"}, "properties": {"repobilityId": "15c3d7c9936885a2", "scanner": "scanner-primary", "fingerprint": "cf253f967bf82291", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/account-settings.html"}, "region": {"startLine": 1595}}}]}, {"ruleId": "scanner-1c661f1cc3e75591", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-test-simple.html:56"}, "properties": {"repobilityId": "8e2a0e7116c6c006", "scanner": "scanner-primary", "fingerprint": "1c661f1cc3e75591", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/auth-test-simple.html"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-8b3bce409f02785d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/auth-diagnostics.html:301"}, "properties": {"repobilityId": "7c3361b4c4ec2239", "scanner": "scanner-primary", "fingerprint": "8b3bce409f02785d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/auth-diagnostics.html"}, "region": {"startLine": 301}}}]}, {"ruleId": "scanner-a1503fdf9b9ad575", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/profile.html:557"}, "properties": {"repobilityId": "05bdf205f5a0eafd", "scanner": "scanner-primary", "fingerprint": "a1503fdf9b9ad575", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/profile.html"}, "region": {"startLine": 557}}}]}, {"ruleId": "scanner-09b272f76ab681cf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/avatar-picker.html:665"}, "properties": {"repobilityId": "e7ac295c33e8fc29", "scanner": "scanner-primary", "fingerprint": "09b272f76ab681cf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/avatar-picker.html"}, "region": {"startLine": 665}}}]}, {"ruleId": "scanner-f074d65a0f357321", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/oauth-diagnostic.html:84"}, "properties": {"repobilityId": "0727ab1567ea0607", "scanner": "scanner-primary", "fingerprint": "f074d65a0f357321", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/oauth-diagnostic.html"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-649587c301c3d2ed", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in auth/login-simple.html:240"}, "properties": {"repobilityId": "c9510ac25f9ce92d", "scanner": "scanner-primary", "fingerprint": "649587c301c3d2ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "auth/login-simple.html"}, "region": {"startLine": 240}}}]}, {"ruleId": "scanner-4058190a3298e282", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/lattice-explorer/index.html:683"}, "properties": {"repobilityId": "228c3b275f51d302", "scanner": "scanner-primary", "fingerprint": "4058190a3298e282", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/lattice-explorer/index.html"}, "region": {"startLine": 683}}}]}, {"ruleId": "scanner-81862ed9ff00f6a7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/cross-lane-correlation/index.html:699"}, "properties": {"repobilityId": "4437fdf8c8161f03", "scanner": "scanner-primary", "fingerprint": "81862ed9ff00f6a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/cross-lane-correlation/index.html"}, "region": {"startLine": 699}}}]}, {"ruleId": "scanner-e0d0fe62373b0d2a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/graph-ring-traversal/index.html:912"}, "properties": {"repobilityId": "783c5fd9a05041b8", "scanner": "scanner-primary", "fingerprint": "e0d0fe62373b0d2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/graph-ring-traversal/index.html"}, "region": {"startLine": 912}}}]}, {"ruleId": "scanner-9a58696b425d05ee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in _personal/sovereign-lattice/content/site-density-profile/index.html:946"}, "properties": {"repobilityId": "2e13cf747f6139f0", "scanner": "scanner-primary", "fingerprint": "9a58696b425d05ee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_personal/sovereign-lattice/content/site-density-profile/index.html"}, "region": {"startLine": 946}}}]}, {"ruleId": "scanner-45a786d78346a0e2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-sidebar.js:143"}, "properties": {"repobilityId": "4f3107266acbe443", "scanner": "scanner-primary", "fingerprint": "45a786d78346a0e2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-sidebar.js"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-b8f7974c2873b14f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-context-nav.js:56"}, "properties": {"repobilityId": "9ab028914ccd0e3c", "scanner": "scanner-primary", "fingerprint": "b8f7974c2873b14f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-context-nav.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-43ea328fed6e5bdd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-notifications.js:58"}, "properties": {"repobilityId": "092791ce941dbb19", "scanner": "scanner-primary", "fingerprint": "43ea328fed6e5bdd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/forum-notifications.js"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-a0188f3e5dd17888", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/interactive-components.js:181"}, "properties": {"repobilityId": "fc8cc40199f39429", "scanner": "scanner-primary", "fingerprint": "a0188f3e5dd17888", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/interactive-components.js"}, "region": {"startLine": 181}}}]}, {"ruleId": "scanner-7900867f739295f6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-page.js:319"}, "properties": {"repobilityId": "d658ba894b3eee30", "scanner": "scanner-primary", "fingerprint": "7900867f739295f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/browse-page.js"}, "region": {"startLine": 319}}}]}, {"ruleId": "scanner-c6bb416013d5f04e", "level": "note", "message": {"text": "Insecure pattern 'document_write' in js/creation-studio.js:1148"}, "properties": {"repobilityId": "989aafa7b0091b6d", "scanner": "scanner-primary", "fingerprint": "c6bb416013d5f04e", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/creation-studio.js"}, "region": {"startLine": 1148}}}]}, {"ruleId": "scanner-71b0a7835f5ef425", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/creation-studio.js:242"}, "properties": {"repobilityId": "d50319092ada579f", "scanner": "scanner-primary", "fingerprint": "71b0a7835f5ef425", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/creation-studio.js"}, "region": {"startLine": 242}}}]}, {"ruleId": "scanner-a42e7c0374d4d8d9", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in js/creation-studio.js:953"}, "properties": {"repobilityId": "d9f3ddeadc74f0b9", "scanner": "scanner-primary", "fingerprint": "a42e7c0374d4d8d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/creation-studio.js"}, "region": {"startLine": 953}}}]}, {"ruleId": "scanner-1da9b5878200da4b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-news-ticker.js:54"}, "properties": {"repobilityId": "efe24c1423739c52", "scanner": "scanner-primary", "fingerprint": "1da9b5878200da4b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/forum-news-ticker.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-afe8f8b83ba4f96a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-progress.js:42"}, "properties": {"repobilityId": "bb796020302dba93", "scanner": "scanner-primary", "fingerprint": "afe8f8b83ba4f96a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-progress.js"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-177d482368bea393", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/my-kete-progress.js:228"}, "properties": {"repobilityId": "ff42854dc16dab73", "scanner": "scanner-primary", "fingerprint": "177d482368bea393", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-progress.js"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-d2cc41542feccaf3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-sidebar.js:33"}, "properties": {"repobilityId": "797fabe06c09e743", "scanner": "scanner-primary", "fingerprint": "d2cc41542feccaf3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/forum-sidebar.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-5a406868948e9183", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/browse-heroes.js:331"}, "properties": {"repobilityId": "15fe6aca110fc4ec", "scanner": "scanner-primary", "fingerprint": "5a406868948e9183", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/browse-heroes.js"}, "region": {"startLine": 331}}}]}, {"ruleId": "scanner-b388afc52cc90a70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/games-hub.js:9"}, "properties": {"repobilityId": "d9e5c0965bb056e4", "scanner": "scanner-primary", "fingerprint": "b388afc52cc90a70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/games-hub.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-86c48bf6cb44e6e3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/lesson-navigation.js:31"}, "properties": {"repobilityId": "7843fd19964f5acf", "scanner": "scanner-primary", "fingerprint": "86c48bf6cb44e6e3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/lesson-navigation.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-d38b8175a9f215e1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-progress.js:223"}, "properties": {"repobilityId": "cc8ee34ac1baac6f", "scanner": "scanner-primary", "fingerprint": "d38b8175a9f215e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/wordle-progress.js"}, "region": {"startLine": 223}}}]}, {"ruleId": "scanner-94c4eae7f563fe6e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content-sidebar.js:95"}, "properties": {"repobilityId": "a852f5b223c48acc", "scanner": "scanner-primary", "fingerprint": "94c4eae7f563fe6e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/teaching-content-sidebar.js"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-c6be11f0a95b6b2f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/save-resource.js:121"}, "properties": {"repobilityId": "28b06d2c12dc5ec5", "scanner": "scanner-primary", "fingerprint": "c6be11f0a95b6b2f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/save-resource.js"}, "region": {"startLine": 121}}}]}, {"ruleId": "scanner-618ba34ade15007d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/global-feedback.js:12"}, "properties": {"repobilityId": "b90bddda3c01fbb2", "scanner": "scanner-primary", "fingerprint": "618ba34ade15007d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/global-feedback.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-d5a9dc96bd7689bb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-whakatauki.js:144"}, "properties": {"repobilityId": "4c1124df3e070479", "scanner": "scanner-primary", "fingerprint": "d5a9dc96bd7689bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/daily-whakatauki.js"}, "region": {"startLine": 144}}}]}, {"ruleId": "scanner-ab1becb1c0a60493", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/stats-loader.js:62"}, "properties": {"repobilityId": "47cade1c5871ffa0", "scanner": "scanner-primary", "fingerprint": "ab1becb1c0a60493", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/stats-loader.js"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-12935207ca5984d2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teacher-dashboard.js:163"}, "properties": {"repobilityId": "52cfe4b54ab67cd4", "scanner": "scanner-primary", "fingerprint": "12935207ca5984d2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/teacher-dashboard.js"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-d46c1211b8e75abb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/analytics-dashboard.js:36"}, "properties": {"repobilityId": "938c1b8c92fd3af1", "scanner": "scanner-primary", "fingerprint": "d46c1211b8e75abb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/analytics-dashboard.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-1ec86aa5bf028f16", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/cookie-consent.js:57"}, "properties": {"repobilityId": "d3ebdbd6ae0b7412", "scanner": "scanner-primary", "fingerprint": "1ec86aa5bf028f16", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/cookie-consent.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-2bc294bb3c3b6bff", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-viewer.js:150"}, "properties": {"repobilityId": "0c6422f981d3e63e", "scanner": "scanner-primary", "fingerprint": "2bc294bb3c3b6bff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-viewer.js"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-5d60d91fd7cf5032", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/activity-generator.js:326"}, "properties": {"repobilityId": "abd30f475f42d66b", "scanner": "scanner-primary", "fingerprint": "5d60d91fd7cf5032", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/activity-generator.js"}, "region": {"startLine": 326}}}]}, {"ruleId": "scanner-773780387e848378", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pricing-init.js:86"}, "properties": {"repobilityId": "b4dc6dc2f2b37cb7", "scanner": "scanner-primary", "fingerprint": "773780387e848378", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pricing-init.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-e4cf6c414994a1c7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-footer.js:115"}, "properties": {"repobilityId": "06f9ae73b6601024", "scanner": "scanner-primary", "fingerprint": "e4cf6c414994a1c7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/enhanced-footer.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-3a4bbe2b363e0244", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-core.js:146"}, "properties": {"repobilityId": "b68b3ef2f1846b4d", "scanner": "scanner-primary", "fingerprint": "3a4bbe2b363e0244", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/workshop-core.js"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-3f2840bb6b0095bb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/input-sanitizer.js:44"}, "properties": {"repobilityId": "154ee4796aa85a28", "scanner": "scanner-primary", "fingerprint": "3f2840bb6b0095bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/input-sanitizer.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-7fe541ae0c6acb26", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/student-dashboard.js:86"}, "properties": {"repobilityId": "4d07313ebd8b3c10", "scanner": "scanner-primary", "fingerprint": "7fe541ae0c6acb26", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/student-dashboard.js"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-735602f0b026b2d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-dashboard-init.js:25"}, "properties": {"repobilityId": "4d5a2e3189e1bab9", "scanner": "scanner-primary", "fingerprint": "735602f0b026b2d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-dashboard-init.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-e8792fb0b3660d1d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/streamlined-header.js:41"}, "properties": {"repobilityId": "31063cc2278daf0f", "scanner": "scanner-primary", "fingerprint": "e8792fb0b3660d1d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/streamlined-header.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-4609738248ba7675", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/onboarding.js:63"}, "properties": {"repobilityId": "a935ef2d37717eba", "scanner": "scanner-primary", "fingerprint": "4609738248ba7675", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/onboarding.js"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-ad62355c4f5932b7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-collections.js:274"}, "properties": {"repobilityId": "81ed9d96f70b993a", "scanner": "scanner-primary", "fingerprint": "ad62355c4f5932b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-collections.js"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-f6c4ccdf3e01a67d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/content-recommendation-engine.js:368"}, "properties": {"repobilityId": "bcafa6ffeb36a2f4", "scanner": "scanner-primary", "fingerprint": "f6c4ccdf3e01a67d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/content-recommendation-engine.js"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-c728bcd80f07bf3e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/notification-bell.js:73"}, "properties": {"repobilityId": "8e01df4b627a0d25", "scanner": "scanner-primary", "fingerprint": "c728bcd80f07bf3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/notification-bell.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-b8aab029930319c9", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/resource-curriculum-alignment.js:347"}, "properties": {"repobilityId": "2dca9b16d59c428b", "scanner": "scanner-primary", "fingerprint": "b8aab029930319c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-curriculum-alignment.js"}, "region": {"startLine": 347}}}]}, {"ruleId": "scanner-e3713a9d166208e9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/dashboard.js:75"}, "properties": {"repobilityId": "a5cdd623388ae886", "scanner": "scanner-primary", "fingerprint": "e3713a9d166208e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/dashboard.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-42d6ea4e21de8535", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/email-verification-banner.js:31"}, "properties": {"repobilityId": "0ca193620c8fcc68", "scanner": "scanner-primary", "fingerprint": "42d6ea4e21de8535", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/email-verification-banner.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-202e15493e88005e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-usage.js:117"}, "properties": {"repobilityId": "12f72cd5a60c2549", "scanner": "scanner-primary", "fingerprint": "202e15493e88005e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-usage.js"}, "region": {"startLine": 117}}}]}, {"ruleId": "scanner-32517351b56c89f1", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/related-resources.js:536"}, "properties": {"repobilityId": "a016fdc6d85e4b73", "scanner": "scanner-primary", "fingerprint": "32517351b56c89f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/related-resources.js"}, "region": {"startLine": 536}}}]}, {"ruleId": "scanner-d7dc1dc62cde29e8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/auth-ui.js:193"}, "properties": {"repobilityId": "8a8943554d57f04b", "scanner": "scanner-primary", "fingerprint": "d7dc1dc62cde29e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/auth-ui.js"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-8c4467b4d66e72a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-data-bridge.js:339"}, "properties": {"repobilityId": "0b03ed0b1527a6f5", "scanner": "scanner-primary", "fingerprint": "8c4467b4d66e72a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-data-bridge.js"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-f9f09f4a5827ec1e", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/layout-loader.js:49"}, "properties": {"repobilityId": "8cad1930d817ffaa", "scanner": "scanner-primary", "fingerprint": "f9f09f4a5827ec1e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/layout-loader.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-96321ac4c9315e2a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum-editor.js:75"}, "properties": {"repobilityId": "7ac9280859d5a337", "scanner": "scanner-primary", "fingerprint": "96321ac4c9315e2a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/forum-editor.js"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-958e2d40aaa0f8fc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-interactive.js:26"}, "properties": {"repobilityId": "5d8dfcf0fd3b5f01", "scanner": "scanner-primary", "fingerprint": "958e2d40aaa0f8fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-interactive.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-becb7ad4f690f8a1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/other-resources-graphrag.js:73"}, "properties": {"repobilityId": "2c5c5f57a5e9c086", "scanner": "scanner-primary", "fingerprint": "becb7ad4f690f8a1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/other-resources-graphrag.js"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-139a395e1b67942f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-navigator.js:25"}, "properties": {"repobilityId": "72e9d23bf6667401", "scanner": "scanner-primary", "fingerprint": "139a395e1b67942f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-navigator.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-4f6f00b4f95a11af", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/accessibility-enhancements.js:254"}, "properties": {"repobilityId": "6ada1a3139f74e55", "scanner": "scanner-primary", "fingerprint": "4f6f00b4f95a11af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/accessibility-enhancements.js"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-7bf7fc61247249c9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-sidebar.js:133"}, "properties": {"repobilityId": "058940a3e73e1fff", "scanner": "scanner-primary", "fingerprint": "7bf7fc61247249c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-sidebar.js"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-3f1a1434459290c8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/maori-pronunciation.js:460"}, "properties": {"repobilityId": "06e54109537137cf", "scanner": "scanner-primary", "fingerprint": "3f1a1434459290c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/maori-pronunciation.js"}, "region": {"startLine": 460}}}]}, {"ruleId": "scanner-31cf52aeba399fee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/spelling-bee-game.js:403"}, "properties": {"repobilityId": "182c001901095942", "scanner": "scanner-primary", "fingerprint": "31cf52aeba399fee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/spelling-bee-game.js"}, "region": {"startLine": 403}}}]}, {"ruleId": "scanner-8307dc130756b8fd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components-navigation.js:460"}, "properties": {"repobilityId": "9724c2c06a089767", "scanner": "scanner-primary", "fingerprint": "8307dc130756b8fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/shared-components-navigation.js"}, "region": {"startLine": 460}}}]}, {"ruleId": "scanner-9de2765854c5cb07", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/news-loader.js:12"}, "properties": {"repobilityId": "a350ca59e51c2d5d", "scanner": "scanner-primary", "fingerprint": "9de2765854c5cb07", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/news-loader.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-678ea66516b4f850", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/assessment-tools.js:70"}, "properties": {"repobilityId": "d793409ef5a2a803", "scanner": "scanner-primary", "fingerprint": "678ea66516b4f850", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/assessment-tools.js"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-4552461a883d1136", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/footer.js:55"}, "properties": {"repobilityId": "a7bfc6f91ca3674d", "scanner": "scanner-primary", "fingerprint": "4552461a883d1136", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/footer.js"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-63156dfde8e781b5", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/footer.js:57"}, "properties": {"repobilityId": "b097c583de0ae42a", "scanner": "scanner-primary", "fingerprint": "63156dfde8e781b5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/footer.js"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-6c3f9df521816bf8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/english-wordle-game.js:584"}, "properties": {"repobilityId": "1675803f426323a3", "scanner": "scanner-primary", "fingerprint": "6c3f9df521816bf8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/english-wordle-game.js"}, "region": {"startLine": 584}}}]}, {"ruleId": "scanner-7c6d7c7371e5028b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/games-page.js:253"}, "properties": {"repobilityId": "0efff6ae989331bc", "scanner": "scanner-primary", "fingerprint": "7c6d7c7371e5028b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/games-page.js"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-8b54ba3d5949c88e", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/seo-schema-generator.js:763"}, "properties": {"repobilityId": "ea8833a92b29755f", "scanner": "scanner-primary", "fingerprint": "8b54ba3d5949c88e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/seo-schema-generator.js"}, "region": {"startLine": 763}}}]}, {"ruleId": "scanner-ed12c20cbb005e47", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-suggestion-pipeline.js:237"}, "properties": {"repobilityId": "6ff798708e241e93", "scanner": "scanner-primary", "fingerprint": "ed12c20cbb005e47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/kupu-suggestion-pipeline.js"}, "region": {"startLine": 237}}}]}, {"ruleId": "scanner-cfc65b9c182f0a63", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/handouts-init.js:79"}, "properties": {"repobilityId": "5000d0373df17967", "scanner": "scanner-primary", "fingerprint": "cfc65b9c182f0a63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/handouts-init.js"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-6ddc6a4a5c376df4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/enhanced-header.js:125"}, "properties": {"repobilityId": "0daa9714d5bb1a29", "scanner": "scanner-primary", "fingerprint": "6ddc6a4a5c376df4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/enhanced-header.js"}, "region": {"startLine": 125}}}]}, {"ruleId": "scanner-6125b8823cc12577", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/daily-game-tracker.js:680"}, "properties": {"repobilityId": "62d8d3d969b93d1a", "scanner": "scanner-primary", "fingerprint": "6125b8823cc12577", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/daily-game-tracker.js"}, "region": {"startLine": 680}}}]}, {"ruleId": "scanner-2e65dd9efd8ca669", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/bias-buster-game.js:203"}, "properties": {"repobilityId": "a6e647cfd908132d", "scanner": "scanner-primary", "fingerprint": "2e65dd9efd8ca669", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/bias-buster-game.js"}, "region": {"startLine": 203}}}]}, {"ruleId": "scanner-e2bd30c89abc365f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-sidebar.js:43"}, "properties": {"repobilityId": "7af0abb162c1da8c", "scanner": "scanner-primary", "fingerprint": "e2bd30c89abc365f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/shared-sidebar.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-a8f098389b817cd0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/adaptive-difficulty-system.js:649"}, "properties": {"repobilityId": "f4471a8a76efef17", "scanner": "scanner-primary", "fingerprint": "a8f098389b817cd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/adaptive-difficulty-system.js"}, "region": {"startLine": 649}}}]}, {"ruleId": "scanner-5e5ac5f024bd8124", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/game-cta.js:9"}, "properties": {"repobilityId": "d109e7b735a5d6c1", "scanner": "scanner-primary", "fingerprint": "5e5ac5f024bd8124", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/game-cta.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-31711a41b85c5df1", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/video-integration.js:436"}, "properties": {"repobilityId": "338f44575a17276a", "scanner": "scanner-primary", "fingerprint": "31711a41b85c5df1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/video-integration.js"}, "region": {"startLine": 436}}}]}, {"ruleId": "scanner-05f28d588081646f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-documents-init.js:59"}, "properties": {"repobilityId": "64ca111a21ee9ed3", "scanner": "scanner-primary", "fingerprint": "05f28d588081646f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-documents-init.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-d4ad7ba469fe6f02", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/fallacy-defender-game.js:56"}, "properties": {"repobilityId": "4b06f569d45378b9", "scanner": "scanner-primary", "fingerprint": "d4ad7ba469fe6f02", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/fallacy-defender-game.js"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-16f4237043d9af82", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/simple-bookmarks.js:190"}, "properties": {"repobilityId": "d48bff994499b756", "scanner": "scanner-primary", "fingerprint": "16f4237043d9af82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/simple-bookmarks.js"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-1f7db007f92bd893", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-discussion.js:236"}, "properties": {"repobilityId": "0a2b931d7e04c0c8", "scanner": "scanner-primary", "fingerprint": "1f7db007f92bd893", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-discussion.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-d0b0affc847e44fb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/teaching-content.js:90"}, "properties": {"repobilityId": "4df4d110c585baaf", "scanner": "scanner-primary", "fingerprint": "d0b0affc847e44fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/teaching-content.js"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-f65e43712ceff933", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/timetable-manager.js:41"}, "properties": {"repobilityId": "1a247157184bc114", "scanner": "scanner-primary", "fingerprint": "f65e43712ceff933", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/timetable-manager.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-f5cf520ea98f5652", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-page.js:185"}, "properties": {"repobilityId": "b47628e4ea610d7c", "scanner": "scanner-primary", "fingerprint": "f5cf520ea98f5652", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-page.js"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-27560432c89b9aeb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/forum.js:148"}, "properties": {"repobilityId": "e1172bfe40fe88b1", "scanner": "scanner-primary", "fingerprint": "27560432c89b9aeb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/forum.js"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-fe42a2a3ae8e26ac", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/main.js:365"}, "properties": {"repobilityId": "3b23e0cd41b5e603", "scanner": "scanner-primary", "fingerprint": "fe42a2a3ae8e26ac", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/main.js"}, "region": {"startLine": 365}}}]}, {"ruleId": "scanner-30055f3f2eab779d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-init.js:370"}, "properties": {"repobilityId": "4b83439354abb52a", "scanner": "scanner-primary", "fingerprint": "30055f3f2eab779d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/unit-plans-init.js"}, "region": {"startLine": 370}}}]}, {"ruleId": "scanner-d09178b56170050c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/gamification-system.js:557"}, "properties": {"repobilityId": "f57f7e47b5fd898d", "scanner": "scanner-primary", "fingerprint": "d09178b56170050c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/gamification-system.js"}, "region": {"startLine": 557}}}]}, {"ruleId": "scanner-1237e4407b22e764", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/workshop-access.js:258"}, "properties": {"repobilityId": "7e07fa0164537ac2", "scanner": "scanner-primary", "fingerprint": "1237e4407b22e764", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/workshop-access.js"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-4646340a320c8b9f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pdf-viewer.js:55"}, "properties": {"repobilityId": "08557247e9849be1", "scanner": "scanner-primary", "fingerprint": "4646340a320c8b9f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pdf-viewer.js"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-b639877e93983f56", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pwa-registration.js:96"}, "properties": {"repobilityId": "b94905f0acdf5e61", "scanner": "scanner-primary", "fingerprint": "b639877e93983f56", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pwa-registration.js"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-0d95d8009acf6d6d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/whakatauki-animator.js:97"}, "properties": {"repobilityId": "e5977d8e92a17336", "scanner": "scanner-primary", "fingerprint": "0d95d8009acf6d6d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/whakatauki-animator.js"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-dc21ecfdd2b7b905", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/curriculum-browser.js:211"}, "properties": {"repobilityId": "23eac7163f3d7503", "scanner": "scanner-primary", "fingerprint": "dc21ecfdd2b7b905", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/curriculum-browser.js"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-25025db2d2de6102", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/content-hierarchy.js:589"}, "properties": {"repobilityId": "0bf92321a9921a5b", "scanner": "scanner-primary", "fingerprint": "25025db2d2de6102", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/content-hierarchy.js"}, "region": {"startLine": 589}}}]}, {"ruleId": "scanner-e61e570a2903b898", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-youtube-search.js:264"}, "properties": {"repobilityId": "d9993c080793da0d", "scanner": "scanner-primary", "fingerprint": "e61e570a2903b898", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-youtube-search.js"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-f559b9e017bd0146", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/unit-plans-hero.js:277"}, "properties": {"repobilityId": "b951747468e4bee6", "scanner": "scanner-primary", "fingerprint": "f559b9e017bd0146", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/unit-plans-hero.js"}, "region": {"startLine": 277}}}]}, {"ruleId": "scanner-6c9599819ddf1469", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/school-autocomplete.js:99"}, "properties": {"repobilityId": "2b25aadfd64d9581", "scanner": "scanner-primary", "fingerprint": "6c9599819ddf1469", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/school-autocomplete.js"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-a49d3143114189c7", "level": "note", "message": {"text": "Insecure pattern 'document_write' in js/my-kete-timetable.js:817"}, "properties": {"repobilityId": "e4edb049b5b0ae04", "scanner": "scanner-primary", "fingerprint": "a49d3143114189c7", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-timetable.js"}, "region": {"startLine": 817}}}]}, {"ruleId": "scanner-b69983d2e1c4b887", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete-timetable.js:185"}, "properties": {"repobilityId": "471e877773e8a607", "scanner": "scanner-primary", "fingerprint": "b69983d2e1c4b887", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-timetable.js"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-f2675f1027f13378", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in js/my-kete-timetable.js:927"}, "properties": {"repobilityId": "e5cfd76f7f148b8c", "scanner": "scanner-primary", "fingerprint": "f2675f1027f13378", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete-timetable.js"}, "region": {"startLine": 927}}}]}, {"ruleId": "scanner-2d1e3f8e7f405d54", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/realtime-pronunciation.js:225"}, "properties": {"repobilityId": "e01a9c5690025baf", "scanner": "scanner-primary", "fingerprint": "2d1e3f8e7f405d54", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/realtime-pronunciation.js"}, "region": {"startLine": 225}}}]}, {"ruleId": "scanner-61f86b616dacddee", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/portfolio-sidebar.js:115"}, "properties": {"repobilityId": "9edd51be409d3b9c", "scanner": "scanner-primary", "fingerprint": "61f86b616dacddee", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/portfolio-sidebar.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-c00e0871a7a3de13", "level": "note", "message": {"text": "Insecure pattern 'document_write' in js/advanced-analytics.js:403"}, "properties": {"repobilityId": "6c0a6fb9285a4697", "scanner": "scanner-primary", "fingerprint": "c00e0871a7a3de13", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-analytics.js"}, "region": {"startLine": 403}}}]}, {"ruleId": "scanner-2e04af4d99a03d38", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-analytics.js:307"}, "properties": {"repobilityId": "b01f0ddcd1112c59", "scanner": "scanner-primary", "fingerprint": "2e04af4d99a03d38", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-analytics.js"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-13022543b715f667", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/advanced-analytics.js:295"}, "properties": {"repobilityId": "fa6532d68907411d", "scanner": "scanner-primary", "fingerprint": "13022543b715f667", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-analytics.js"}, "region": {"startLine": 295}}}]}, {"ruleId": "scanner-4fa103d7aca9295d", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in js/advanced-analytics.js:124"}, "properties": {"repobilityId": "c9e8f7212ce4bc7a", "scanner": "scanner-primary", "fingerprint": "4fa103d7aca9295d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-analytics.js"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-de8786f61b5db634", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in js/session-manager.js:89"}, "properties": {"repobilityId": "bebcd9121db87aa6", "scanner": "scanner-primary", "fingerprint": "de8786f61b5db634", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/session-manager.js"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-8789faabd2d7c5ae", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/kupu-component.js:142"}, "properties": {"repobilityId": "bf39ea9ec86832ef", "scanner": "scanner-primary", "fingerprint": "8789faabd2d7c5ae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/kupu-component.js"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-14f34eb76e2a412f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/password-strength.js:36"}, "properties": {"repobilityId": "8ca0c11dff2a3c16", "scanner": "scanner-primary", "fingerprint": "14f34eb76e2a412f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/password-strength.js"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-186763878f492340", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/my-kete.js:85"}, "properties": {"repobilityId": "3182fd99970aed31", "scanner": "scanner-primary", "fingerprint": "186763878f492340", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/my-kete.js"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-4d52bcce26f212b4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/resource-rating.js:98"}, "properties": {"repobilityId": "56adf136dfb77cc8", "scanner": "scanner-primary", "fingerprint": "4d52bcce26f212b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/resource-rating.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-3c57bf2115f4dd95", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/shared-components.js:94"}, "properties": {"repobilityId": "c54b3cbc8773a11d", "scanner": "scanner-primary", "fingerprint": "3c57bf2115f4dd95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/shared-components.js"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-1a330756a142ed1d", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/shared-components.js:708"}, "properties": {"repobilityId": "c2d5dbc3620bc06f", "scanner": "scanner-primary", "fingerprint": "1a330756a142ed1d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/shared-components.js"}, "region": {"startLine": 708}}}]}, {"ruleId": "scanner-d4e26eaa1a8dd0fa", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/advanced-search.js:274"}, "properties": {"repobilityId": "7c6c47d61e5ffbda", "scanner": "scanner-primary", "fingerprint": "d4e26eaa1a8dd0fa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-search.js"}, "region": {"startLine": 274}}}]}, {"ruleId": "scanner-d00bc227e2d36cd4", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/advanced-search.js:209"}, "properties": {"repobilityId": "d77f43ace78378aa", "scanner": "scanner-primary", "fingerprint": "d00bc227e2d36cd4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/advanced-search.js"}, "region": {"startLine": 209}}}]}, {"ruleId": "scanner-26ef5caa0c401ec6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/wordle-sharing.js:129"}, "properties": {"repobilityId": "417f974a91e2dc90", "scanner": "scanner-primary", "fingerprint": "26ef5caa0c401ec6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/wordle-sharing.js"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-dee02d0bd91884e1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/components/sub-status-banner.js:72"}, "properties": {"repobilityId": "d7bd4066640bdaa2", "scanner": "scanner-primary", "fingerprint": "dee02d0bd91884e1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/components/sub-status-banner.js"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-4a195d6771c8d999", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/assistants/kaitiaki-assistant.js:140"}, "properties": {"repobilityId": "8fd21420f8604672", "scanner": "scanner-primary", "fingerprint": "4a195d6771c8d999", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/assistants/kaitiaki-assistant.js"}, "region": {"startLine": 140}}}]}, {"ruleId": "scanner-8aa55bf1e4834f20", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in js/assistants/kaitiaki-assistant.js:108"}, "properties": {"repobilityId": "2febdc4d98b195ad", "scanner": "scanner-primary", "fingerprint": "8aa55bf1e4834f20", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/assistants/kaitiaki-assistant.js"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-0f07cc3cee3b071d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/math-drills-init.js:29"}, "properties": {"repobilityId": "287a5ceef1765afd", "scanner": "scanner-primary", "fingerprint": "0f07cc3cee3b071d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/math-drills-init.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-339d7ae9805ff3eb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/profile-viewer.js:52"}, "properties": {"repobilityId": "0ddf8ef03421cd5b", "scanner": "scanner-primary", "fingerprint": "339d7ae9805ff3eb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/profile-viewer.js"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-b6af4f187f7d778e", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/timeline-sequencing-init.js:12"}, "properties": {"repobilityId": "8941b66eea29883f", "scanner": "scanner-primary", "fingerprint": "b6af4f187f7d778e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/timeline-sequencing-init.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-92c4de9b2de2c1a5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/assessment-init.js:16"}, "properties": {"repobilityId": "7b1c2d85f5ae1d7a", "scanner": "scanner-primary", "fingerprint": "92c4de9b2de2c1a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/assessment-init.js"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-76d841f8eb370a09", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/lessons-init.js:2"}, "properties": {"repobilityId": "42113c11f5e1d92f", "scanner": "scanner-primary", "fingerprint": "76d841f8eb370a09", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/lessons-init.js"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-1dfb88aa4054c8a4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/my-submissions-init.js:145"}, "properties": {"repobilityId": "495d69f9a05342b9", "scanner": "scanner-primary", "fingerprint": "1dfb88aa4054c8a4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/my-submissions-init.js"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-c5dfc93f21354840", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wananga-init.js:66"}, "properties": {"repobilityId": "3433b71bc12e7a5c", "scanner": "scanner-primary", "fingerprint": "c5dfc93f21354840", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/wananga-init.js"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-bbe12ec0b744e2d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/weekly-lesson-planner-init.js:50"}, "properties": {"repobilityId": "53db314888eefd5a", "scanner": "scanner-primary", "fingerprint": "bbe12ec0b744e2d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/weekly-lesson-planner-init.js"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-367b8e1833b38c31", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/pages/wordfind-generator-init.js:47"}, "properties": {"repobilityId": "5e3d3bedfc0476b7", "scanner": "scanner-primary", "fingerprint": "367b8e1833b38c31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/pages/wordfind-generator-init.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-9dfc7b2b5c6a5933", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/entitlements.js:1009"}, "properties": {"repobilityId": "8da10d2d37bb3010", "scanner": "scanner-primary", "fingerprint": "9dfc7b2b5c6a5933", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/services/entitlements.js"}, "region": {"startLine": 1009}}}]}, {"ruleId": "scanner-e0271d4128c5045c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/toast-manager.js:49"}, "properties": {"repobilityId": "6db2e71600e5daa7", "scanner": "scanner-primary", "fingerprint": "e0271d4128c5045c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/services/toast-manager.js"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-e43c2daf23a5eae2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/bookmark-service.js:98"}, "properties": {"repobilityId": "32d655882085bbcd", "scanner": "scanner-primary", "fingerprint": "e43c2daf23a5eae2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/services/bookmark-service.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-6dbab0571b6c96c0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/studio-enhancer.js:20"}, "properties": {"repobilityId": "3a1caeec376e2933", "scanner": "scanner-primary", "fingerprint": "6dbab0571b6c96c0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/services/studio-enhancer.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-bfbb853602113f3f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/services/agent-hub.js:82"}, "properties": {"repobilityId": "193c6fd629b22cd0", "scanner": "scanner-primary", "fingerprint": "bfbb853602113f3f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/services/agent-hub.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-77225af03b814180", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/multiplayer.js:205"}, "properties": {"repobilityId": "db9f3e708b1aa8bb", "scanner": "scanner-primary", "fingerprint": "77225af03b814180", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/mindmap/multiplayer.js"}, "region": {"startLine": 205}}}]}, {"ruleId": "scanner-fff22d25b7d2d5f3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/engine3d.js:19"}, "properties": {"repobilityId": "03de056daddbb380", "scanner": "scanner-primary", "fingerprint": "fff22d25b7d2d5f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/mindmap/engine3d.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-6fad4b4592e4ccad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in js/mindmap/init.js:91"}, "properties": {"repobilityId": "a50910282f0118c0", "scanner": "scanner-primary", "fingerprint": "6fad4b4592e4ccad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "js/mindmap/init.js"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-56faf7a2ede4ad2d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/pages-postinstall.js:18"}, "properties": {"repobilityId": "c881d88f7b6aedb2", "scanner": "scanner-primary", "fingerprint": "56faf7a2ede4ad2d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pages-postinstall.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-b78eda9c981299d8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-supabase-functions.js:3"}, "properties": {"repobilityId": "f8de645a89fe5ded", "scanner": "scanner-primary", "fingerprint": "b78eda9c981299d8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-supabase-functions.js"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-51da49c92e31dc99", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/eyes.js:33"}, "properties": {"repobilityId": "0096b03cbc17bf23", "scanner": "scanner-primary", "fingerprint": "51da49c92e31dc99", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/eyes.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-9dfde9fbd09a5093", "level": "error", "message": {"text": "Possible secret in scripts/seed-dashboard.js"}, "properties": {"repobilityId": "494fe972779dda57", "scanner": "scanner-primary", "fingerprint": "9dfde9fbd09a5093", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-dashboard.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-9dfde9fbd09a5093", "level": "error", "message": {"text": "Possible secret in scripts/seed-dashboard.js"}, "properties": {"repobilityId": "494fe972779dda57", "scanner": "scanner-primary", "fingerprint": "9dfde9fbd09a5093", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-dashboard.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-879542c476d21403", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-header-consistency.js:9"}, "properties": {"repobilityId": "5993afb8374bb89f", "scanner": "scanner-primary", "fingerprint": "879542c476d21403", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-header-consistency.js"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-5097eba7aa8a7dce", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/report-content-tranche-priority.js:5"}, "properties": {"repobilityId": "6111f03d864d3ad9", "scanner": "scanner-primary", "fingerprint": "5097eba7aa8a7dce", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/report-content-tranche-priority.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-0457695c54e5015f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/set-cf-env-vars.js:103"}, "properties": {"repobilityId": "bb2bb533bbe5111f", "scanner": "scanner-primary", "fingerprint": "0457695c54e5015f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/set-cf-env-vars.js"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-09598ad4b0bb9fb3", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/fix-forum-html.js:236"}, "properties": {"repobilityId": "214d078c60e5e6a8", "scanner": "scanner-primary", "fingerprint": "09598ad4b0bb9fb3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fix-forum-html.js"}, "region": {"startLine": 236}}}]}, {"ruleId": "scanner-75646abb30b1a051", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-lesson-media-embeds.js:5"}, "properties": {"repobilityId": "760eb5601f470b51", "scanner": "scanner-primary", "fingerprint": "75646abb30b1a051", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-lesson-media-embeds.js"}, "region": {"startLine": 5}}}]}, {"ruleId": "scanner-008146fe941aa660", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/trigger-cloudflare-deployment.js:61"}, "properties": {"repobilityId": "6ff789f0f5317e60", "scanner": "scanner-primary", "fingerprint": "008146fe941aa660", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/trigger-cloudflare-deployment.js"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-016a8a78a6a5dbd1", "level": "error", "message": {"text": "Possible secret in scripts/test-generate-lesson-prod.sh"}, "properties": {"repobilityId": "71e176f84f6866e8", "scanner": "scanner-primary", "fingerprint": "016a8a78a6a5dbd1", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-generate-lesson-prod.sh"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-5be9cf535ebc4202", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/job-seeker/approval-ui/index.html:338"}, "properties": {"repobilityId": "3bc18fb6818c0cb2", "scanner": "scanner-primary", "fingerprint": "5be9cf535ebc4202", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/job-seeker/approval-ui/index.html"}, "region": {"startLine": 338}}}]}, {"ruleId": "scanner-ff49172f5016e153", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/job-seeker/approval-ui/serve.py:221"}, "properties": {"repobilityId": "7e4a52aa86a5c79e", "scanner": "scanner-primary", "fingerprint": "ff49172f5016e153", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/job-seeker/approval-ui/serve.py"}, "region": {"startLine": 221}}}]}, {"ruleId": "scanner-429afce5d7fc9575", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in components/zoo-footer.html:216"}, "properties": {"repobilityId": "75b21985e857fbd0", "scanner": "scanner-primary", "fingerprint": "429afce5d7fc9575", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/zoo-footer.html"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-0d86eec3051ac1f5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-iYjVTevk.html:1"}, "properties": {"repobilityId": "1dbe76cdda75daa3", "scanner": "scanner-primary", "fingerprint": "0d86eec3051ac1f5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/badge-system-iYjVTevk.html"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-abd715bbd61adc50", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-CFO4LfNB.html:173"}, "properties": {"repobilityId": "0b021237725fc917", "scanner": "scanner-primary", "fingerprint": "abd715bbd61adc50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/badge-system-CFO4LfNB.html"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-3f4d0b8abfc6a6c4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/badge-system-DoxgR7cw.html:173"}, "properties": {"repobilityId": "0e4dc7383b259185", "scanner": "scanner-primary", "fingerprint": "3f4d0b8abfc6a6c4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/badge-system-DoxgR7cw.html"}, "region": {"startLine": 173}}}]}, {"ruleId": "scanner-d48d56fa93d1a93c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/te-reo-maths-glossary-bilingual-alpha.html:577"}, "properties": {"repobilityId": "d8a9f5cd9c4faaa6", "scanner": "scanner-primary", "fingerprint": "d48d56fa93d1a93c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/handouts/te-reo-maths-glossary-bilingual-alpha.html"}, "region": {"startLine": 577}}}]}, {"ruleId": "scanner-cd1c764535f56946", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/index.html:38"}, "properties": {"repobilityId": "cfcb9a993f1ccd34", "scanner": "scanner-primary", "fingerprint": "cd1c764535f56946", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/handouts/index.html"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-0639da4c0de037ec", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/probability-and-chance-in-m\u0101ori-games.html:275"}, "properties": {"repobilityId": "22dd45d53280734f", "scanner": "scanner-primary", "fingerprint": "0639da4c0de037ec", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/handouts/probability-and-chance-in-m\u0101ori-games.html"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-09432a3732b98cc1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in assets/handouts/haka-comprehension-handout.html:342"}, "properties": {"repobilityId": "f1b68f770fea4b78", "scanner": "scanner-primary", "fingerprint": "09432a3732b98cc1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "assets/handouts/haka-comprehension-handout.html"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-1c8c555f8cc8ff93", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/datasheet.html:624"}, "properties": {"repobilityId": "da52b8f1eed0e8e2", "scanner": "scanner-primary", "fingerprint": "1c8c555f8cc8ff93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sovereign-lattice/datasheet.html"}, "region": {"startLine": 624}}}]}, {"ruleId": "scanner-e22c48264313a4bb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/lattice-explorer/index.html:683"}, "properties": {"repobilityId": "e7ea774f27cb84f0", "scanner": "scanner-primary", "fingerprint": "e22c48264313a4bb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sovereign-lattice/lattice-explorer/index.html"}, "region": {"startLine": 683}}}]}, {"ruleId": "scanner-83f529b1743b1788", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/cross-lane-correlation/index.html:699"}, "properties": {"repobilityId": "c69496a8fce9b714", "scanner": "scanner-primary", "fingerprint": "83f529b1743b1788", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sovereign-lattice/cross-lane-correlation/index.html"}, "region": {"startLine": 699}}}]}, {"ruleId": "scanner-98682913537ef374", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/graph-ring-traversal/index.html:912"}, "properties": {"repobilityId": "b5dcef7474a9791a", "scanner": "scanner-primary", "fingerprint": "98682913537ef374", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sovereign-lattice/graph-ring-traversal/index.html"}, "region": {"startLine": 912}}}]}, {"ruleId": "scanner-fa12ced1e0ddf234", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in sovereign-lattice/site-density-profile/index.html:946"}, "properties": {"repobilityId": "21698e74a3914dfa", "scanner": "scanner-primary", "fingerprint": "fa12ced1e0ddf234", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "sovereign-lattice/site-density-profile/index.html"}, "region": {"startLine": 946}}}]}, {"ruleId": "scanner-aacb68aa6c20e16c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/admin.html:408"}, "properties": {"repobilityId": "66def9f175903da3", "scanner": "scanner-primary", "fingerprint": "aacb68aa6c20e16c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/admin.html"}, "region": {"startLine": 408}}}]}, {"ruleId": "scanner-10461b9552309256", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/timeline.html:376"}, "properties": {"repobilityId": "808476371f724407", "scanner": "scanner-primary", "fingerprint": "10461b9552309256", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pedagogy/timeline.html"}, "region": {"startLine": 376}}}]}, {"ruleId": "scanner-1c5f5439282e1a0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in pedagogy/concepts/culturally-responsive-pedagogy.html:257"}, "properties": {"repobilityId": "eec64028600306db", "scanner": "scanner-primary", "fingerprint": "1c5f5439282e1a0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "pedagogy/concepts/culturally-responsive-pedagogy.html"}, "region": {"startLine": 257}}}]}, {"ruleId": "scanner-b500d885bef48a40", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in mcp-server/server.legacy.js:32"}, "properties": {"repobilityId": "bd8e60925d25fb63", "scanner": "scanner-primary", "fingerprint": "b500d885bef48a40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp-server/server.legacy.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-66ce763ed6c6bcd0", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in mcp-server/index.js:1957"}, "properties": {"repobilityId": "5955d247d9e57f31", "scanner": "scanner-primary", "fingerprint": "66ce763ed6c6bcd0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "mcp-server/index.js"}, "region": {"startLine": 1957}}}]}, {"ruleId": "scanner-7bbeffd46e0fc103", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/requests.html:499"}, "properties": {"repobilityId": "27fc6b939d15cf8d", "scanner": "scanner-primary", "fingerprint": "7bbeffd46e0fc103", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/requests.html"}, "region": {"startLine": 499}}}]}, {"ruleId": "scanner-0203e151142f514f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/training.html:445"}, "properties": {"repobilityId": "a301cbf289f80847", "scanner": "scanner-primary", "fingerprint": "0203e151142f514f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/training.html"}, "region": {"startLine": 445}}}]}, {"ruleId": "scanner-84fa18687b487b41", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/case-file.html:501"}, "properties": {"repobilityId": "02ad34a5e9ac73fc", "scanner": "scanner-primary", "fingerprint": "84fa18687b487b41", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/case-file.html"}, "region": {"startLine": 501}}}]}, {"ruleId": "scanner-0a3f6adb9326d5f2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/grievance.html:645"}, "properties": {"repobilityId": "7bc07178ac0b3a17", "scanner": "scanner-primary", "fingerprint": "0a3f6adb9326d5f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/grievance.html"}, "region": {"startLine": 645}}}]}, {"ruleId": "scanner-ca9891153aa78da0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/holidays.html:556"}, "properties": {"repobilityId": "f610c08d8b2dec73", "scanner": "scanner-primary", "fingerprint": "ca9891153aa78da0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/holidays.html"}, "region": {"startLine": 556}}}]}, {"ruleId": "scanner-d4b590a176b7d393", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/sick-leave.html:376"}, "properties": {"repobilityId": "cd1b594e0fb2e2ed", "scanner": "scanner-primary", "fingerprint": "d4b590a176b7d393", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/sick-leave.html"}, "region": {"startLine": 376}}}]}, {"ruleId": "scanner-1910bbbf02f51e71", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in kaimahi/sick-leave.html:401"}, "properties": {"repobilityId": "647bbde4359f5697", "scanner": "scanner-primary", "fingerprint": "1910bbbf02f51e71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/sick-leave.html"}, "region": {"startLine": 401}}}]}, {"ruleId": "scanner-b9070aa9b7e083dc", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/deductions.html:345"}, "properties": {"repobilityId": "9a6543636c61ea7f", "scanner": "scanner-primary", "fingerprint": "b9070aa9b7e083dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/deductions.html"}, "region": {"startLine": 345}}}]}, {"ruleId": "scanner-4e54155ac617ca0b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/resources.html:729"}, "properties": {"repobilityId": "6b6b31ab37fc35ad", "scanner": "scanner-primary", "fingerprint": "4e54155ac617ca0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/resources.html"}, "region": {"startLine": 729}}}]}, {"ruleId": "scanner-282dd36186bb2c9a", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in kaimahi/resources.html:650"}, "properties": {"repobilityId": "5702f0d10324dd57", "scanner": "scanner-primary", "fingerprint": "282dd36186bb2c9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/resources.html"}, "region": {"startLine": 650}}}]}, {"ruleId": "scanner-b7189be77d1649b2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/workers.html:298"}, "properties": {"repobilityId": "928f8af87874c901", "scanner": "scanner-primary", "fingerprint": "b7189be77d1649b2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/workers.html"}, "region": {"startLine": 298}}}]}, {"ruleId": "scanner-4eca4470aa6d398d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/calculator.html:789"}, "properties": {"repobilityId": "ff0fdfd9ad4c4061", "scanner": "scanner-primary", "fingerprint": "4eca4470aa6d398d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/calculator.html"}, "region": {"startLine": 789}}}]}, {"ruleId": "scanner-1af2bd51b6746153", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/union.html:381"}, "properties": {"repobilityId": "062946667609fb6b", "scanner": "scanner-primary", "fingerprint": "1af2bd51b6746153", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/union.html"}, "region": {"startLine": 381}}}]}, {"ruleId": "scanner-44e80bdff0e51069", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/agreement.html:431"}, "properties": {"repobilityId": "440eb034d3d2e923", "scanner": "scanner-primary", "fingerprint": "44e80bdff0e51069", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/agreement.html"}, "region": {"startLine": 431}}}]}, {"ruleId": "scanner-bb7cc8e7ba9ab5ef", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-admin.js:39"}, "properties": {"repobilityId": "956b70c3bdf44929", "scanner": "scanner-primary", "fingerprint": "bb7cc8e7ba9ab5ef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-admin.js"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-431d29c3ed5d22b4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-wage-hub.js:136"}, "properties": {"repobilityId": "00d65fb4caac04e0", "scanner": "scanner-primary", "fingerprint": "431d29c3ed5d22b4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-wage-hub.js"}, "region": {"startLine": 136}}}]}, {"ruleId": "scanner-7b81cbccefb308ea", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-conduct-safety.js:322"}, "properties": {"repobilityId": "57c0ea11b1a65207", "scanner": "scanner-primary", "fingerprint": "7b81cbccefb308ea", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-conduct-safety.js"}, "region": {"startLine": 322}}}]}, {"ruleId": "scanner-617e96ada6295f84", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:194"}, "properties": {"repobilityId": "a0cb6f0c4587e1b4", "scanner": "scanner-primary", "fingerprint": "617e96ada6295f84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-dashboard.js"}, "region": {"startLine": 194}}}]}, {"ruleId": "scanner-31350c6830034c53", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in kaimahi/js/kaimahi-dashboard.js:951"}, "properties": {"repobilityId": "bf65eb2c3ca1db8e", "scanner": "scanner-primary", "fingerprint": "31350c6830034c53", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-dashboard.js"}, "region": {"startLine": 951}}}]}, {"ruleId": "scanner-2521649839f11b37", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in kaimahi/js/kaimahi-coverage.js:81"}, "properties": {"repobilityId": "335729ce6c7d3094", "scanner": "scanner-primary", "fingerprint": "2521649839f11b37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "kaimahi/js/kaimahi-coverage.js"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-2213465b633f375c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in teachers/dashboard.html:185"}, "properties": {"repobilityId": "ab1d3f6d0d486a4d", "scanner": "scanner-primary", "fingerprint": "2213465b633f375c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "teachers/dashboard.html"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-12d496a4420fc6c6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/motivation-engagement-discussion.html:829"}, "properties": {"repobilityId": "382d0b437fe2533c", "scanner": "scanner-primary", "fingerprint": "12d496a4420fc6c6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/motivation-engagement-discussion.html"}, "region": {"startLine": 829}}}]}, {"ruleId": "scanner-5b203d0d84bf9208", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part1-engagement.html:665"}, "properties": {"repobilityId": "66c238380e28851a", "scanner": "scanner-primary", "fingerprint": "5b203d0d84bf9208", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/cia-part1-engagement.html"}, "region": {"startLine": 665}}}]}, {"ruleId": "scanner-e3420846c69c2d8c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/impact.html:155"}, "properties": {"repobilityId": "c0a92349c158b319", "scanner": "scanner-primary", "fingerprint": "e3420846c69c2d8c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/impact.html"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-565dd3d2222c1e70", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cald-lecture-reflection.html:601"}, "properties": {"repobilityId": "813516b8ee19a3ef", "scanner": "scanner-primary", "fingerprint": "565dd3d2222c1e70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/cald-lecture-reflection.html"}, "region": {"startLine": 601}}}]}, {"ruleId": "scanner-be9d3dbb024debd2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/observations.html:156"}, "properties": {"repobilityId": "76e054ee70746827", "scanner": "scanner-primary", "fingerprint": "be9d3dbb024debd2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/observations.html"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-6a14c3684ec4f0ef", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/literacy-lecture-reflection.html:936"}, "properties": {"repobilityId": "07c61aca12983af2", "scanner": "scanner-primary", "fingerprint": "6a14c3684ec4f0ef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/literacy-lecture-reflection.html"}, "region": {"startLine": 936}}}]}, {"ruleId": "scanner-e2921eafadc33322", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/index.html:442"}, "properties": {"repobilityId": "67be0743bd6042e8", "scanner": "scanner-primary", "fingerprint": "e2921eafadc33322", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/index.html"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-ea692c0a8c29b2ba", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/pasifika-lecture-reflection.html:545"}, "properties": {"repobilityId": "0f2030c863736f1f", "scanner": "scanner-primary", "fingerprint": "ea692c0a8c29b2ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/pasifika-lecture-reflection.html"}, "region": {"startLine": 545}}}]}, {"ruleId": "scanner-964c3c93715111d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/collegial-discussion-613.html:517"}, "properties": {"repobilityId": "72a6c0e97df51269", "scanner": "scanner-primary", "fingerprint": "964c3c93715111d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/collegial-discussion-613.html"}, "region": {"startLine": 517}}}]}, {"ruleId": "scanner-053c6797f1ad91a8", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/goals.html:918"}, "properties": {"repobilityId": "d1eebdc81c16b311", "scanner": "scanner-primary", "fingerprint": "053c6797f1ad91a8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/goals.html"}, "region": {"startLine": 918}}}]}, {"ruleId": "scanner-98bcad3f889485f7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/learning.html:309"}, "properties": {"repobilityId": "18c1099aef7fcca8", "scanner": "scanner-primary", "fingerprint": "98bcad3f889485f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/learning.html"}, "region": {"startLine": 309}}}]}, {"ruleId": "scanner-2cad86f1694cc8bd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/class-newsletters-691.html:233"}, "properties": {"repobilityId": "022e024c6d7bd7d0", "scanner": "scanner-primary", "fingerprint": "2cad86f1694cc8bd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/class-newsletters-691.html"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-30a191f5ff456bfb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/evidence.html:439"}, "properties": {"repobilityId": "8e50e953ab59e996", "scanner": "scanner-primary", "fingerprint": "30a191f5ff456bfb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/evidence.html"}, "region": {"startLine": 439}}}]}, {"ruleId": "scanner-2c0fbe3ec9123c29", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/cia-part2-engagement.html:325"}, "properties": {"repobilityId": "a923c0090d08b98d", "scanner": "scanner-primary", "fingerprint": "2c0fbe3ec9123c29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/cia-part2-engagement.html"}, "region": {"startLine": 325}}}]}, {"ruleId": "scanner-974e98aa6c78645f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/historical-significance-reflection.html:572"}, "properties": {"repobilityId": "15c84c67b9bb2739", "scanner": "scanner-primary", "fingerprint": "974e98aa6c78645f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/historical-significance-reflection.html"}, "region": {"startLine": 572}}}]}, {"ruleId": "scanner-c9a663b992ad8a7a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in portfolio/film-analysis-two-cars.html:657"}, "properties": {"repobilityId": "9a51517ed0c1ca3e", "scanner": "scanner-primary", "fingerprint": "c9a663b992ad8a7a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "portfolio/film-analysis-two-cars.html"}, "region": {"startLine": 657}}}]}, {"ruleId": "scanner-71f3c5e76949f11c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in supabase/functions/send-welcome-email/index.ts:95"}, "properties": {"repobilityId": "c48a904b3dfb7049", "scanner": "scanner-primary", "fingerprint": "71f3c5e76949f11c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "supabase/functions/send-welcome-email/index.ts"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-18d86848813bf0ef", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/admin-checkin.html:342"}, "properties": {"repobilityId": "d339c010dd03996c", "scanner": "scanner-primary", "fingerprint": "18d86848813bf0ef", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/admin-checkin.html"}, "region": {"startLine": 342}}}]}, {"ruleId": "scanner-8f8f0e13216b1aa5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/dashboard.html:443"}, "properties": {"repobilityId": "b4354944b26ce31f", "scanner": "scanner-primary", "fingerprint": "8f8f0e13216b1aa5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/dashboard.html"}, "region": {"startLine": 443}}}]}, {"ruleId": "scanner-7a597af1c595852f", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/index.html:1541"}, "properties": {"repobilityId": "3ab871544ed8c5e6", "scanner": "scanner-primary", "fingerprint": "7a597af1c595852f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/index.html"}, "region": {"startLine": 1541}}}]}, {"ruleId": "scanner-124f15aeb5580d2b", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/redeem.html:337"}, "properties": {"repobilityId": "1b5d645c1ea6b6e7", "scanner": "scanner-primary", "fingerprint": "124f15aeb5580d2b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/redeem.html"}, "region": {"startLine": 337}}}]}, {"ruleId": "scanner-c28da336bfbc136a", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in ai-workshop/redeem.html:397"}, "properties": {"repobilityId": "981539245c03b736", "scanner": "scanner-primary", "fingerprint": "c28da336bfbc136a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/redeem.html"}, "region": {"startLine": 397}}}]}, {"ruleId": "scanner-72e790bb628d52cd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/organiser.html:425"}, "properties": {"repobilityId": "0a1c1c78d9dab7cb", "scanner": "scanner-primary", "fingerprint": "72e790bb628d52cd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/organiser.html"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-a8c48b94699a7021", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/booking-success.html:243"}, "properties": {"repobilityId": "1eaffdcbb96971f4", "scanner": "scanner-primary", "fingerprint": "a8c48b94699a7021", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/booking-success.html"}, "region": {"startLine": 243}}}]}, {"ruleId": "scanner-9924c125f3830aaf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/alumni.html:531"}, "properties": {"repobilityId": "4494a32bc2b60aba", "scanner": "scanner-primary", "fingerprint": "9924c125f3830aaf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/alumni.html"}, "region": {"startLine": 531}}}]}, {"ruleId": "scanner-dc35ae217b7f5de9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/04-terminal.html:1563"}, "properties": {"repobilityId": "b5538f9ab30a3759", "scanner": "scanner-primary", "fingerprint": "dc35ae217b7f5de9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/modules/04-terminal.html"}, "region": {"startLine": 1563}}}]}, {"ruleId": "scanner-2eebd06375ea9df7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/05-build-anything.html:2023"}, "properties": {"repobilityId": "fe308db5f1be4a11", "scanner": "scanner-primary", "fingerprint": "2eebd06375ea9df7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/modules/05-build-anything.html"}, "region": {"startLine": 2023}}}]}, {"ruleId": "scanner-9b7abe225dbf7d66", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in ai-workshop/modules/health/index.html:220"}, "properties": {"repobilityId": "899feafaec303020", "scanner": "scanner-primary", "fingerprint": "9b7abe225dbf7d66", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "ai-workshop/modules/health/index.html"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-6e2819f0037186b5", "level": "error", "message": {"text": "Possible secret in infrastructure/scripts/archive/direct_column_add.py"}, "properties": {"repobilityId": "a9b7e58306d995e4", "scanner": "scanner-primary", "fingerprint": "6e2819f0037186b5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infrastructure/scripts/archive/direct_column_add.py"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-e2e239e5288576a9", "level": "warning", "message": {"text": "Insecure pattern 'subprocess_shell_true' in infrastructure/scripts/archive/direct_column_add.py:59"}, "properties": {"repobilityId": "7d553a7a0b03c678", "scanner": "scanner-primary", "fingerprint": "e2e239e5288576a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "subprocess_shell_true"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "infrastructure/scripts/archive/direct_column_add.py"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-a4506584210c0c59", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/wananga.html:447"}, "properties": {"repobilityId": "f2793b6b22ccc5ca", "scanner": "scanner-primary", "fingerprint": "a4506584210c0c59", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/wananga.html"}, "region": {"startLine": 447}}}]}, {"ruleId": "scanner-8daf12717f872cb4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in knowledge/learning-areas-status.html:316"}, "properties": {"repobilityId": "69fadb97539600bc", "scanner": "scanner-primary", "fingerprint": "8daf12717f872cb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "knowledge/learning-areas-status.html"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bee6b8956e03198c", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9cc9e038ba93ed39", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "253c1285516d15dc", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bee6b8956e03198c", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d1c807dcf85dd93", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d1c807dcf85dd93", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "569d2c39dd569e19", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bee6b8956e03198c", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d825d5f415972e3", "level": "note", "message": {"text": "Very large file: js/browse-page.js (2582 lines)"}, "properties": {"repobilityId": "ce1980fb01f6c437", "scanner": "scanner-primary", "fingerprint": "2d825d5f415972e3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-07a4a99db8fc92b4", "level": "note", "message": {"text": "Very large file: js/creation-studio.js (2079 lines)"}, "properties": {"repobilityId": "2496d392dfd2be88", "scanner": "scanner-primary", "fingerprint": "07a4a99db8fc92b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f9fc2c9b28bc709c", "level": "note", "message": {"text": "Very large file: js/curriculum-viewer.js (5173 lines)"}, "properties": {"repobilityId": "455f0815dc3171ba", "scanner": "scanner-primary", "fingerprint": "f9fc2c9b28bc709c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-38cdae520c8d47ef", "level": "note", "message": {"text": "Very large file: js/resource-service.js (1766 lines)"}, "properties": {"repobilityId": "65a90cbc44ac8fa5", "scanner": "scanner-primary", "fingerprint": "38cdae520c8d47ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-01bdb62a6279d17c", "level": "note", "message": {"text": "Very large file: js/maori-dictionary-api.js (1812 lines)"}, "properties": {"repobilityId": "27bbca472c788965", "scanner": "scanner-primary", "fingerprint": "01bdb62a6279d17c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c9c5451c1a2aa102", "level": "note", "message": {"text": "Very large file: js/shared-sidebar.js (1182 lines)"}, "properties": {"repobilityId": "1fe47dcfacdfc769", "scanner": "scanner-primary", "fingerprint": "c9c5451c1a2aa102", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea96dbc39a62edfc", "level": "note", "message": {"text": "Very large file: js/my-kete-page.js (1386 lines)"}, "properties": {"repobilityId": "335ffde055546023", "scanner": "scanner-primary", "fingerprint": "ea96dbc39a62edfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-84258af8d9755449", "level": "note", "message": {"text": "Very large file: js/youtube-api.js (1207 lines)"}, "properties": {"repobilityId": "3fe0068ad8240661", "scanner": "scanner-primary", "fingerprint": "84258af8d9755449", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c6c59d7bcb23dd1c", "level": "note", "message": {"text": "Very large file: js/my-kete-timetable.js (1117 lines)"}, "properties": {"repobilityId": "adb9b7bbd911acac", "scanner": "scanner-primary", "fingerprint": "c6c59d7bcb23dd1c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe9a3353e124e060", "level": "note", "message": {"text": "Very large file: scripts/index-architecture-to-graphrag.py (1521 lines)"}, "properties": {"repobilityId": "7c88f9c45814420b", "scanner": "scanner-primary", "fingerprint": "fe9a3353e124e060", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-02cbeae5a557742f", "level": "note", "message": {"text": "Very large file: scripts/fix_23_failing_handouts.py (1192 lines)"}, "properties": {"repobilityId": "dd6bfd7caeed50c6", "scanner": "scanner-primary", "fingerprint": "02cbeae5a557742f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cb3c85952d9d72b6", "level": "note", "message": {"text": "Very large file: mcp-server/index.js (2109 lines)"}, "properties": {"repobilityId": "d783cdbf6dc79d57", "scanner": "scanner-primary", "fingerprint": "cb3c85952d9d72b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82a03176ab67ad54", "level": "note", "message": {"text": "Very large file: kaimahi/js/kaimahi-dashboard.js (1341 lines)"}, "properties": {"repobilityId": "7aa7c10efbaa8cdd", "scanner": "scanner-primary", "fingerprint": "82a03176ab67ad54", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ef4ade419b0661fa", "level": "note", "message": {"text": "Very large file: supabase/functions/graphrag-search/index.ts (1707 lines)"}, "properties": {"repobilityId": "0a7891b20ff0606d", "scanner": "scanner-primary", "fingerprint": "ef4ade419b0661fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea3b5e389d8c9c0f", "level": "note", "message": {"text": "Low test-to-source ratio"}, "properties": {"repobilityId": "ef7b2552cc00a375", "scanner": "scanner-primary", "fingerprint": "ea3b5e389d8c9c0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["tests"]}}, {"ruleId": "scanner-34e40a81476a1c25", "level": "note", "message": {"text": "61 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "34e40a81476a1c25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "5cc59bf3031bddab", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-58f69ceba8fc9aab", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: docker/te-toi/package.json"}, "properties": {"repobilityId": "d76fda3ef5157d88", "scanner": "scanner-primary", "fingerprint": "58f69ceba8fc9aab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-toi/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3036d70d2146842b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: scripts/package.json"}, "properties": {"repobilityId": "3a2a86cb93b8e276", "scanner": "scanner-primary", "fingerprint": "3036d70d2146842b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "bea1a61ba625be20", "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": "fa995c42f91c4e70", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "ce2c883e1c1d32a1", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "3f3fcccc5374a5cc", "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": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "cf582ec2418220af", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "a1daf509b7d7e360", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "7234f6f6d9a9c704", "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": "26b4abbc23317e16", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-cc55229a7a3c078d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .mcp.json"}, "properties": {"repobilityId": "51942fb3d5b8b5b4", "scanner": "scanner-primary", "fingerprint": "cc55229a7a3c078d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "mcp_config"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".mcp.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-67ab2d2aae3deb02", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-requirements.md"}, "properties": {"repobilityId": "e25b6015ec87a7a0", "scanner": "scanner-primary", "fingerprint": "67ab2d2aae3deb02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/kfc/spec-requirements.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc75cfd7a677c8fb", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-impl.md"}, "properties": {"repobilityId": "14a105e1083d4c93", "scanner": "scanner-primary", "fingerprint": "fc75cfd7a677c8fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/kfc/spec-impl.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d070e155760b6c5", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/kfc/spec-system-prompt-loader.md"}, "properties": {"repobilityId": "d718abe67afa9597", "scanner": "scanner-primary", "fingerprint": "2d070e155760b6c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/kfc/spec-system-prompt-loader.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ea5150747628e84", "level": "none", "message": {"text": "Commented-code block (7 lines) in sw.js:143"}, "properties": {"repobilityId": "a4165a34217c3c35", "scanner": "scanner-primary", "fingerprint": "6ea5150747628e84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ba8ee3ef4b01063", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 docker/kahirangi/app.py:205"}, "properties": {"repobilityId": "7b1933d94026ed87", "scanner": "scanner-primary", "fingerprint": "1ba8ee3ef4b01063", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-784a4239dc108535", "level": "error", "message": {"text": "Blocking `requests.get(...)` inside `async def health_check` \u2014 docker/kahirangi/app.py:258"}, "properties": {"repobilityId": "9b6060afb101c0e3", "scanner": "scanner-primary", "fingerprint": "784a4239dc108535", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/app.py"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-40bfbe32f533a3b9", "level": "none", "message": {"text": "Commented-code block (5 lines) in docker/te-mahara/worker.py:78"}, "properties": {"repobilityId": "b1e7db30bb8c46f0", "scanner": "scanner-primary", "fingerprint": "40bfbe32f533a3b9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf9d966f63e04ca9", "level": "none", "message": {"text": "Commented-code block (6 lines) in docker/te-aronui/test_rlm_e2e.py:254"}, "properties": {"repobilityId": "97b0bb4b914f320e", "scanner": "scanner-primary", "fingerprint": "bf9d966f63e04ca9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25f220bdfc2a2e92", "level": "none", "message": {"text": "Commented-code block (5 lines) in docker/te-aronui/test_async_rlm.py:46"}, "properties": {"repobilityId": "12adb3b3b36588d2", "scanner": "scanner-primary", "fingerprint": "25f220bdfc2a2e92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b453d05e9c4a96c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in docker/te-aronui/test_overlap.py:16"}, "properties": {"repobilityId": "5f69dd4b82a3f300", "scanner": "scanner-primary", "fingerprint": "b453d05e9c4a96c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-041d50cc79938539", "level": "error", "message": {"text": "Blocking `time.sleep(...)` inside `async def main_loop` \u2014 docker/te-aronui/rlm_worker.py:119"}, "properties": {"repobilityId": "df6cbdcbd54d3c9b", "scanner": "scanner-primary", "fingerprint": "041d50cc79938539", "layer": "quality", "severity": "high", "confidence": 1.0, "tags": ["integrity", "sync-io-in-async", "performance"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_worker.py"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-192656a9b1e928a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/_middleware.js:173"}, "properties": {"repobilityId": "6b8f0a2cd3989d0a", "scanner": "scanner-primary", "fingerprint": "192656a9b1e928a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4093625387805e32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/api/auth-google-exchange.js:128"}, "properties": {"repobilityId": "61b34893f1b0a9b0", "scanner": "scanner-primary", "fingerprint": "4093625387805e32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-314962fcb123816f", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_search_v2` in tests/verify-graphrag-rpc.js:44"}, "properties": {"repobilityId": "4d50f6fdd4e14c65", "scanner": "scanner-primary", "fingerprint": "314962fcb123816f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c392735d2e9165c", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_function_fixes.py:4"}, "properties": {"repobilityId": "d633e51cb478a278", "scanner": "scanner-primary", "fingerprint": "4c392735d2e9165c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cf6a26a9940d6f2e", "level": "note", "message": {"text": "Legacy-named symbol `is_backup` in tests/integration/test_resource_links_simple.py:125"}, "properties": {"repobilityId": "5cc499803da896a1", "scanner": "scanner-primary", "fingerprint": "cf6a26a9940d6f2e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8596a4c2649db007", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_api.py:12"}, "properties": {"repobilityId": "86c0f18f06c5ecee", "scanner": "scanner-primary", "fingerprint": "8596a4c2649db007", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c58538aea29d5a1d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_browser_simulation.py:39"}, "properties": {"repobilityId": "ee2c423daa1cb876", "scanner": "scanner-primary", "fingerprint": "c58538aea29d5a1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-29e45fea51bfe462", "level": "note", "message": {"text": "Legacy-named symbol `graphrag_query_v2` in tests/integration/test_graphrag_tools.py:25"}, "properties": {"repobilityId": "0048e67ac3d72071", "scanner": "scanner-primary", "fingerprint": "29e45fea51bfe462", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-99fed7a43748af5f", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_enhanced_api.py:12"}, "properties": {"repobilityId": "9ba41e5e3f32201f", "scanner": "scanner-primary", "fingerprint": "99fed7a43748af5f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d23e838e597ebe3", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_viewer_functionality.py:22"}, "properties": {"repobilityId": "46dfd483543ef0fa", "scanner": "scanner-primary", "fingerprint": "8d23e838e597ebe3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c9509d357226da33", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_search_v2` in tests/integration/test_new_function.py:6"}, "properties": {"repobilityId": "d2e910ffe84c9fdc", "scanner": "scanner-primary", "fingerprint": "c9509d357226da33", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7d2645a667a822d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_simple_query.py:29"}, "properties": {"repobilityId": "0f5805b8517eaf20", "scanner": "scanner-primary", "fingerprint": "c7d2645a667a822d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4b58974cf0aa09cf", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/integration/test_curriculum_function.py:25"}, "properties": {"repobilityId": "e84a6f4b66073245", "scanner": "scanner-primary", "fingerprint": "4b58974cf0aa09cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e55a0c4361e63bf4", "level": "note", "message": {"text": "Legacy-named symbol `unit_copy` in tests/unit/test_sovereign_graphrag_metadata.py:247"}, "properties": {"repobilityId": "ea4d1b39855a135d", "scanner": "scanner-primary", "fingerprint": "e55a0c4361e63bf4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c3bab5fcbba9f46", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in tests/unit/test_graphrag.py:15"}, "properties": {"repobilityId": "ed0948b79af92323", "scanner": "scanner-primary", "fingerprint": "1c3bab5fcbba9f46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cf823e80bc95b9a1", "level": "note", "message": {"text": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/account-settings.spec.ts:87"}, "properties": {"repobilityId": "fdb76e2682b747b0", "scanner": "scanner-primary", "fingerprint": "cf823e80bc95b9a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c39e666a3f238809", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/playwright/auth-oauth.spec.ts:163"}, "properties": {"repobilityId": "3a73652e32159a0e", "scanner": "scanner-primary", "fingerprint": "c39e666a3f238809", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1363ee68819c81ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/playwright/student-portal.spec.ts:58"}, "properties": {"repobilityId": "42e23e3dcb5bd10f", "scanner": "scanner-primary", "fingerprint": "1363ee68819c81ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9949ae8af374bb46", "level": "note", "message": {"text": "Legacy-named symbol `tka_creation_recent_exports_v1` in tests/playwright/creation-studio.spec.ts:108"}, "properties": {"repobilityId": "23dfe932b730ea42", "scanner": "scanner-primary", "fingerprint": "9949ae8af374bb46", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3916cc0f00ea3aeb", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/playwright/auth-gates.spec.ts:31"}, "properties": {"repobilityId": "f46b86a2e9de4df2", "scanner": "scanner-primary", "fingerprint": "3916cc0f00ea3aeb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48af6ea9fb31cd9a", "level": "note", "message": {"text": "Legacy-named symbol `tka_wananga_history_v1` in tests/playwright/new-features.spec.ts:137"}, "properties": {"repobilityId": "5b4458380152ed53", "scanner": "scanner-primary", "fingerprint": "48af6ea9fb31cd9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a262d21e30529585", "level": "note", "message": {"text": "Legacy-named symbol `tka_workflow_context_v1` in tests/playwright/product-readiness.spec.ts:254"}, "properties": {"repobilityId": "6b0a6cc3b8463076", "scanner": "scanner-primary", "fingerprint": "a262d21e30529585", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3e80847d97af5e26", "level": "none", "message": {"text": "Commented-code block (5 lines) in _personal/sovereign-lattice/content/tools/winding_number_audit.py:78"}, "properties": {"repobilityId": "84ef2b3f2b6b3032", "scanner": "scanner-primary", "fingerprint": "3e80847d97af5e26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bae0895bc0b836d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/stripe-checkout.js:103"}, "properties": {"repobilityId": "e28338a5b492a2e9", "scanner": "scanner-primary", "fingerprint": "bae0895bc0b836d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae0e914ef58a95c6", "level": "note", "message": {"text": "Legacy-named symbol `tka_creation_recent_exports_v1` in js/creation-studio.js:30"}, "properties": {"repobilityId": "92bb500867c10dea", "scanner": "scanner-primary", "fingerprint": "ae0e914ef58a95c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-62f40d4c92c210d8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/creation-studio.js:1658"}, "properties": {"repobilityId": "265eabf3184d6770", "scanner": "scanner-primary", "fingerprint": "62f40d4c92c210d8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe8b9bcf4b2dc315", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in js/pronunciation-config.js:67"}, "properties": {"repobilityId": "35e53da144dacb47", "scanner": "scanner-primary", "fingerprint": "fe8b9bcf4b2dc315", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9063c524f68e9c62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/pronunciation-config.js:317"}, "properties": {"repobilityId": "baeaff61e9d9be3b", "scanner": "scanner-primary", "fingerprint": "9063c524f68e9c62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5f0aedf470a532d", "level": "note", "message": {"text": "Legacy-named symbol `resource_permalink_copy` in js/save-resource.js:284"}, "properties": {"repobilityId": "7e577bb1e9aed10a", "scanner": "scanner-primary", "fingerprint": "b5f0aedf470a532d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7aca0f483582e8c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/teacher-dashboard.js:309"}, "properties": {"repobilityId": "e45bd523e21fb3bf", "scanner": "scanner-primary", "fingerprint": "7aca0f483582e8c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bf38165a07fb9b36", "level": "none", "message": {"text": "Commented-code block (6 lines) in js/site-gate.js:63"}, "properties": {"repobilityId": "417302eee35c1487", "scanner": "scanner-primary", "fingerprint": "bf38165a07fb9b36", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f1f90ef9cdec7d6", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in js/curriculum-viewer.js:192"}, "properties": {"repobilityId": "8100136849b23a49", "scanner": "scanner-primary", "fingerprint": "5f1f90ef9cdec7d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2cd1c10ffd681523", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-promotion.js:75"}, "properties": {"repobilityId": "e69cd71d53f046d8", "scanner": "scanner-primary", "fingerprint": "2cd1c10ffd681523", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-078e08137a0a37cc", "level": "none", "message": {"text": "Commented-code block (5 lines) in js/workshop-core.js:171"}, "properties": {"repobilityId": "9df8a710a3f6a30e", "scanner": "scanner-primary", "fingerprint": "078e08137a0a37cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf7ccae5900b6b08", "level": "none", "message": {"text": "Commented-code block (5 lines) in js/quantum-adaptive-engine.js:673"}, "properties": {"repobilityId": "ac8e56b85218f526", "scanner": "scanner-primary", "fingerprint": "bf7ccae5900b6b08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dc6c419bd7e0ef2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/student-dashboard.js:222"}, "properties": {"repobilityId": "7d6591943af98aab", "scanner": "scanner-primary", "fingerprint": "7dc6c419bd7e0ef2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-17ad85a620425503", "level": "note", "message": {"text": "Legacy-named symbol `getCountLegacy` in js/curriculum-api.js:373"}, "properties": {"repobilityId": "1ba6be45e927bc93", "scanner": "scanner-primary", "fingerprint": "17ad85a620425503", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6e24006b3df97755", "level": "none", "message": {"text": "Commented-code block (7 lines) in js/supabase-client.js:106"}, "properties": {"repobilityId": "36d2372c79ef66a8", "scanner": "scanner-primary", "fingerprint": "6e24006b3df97755", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e7e50178efcfc9d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in js/resource-service.js:1206"}, "properties": {"repobilityId": "69491123864c742c", "scanner": "scanner-primary", "fingerprint": "5e7e50178efcfc9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a3fa88c975ed12b9", "level": "note", "message": {"text": "Legacy-named symbol `ticker__copy` in js/auth-ui.js:585"}, "properties": {"repobilityId": "01f38b10037845e7", "scanner": "scanner-primary", "fingerprint": "a3fa88c975ed12b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8f13a7667f2513ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/other-resources-graphrag.js:27"}, "properties": {"repobilityId": "7c3ad44d9eccb8e8", "scanner": "scanner-primary", "fingerprint": "8f13a7667f2513ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-665b13927d7d1af3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/forum-api.js:124"}, "properties": {"repobilityId": "4184c6bffc95c603", "scanner": "scanner-primary", "fingerprint": "665b13927d7d1af3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-990e99c6711e4b89", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/resource-sidebar.js:14"}, "properties": {"repobilityId": "a4a57a2c1c0c06ee", "scanner": "scanner-primary", "fingerprint": "990e99c6711e4b89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-71d7b819e051651e", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in js/maori-pronunciation.js:52"}, "properties": {"repobilityId": "39e06da629166766", "scanner": "scanner-primary", "fingerprint": "71d7b819e051651e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b6cedc1de7f050d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/maori-pronunciation.js:478"}, "properties": {"repobilityId": "4006c8ee2f652d31", "scanner": "scanner-primary", "fingerprint": "6b6cedc1de7f050d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1c874706c8037df", "level": "none", "message": {"text": "Commented-code block (6 lines) in js/shared-components-navigation.js:214"}, "properties": {"repobilityId": "96df8a57e8d0da73", "scanner": "scanner-primary", "fingerprint": "f1c874706c8037df", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8144580b0583908b", "level": "none", "message": {"text": "Commented-code block (6 lines) in js/shared-sidebar.js:85"}, "properties": {"repobilityId": "43e073dd8ce2e1a2", "scanner": "scanner-primary", "fingerprint": "8144580b0583908b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1752bf9b9ad68ad", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-sidebar.js:664"}, "properties": {"repobilityId": "5fdaa40bc3e42750", "scanner": "scanner-primary", "fingerprint": "e1752bf9b9ad68ad", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5d7fad949ee24b71", "level": "note", "message": {"text": "Legacy-named symbol `spotlight__copy` in js/my-kete-page.js:1032"}, "properties": {"repobilityId": "476209a2c4ed8e1b", "scanner": "scanner-primary", "fingerprint": "5d7fad949ee24b71", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3032b4f67da25047", "level": "note", "message": {"text": "Legacy-named symbol `resource_permalink_copy` in js/main.js:767"}, "properties": {"repobilityId": "d4307f457cee8930", "scanner": "scanner-primary", "fingerprint": "3032b4f67da25047", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-82da7fda4d2f34dd", "level": "note", "message": {"text": "Legacy-named symbol `tka_wananga_example_dismissed_v1` in js/wananga-example.js:7"}, "properties": {"repobilityId": "64f2af8316151315", "scanner": "scanner-primary", "fingerprint": "82da7fda4d2f34dd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4c22391b8c63fda3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/tts-harness.js:132"}, "properties": {"repobilityId": "28d781acbbe95afa", "scanner": "scanner-primary", "fingerprint": "4c22391b8c63fda3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-96b0a3f56b2c33d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in js/auth-store.js:81"}, "properties": {"repobilityId": "93a6814a0239bd27", "scanner": "scanner-primary", "fingerprint": "96b0a3f56b2c33d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-541684bc02181f8c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/kupu-component.js:93"}, "properties": {"repobilityId": "69f438503b6f8dae", "scanner": "scanner-primary", "fingerprint": "541684bc02181f8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a0c407b77807cb91", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/ai-assistant.js:78"}, "properties": {"repobilityId": "3012b92296dea62d", "scanner": "scanner-primary", "fingerprint": "a0c407b77807cb91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f82589fc32bff556", "level": "none", "message": {"text": "Commented-code block (7 lines) in js/shared-components.js:371"}, "properties": {"repobilityId": "976e2cbd75916a6f", "scanner": "scanner-primary", "fingerprint": "f82589fc32bff556", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b262902a6e5dae0c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/shared-components.js:200"}, "properties": {"repobilityId": "7c514c0528287868", "scanner": "scanner-primary", "fingerprint": "b262902a6e5dae0c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-98cb4461d07fc434", "level": "note", "message": {"text": "Legacy-named symbol `tka_wananga_history_v1` in js/pages/wananga-init.js:24"}, "properties": {"repobilityId": "6f9bb696f495e30e", "scanner": "scanner-primary", "fingerprint": "98cb4461d07fc434", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a7acefeaa716bfd9", "level": "note", "message": {"text": "Legacy-named symbol `tka_workflow_context_v1` in js/services/studio-bridge.js:9"}, "properties": {"repobilityId": "6d4d1d1c9e045777", "scanner": "scanner-primary", "fingerprint": "a7acefeaa716bfd9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-556cbb2fa3d29701", "level": "note", "message": {"text": "Legacy-named symbol `tka_entitlements_v1` in js/services/entitlements.js:3"}, "properties": {"repobilityId": "4b36a784d2ac8222", "scanner": "scanner-primary", "fingerprint": "556cbb2fa3d29701", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7af650994773315", "level": "none", "message": {"text": "Commented-code block (5 lines) in js/services/entitlements.js:90"}, "properties": {"repobilityId": "b12c6220c76e6e7a", "scanner": "scanner-primary", "fingerprint": "c7af650994773315", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfac0f9a9da2db5b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/entitlements.js:524"}, "properties": {"repobilityId": "da63a02babf20dc5", "scanner": "scanner-primary", "fingerprint": "cfac0f9a9da2db5b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f11a838a294e99e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 js/services/ai-block-generator.js:79"}, "properties": {"repobilityId": "cf5430aab2443c85", "scanner": "scanner-primary", "fingerprint": "4f11a838a294e99e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36be9bc7b5e23939", "level": "none", "message": {"text": "Commented-code block (5 lines) in js/mindmap/engine.js:799"}, "properties": {"repobilityId": "812c1181a57364fa", "scanner": "scanner-primary", "fingerprint": "36be9bc7b5e23939", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2f84031226b13d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/verify-curriculum-statements.js:620"}, "properties": {"repobilityId": "0257f6b6ac6869ef", "scanner": "scanner-primary", "fingerprint": "b2f84031226b13d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe470778e0edb48e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enable-cloudflare-auto-deploy.js:82"}, "properties": {"repobilityId": "ff8fc795c40b380a", "scanner": "scanner-primary", "fingerprint": "fe470778e0edb48e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5848fe88c04276ca", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/simulate-teacher-bots.js:30"}, "properties": {"repobilityId": "5c16a023bb5fddf7", "scanner": "scanner-primary", "fingerprint": "5848fe88c04276ca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc267478761e609d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-graphrag-traversal-parity.js:126"}, "properties": {"repobilityId": "6c6a88eac249832e", "scanner": "scanner-primary", "fingerprint": "fc267478761e609d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c895472e1f7e3c74", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/connect-graph-to-curriculum.js:61"}, "properties": {"repobilityId": "1afd87dc233967b1", "scanner": "scanner-primary", "fingerprint": "c895472e1f7e3c74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc64e174092f59d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/regenerate-embeddings.js:91"}, "properties": {"repobilityId": "76ebef46ebd2a272", "scanner": "scanner-primary", "fingerprint": "bc64e174092f59d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe5ba7d1ac27fb0e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/run-alignment-lane.py:65"}, "properties": {"repobilityId": "595f8a321494a9de", "scanner": "scanner-primary", "fingerprint": "fe5ba7d1ac27fb0e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7252de09ac29c3ed", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ears.js:87"}, "properties": {"repobilityId": "2a1326fb8822dcf3", "scanner": "scanner-primary", "fingerprint": "7252de09ac29c3ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0b6c32fb8cbb297a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fix-nested-main-bug.py:72"}, "properties": {"repobilityId": "66b700af2f103aac", "scanner": "scanner-primary", "fingerprint": "0b6c32fb8cbb297a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe98e2f2d7f8e31b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eyes.js:76"}, "properties": {"repobilityId": "1056a0c66f7a9462", "scanner": "scanner-primary", "fingerprint": "fe98e2f2d7f8e31b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-981a3fad309dc933", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-latest-deployment.js:53"}, "properties": {"repobilityId": "1c27e595087914b9", "scanner": "scanner-primary", "fingerprint": "981a3fad309dc933", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a1ce5a3aa6b0efdb", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/patch-second-pass.py:78"}, "properties": {"repobilityId": "623c05a8bb6806e6", "scanner": "scanner-primary", "fingerprint": "a1ce5a3aa6b0efdb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d7168e275fb38256", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/strip-injections.py:306"}, "properties": {"repobilityId": "72f53859f8c6e142", "scanner": "scanner-primary", "fingerprint": "d7168e275fb38256", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3d506dd72898445", "level": "note", "message": {"text": "Legacy-named symbol `graphrag_query_v2` in scripts/graphrag_query_v2.py:9"}, "properties": {"repobilityId": "b3aee3f623beaeaf", "scanner": "scanner-primary", "fingerprint": "f3d506dd72898445", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0561c918e2879a20", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/inspect-graphrag-traversal-diff.js:138"}, "properties": {"repobilityId": "e11b18693e4f0a75", "scanner": "scanner-primary", "fingerprint": "0561c918e2879a20", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af5c8b1853ca55a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/import-nz-schools.js:36"}, "properties": {"repobilityId": "3292f66b4e7b1000", "scanner": "scanner-primary", "fingerprint": "af5c8b1853ca55a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6944eda3ca2dea09", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/codex_mcp_bridge.py:23"}, "properties": {"repobilityId": "4ce76590ca9a36a2", "scanner": "scanner-primary", "fingerprint": "6944eda3ca2dea09", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-14b532d538117f84", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/parse_nzc_2007.py:53"}, "properties": {"repobilityId": "2574fd8e783d8b3a", "scanner": "scanner-primary", "fingerprint": "14b532d538117f84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39f5a819f55e7ed9", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/graphrag_batch_embeddings.py:24"}, "properties": {"repobilityId": "f2bcaf5f346b62ae", "scanner": "scanner-primary", "fingerprint": "39f5a819f55e7ed9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bc7d5200e507bff", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/te_reo_perfect_extract.py:17"}, "properties": {"repobilityId": "90250ba5bb443bff", "scanner": "scanner-primary", "fingerprint": "0bc7d5200e507bff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21561c75c827af1a", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/kaimahi-report.py:65"}, "properties": {"repobilityId": "02f6734aed221777", "scanner": "scanner-primary", "fingerprint": "21561c75c827af1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33d5f22d0113ce21", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/disable-cloudflare-auto-deploy.js:161"}, "properties": {"repobilityId": "7d6950385db9b5e3", "scanner": "scanner-primary", "fingerprint": "33d5f22d0113ce21", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd66e76cc2e0818d", "level": "note", "message": {"text": "Legacy-named symbol `setEnvironmentVariableLegacy` in scripts/set-cloudflare-env-vars-supabase.js:144"}, "properties": {"repobilityId": "dca6e86f413e4a26", "scanner": "scanner-primary", "fingerprint": "bd66e76cc2e0818d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-719bdf39edd38133", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/shell-eyes.py:43"}, "properties": {"repobilityId": "f07f03b41d23e991", "scanner": "scanner-primary", "fingerprint": "719bdf39edd38133", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-718e090bea350484", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/fix_verbatim_final.py:404"}, "properties": {"repobilityId": "dcdf5966a2e06c32", "scanner": "scanner-primary", "fingerprint": "718e090bea350484", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3016293553d1bde", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in scripts/generate-source-registry.js:60"}, "properties": {"repobilityId": "997b24491f1043f4", "scanner": "scanner-primary", "fingerprint": "b3016293553d1bde", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d1a345470f033c15", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/report-content-tranche-priority.js:279"}, "properties": {"repobilityId": "53fe7e135c5c9228", "scanner": "scanner-primary", "fingerprint": "d1a345470f033c15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc7c6a4913da6fca", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/quick_graphrag_query.py:20"}, "properties": {"repobilityId": "3272fa02cc3616c7", "scanner": "scanner-primary", "fingerprint": "bc7c6a4913da6fca", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cd833345d4650c91", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/ingest-codebase-intelligence.py:89"}, "properties": {"repobilityId": "f60408be1290b1d0", "scanner": "scanner-primary", "fingerprint": "cd833345d4650c91", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-800172ead38502b3", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in scripts/saas_coordination_system.py:82"}, "properties": {"repobilityId": "1c04061bf14a3a50", "scanner": "scanner-primary", "fingerprint": "800172ead38502b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-19f9714fe440aa71", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/inject_ui_components.py:112"}, "properties": {"repobilityId": "e0cd0bc4a3d94614", "scanner": "scanner-primary", "fingerprint": "19f9714fe440aa71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f2b38e068efd14", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/fix_verbatim_statements.py:590"}, "properties": {"repobilityId": "30536614cfb010ee", "scanner": "scanner-primary", "fingerprint": "76f2b38e068efd14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd147de3b4ee2fdc", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/comprehensive_site_audit.py:54"}, "properties": {"repobilityId": "86782b5c15bb6c70", "scanner": "scanner-primary", "fingerprint": "cd147de3b4ee2fdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-521c118b9819c14d", "level": "note", "message": {"text": "Legacy-named symbol `is_legacy` in scripts/build-teaching-content-registry.js:608"}, "properties": {"repobilityId": "2e719dbd30f7c4c5", "scanner": "scanner-primary", "fingerprint": "521c118b9819c14d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6d9d052e7a530671", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/force-fix-browse-redirects.js:53"}, "properties": {"repobilityId": "a57b544f24d12786", "scanner": "scanner-primary", "fingerprint": "6d9d052e7a530671", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9fc76eb4f9fe877", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-stats.js:1"}, "properties": {"repobilityId": "caf81d9136a935c5", "scanner": "scanner-primary", "fingerprint": "f9fc76eb4f9fe877", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c21d50f8ccf7a207", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/trigger-cloudflare-deployment.js:66"}, "properties": {"repobilityId": "2360af6a46e4c78a", "scanner": "scanner-primary", "fingerprint": "c21d50f8ccf7a207", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffbab3028f9ee6b8", "level": "note", "message": {"text": "Legacy-named symbol `lessons_backup` in scripts/shell-census.py:28"}, "properties": {"repobilityId": "ecd1f89fd2992862", "scanner": "scanner-primary", "fingerprint": "ffbab3028f9ee6b8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4249e4986c48da5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/inject_axioms.py:117"}, "properties": {"repobilityId": "6f132ea23e0f7dc5", "scanner": "scanner-primary", "fingerprint": "4249e4986c48da5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b15f73b60cc839f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/deploy-nesting.js:17"}, "properties": {"repobilityId": "b5a8692e4fffb958", "scanner": "scanner-primary", "fingerprint": "b15f73b60cc839f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82c24b735c540afc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/fix-data-subject.py:94"}, "properties": {"repobilityId": "abe8896328e0d7d9", "scanner": "scanner-primary", "fingerprint": "82c24b735c540afc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a295ffbb9a472510", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/log-archival/archive_logs.py:61"}, "properties": {"repobilityId": "7d1c78c245ac1aa5", "scanner": "scanner-primary", "fingerprint": "a295ffbb9a472510", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc675d44d3bcb2df", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 scripts/job-seeker/cv_renderer.py:77"}, "properties": {"repobilityId": "f1791bf0bd427853", "scanner": "scanner-primary", "fingerprint": "dc675d44d3bcb2df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4cc2d13a704d919", "level": "note", "message": {"text": "Stub function `log_message` (body is just `pass`/`return`) \u2014 scripts/job-seeker/approval-ui/serve.py:301"}, "properties": {"repobilityId": "776f7e7877d2928e", "scanner": "scanner-primary", "fingerprint": "d4cc2d13a704d919", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "empty-handler", "dead-code"]}}, {"ruleId": "scanner-7d12fe0916d5149d", "level": "note", "message": {"text": "Legacy-named symbol `final_copy` in scripts/lib/sovereign_graphrag.py:658"}, "properties": {"repobilityId": "24b9512d63953a1b", "scanner": "scanner-primary", "fingerprint": "7d12fe0916d5149d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-63952afed204d3da", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/legacy/scan_public.js:25"}, "properties": {"repobilityId": "e230445ab4b29a18", "scanner": "scanner-primary", "fingerprint": "63952afed204d3da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16f9ca7674e7ec2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in sovereign-lattice/stl_mesh_validator.py:72"}, "properties": {"repobilityId": "5de055a4c319dfd4", "scanner": "scanner-primary", "fingerprint": "16f9ca7674e7ec2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aae3aebd56bab6db", "level": "note", "message": {"text": "Legacy-named symbol `files_to_copy` in sovereign-lattice/compile_b2b_portfolio.py:584"}, "properties": {"repobilityId": "934e558c1556e633", "scanner": "scanner-primary", "fingerprint": "aae3aebd56bab6db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-35fb19fc49e8540e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/mcp-stdio-server.js:569"}, "properties": {"repobilityId": "bdc3ddf69d8cb1a7", "scanner": "scanner-primary", "fingerprint": "35fb19fc49e8540e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-513d2e85ae26e8e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 mcp-server/index.js:241"}, "properties": {"repobilityId": "59f897fb66597eba", "scanner": "scanner-primary", "fingerprint": "513d2e85ae26e8e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdab30a291b0c1ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/ai-companion/index.ts:204"}, "properties": {"repobilityId": "2441a48091fb3365", "scanner": "scanner-primary", "fingerprint": "fdab30a291b0c1ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e8070c328cd05a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/process-whiteboard/index.ts:60"}, "properties": {"repobilityId": "36adb0a57dfa9878", "scanner": "scanner-primary", "fingerprint": "8e8070c328cd05a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cc7259be35442cb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-glm-free/index.ts:191"}, "properties": {"repobilityId": "038bc7185c0ac8c1", "scanner": "scanner-primary", "fingerprint": "cc7259be35442cb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4cefe450cdfcc4dd", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/stripe-webhook/index.ts:356"}, "properties": {"repobilityId": "5e8d446fc86a5f10", "scanner": "scanner-primary", "fingerprint": "4cefe450cdfcc4dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9eff0f091176569", "level": "none", "message": {"text": "Commented-code block (7 lines) in supabase/functions/forum-post-news-bot/index.ts:6"}, "properties": {"repobilityId": "c85fd03881bf6ef2", "scanner": "scanner-primary", "fingerprint": "a9eff0f091176569", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7c41dce2b87b9fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-post-news-bot/index.ts:340"}, "properties": {"repobilityId": "3a9c3a3a1abef0ba", "scanner": "scanner-primary", "fingerprint": "c7c41dce2b87b9fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee29baa815bcf44e", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_search_v2` in supabase/functions/graphrag-search/index.ts:1305"}, "properties": {"repobilityId": "402b82cbace70b6e", "scanner": "scanner-primary", "fingerprint": "ee29baa815bcf44e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-24e311015355e2f9", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/graphrag-search/index.ts:1505"}, "properties": {"repobilityId": "ba5525a2d3722656", "scanner": "scanner-primary", "fingerprint": "24e311015355e2f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81578d152e7398ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in supabase/functions/generate-lesson/index.ts:312"}, "properties": {"repobilityId": "a80b14738f36b12e", "scanner": "scanner-primary", "fingerprint": "81578d152e7398ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8536cadfcb6cc2b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson/index.ts:269"}, "properties": {"repobilityId": "958ee4253b24d9ab", "scanner": "scanner-primary", "fingerprint": "b8536cadfcb6cc2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-71a15e4a040f46f0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/send-workshop-emails/index.ts:344"}, "properties": {"repobilityId": "bb7a5d1151c681a3", "scanner": "scanner-primary", "fingerprint": "71a15e4a040f46f0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f2d6813a4a88562", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/parse-timetable/index.ts:55"}, "properties": {"repobilityId": "69f6334717dc69ea", "scanner": "scanner-primary", "fingerprint": "1f2d6813a4a88562", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b0215998ccc75396", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in supabase/functions/tts-proxy/index.ts:79"}, "properties": {"repobilityId": "ab67d2b49671c122", "scanner": "scanner-primary", "fingerprint": "b0215998ccc75396", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c06e7a992841ba4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/tts-proxy/index.ts:63"}, "properties": {"repobilityId": "35d6c3640f3e7763", "scanner": "scanner-primary", "fingerprint": "c06e7a992841ba4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-97580d4c5510a626", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/generate-lesson-secure/index.ts:178"}, "properties": {"repobilityId": "bb03557bf090e6a4", "scanner": "scanner-primary", "fingerprint": "97580d4c5510a626", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-12a60f5a2035db2f", "level": "note", "message": {"text": "Legacy-named symbol `cleanupOld` in supabase/functions/news-fetcher/index.ts:239"}, "properties": {"repobilityId": "694df351c5909fbe", "scanner": "scanner-primary", "fingerprint": "12a60f5a2035db2f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-223a3074f4b00bdd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/analyze-reflections/index.ts:43"}, "properties": {"repobilityId": "fdff779a39096524", "scanner": "scanner-primary", "fingerprint": "223a3074f4b00bdd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6bac7d1b813a2df5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/forum-notify-email/index.ts:114"}, "properties": {"repobilityId": "249e0c1c769cdb58", "scanner": "scanner-primary", "fingerprint": "6bac7d1b813a2df5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a38a7819e19bafce", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/deploy_migration.py:47"}, "properties": {"repobilityId": "591df309a990d689", "scanner": "scanner-primary", "fingerprint": "a38a7819e19bafce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ab528e618547434e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/deploy_forum_content.py:25"}, "properties": {"repobilityId": "e86ef06d8ba24e62", "scanner": "scanner-primary", "fingerprint": "ab528e618547434e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3169dc6f57ee40b", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_mcp_queries.py:30"}, "properties": {"repobilityId": "0743f23d19b5857f", "scanner": "scanner-primary", "fingerprint": "d3169dc6f57ee40b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6889becd6ab3e022", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_resource_service_fixed.py:89"}, "properties": {"repobilityId": "8ab2b48e71c8a5c5", "scanner": "scanner-primary", "fingerprint": "6889becd6ab3e022", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-699c0ca4ba9125b4", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_database_fix.py:15"}, "properties": {"repobilityId": "1e57a747d83c5f03", "scanner": "scanner-primary", "fingerprint": "699c0ca4ba9125b4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8008659fed82294e", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/verify_graphrag_fix.py:43"}, "properties": {"repobilityId": "885d2bed35a35ac5", "scanner": "scanner-primary", "fingerprint": "8008659fed82294e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-edac2fb1ef0738ce", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_fix.py:46"}, "properties": {"repobilityId": "37d7308161536014", "scanner": "scanner-primary", "fingerprint": "edac2fb1ef0738ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-14afe80da0ef4b3e", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_fix.py:28"}, "properties": {"repobilityId": "9724983e70c18fe9", "scanner": "scanner-primary", "fingerprint": "14afe80da0ef4b3e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ae06ccd2ae5310d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_simple.py:14"}, "properties": {"repobilityId": "25f73888355dc86d", "scanner": "scanner-primary", "fingerprint": "9ae06ccd2ae5310d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-47db576c2f5e3f8c", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_column_add.py:72"}, "properties": {"repobilityId": "0cd99a9cde8ba858", "scanner": "scanner-primary", "fingerprint": "47db576c2f5e3f8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0a184272bff6577", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/direct_column_add.py:59"}, "properties": {"repobilityId": "8d875665e13d8995", "scanner": "scanner-primary", "fingerprint": "f0a184272bff6577", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f388f3f7819dabbb", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_sql_fix.py:75"}, "properties": {"repobilityId": "5bf94033dcd79a6e", "scanner": "scanner-primary", "fingerprint": "f388f3f7819dabbb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b53398b4af23f6c0", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/setup_codex_mcp_bridge.py:36"}, "properties": {"repobilityId": "d0491d7012ea9be1", "scanner": "scanner-primary", "fingerprint": "b53398b4af23f6c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-de019554bfc97e38", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_v2` in infrastructure/scripts/archive/list_tables.py:30"}, "properties": {"repobilityId": "1857b23da371baed", "scanner": "scanner-primary", "fingerprint": "de019554bfc97e38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d6615e2628a2b6ed", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/index_documentation_files.py:90"}, "properties": {"repobilityId": "8c01b379d65aead3", "scanner": "scanner-primary", "fingerprint": "d6615e2628a2b6ed", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f6236a291692caf", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/enhanced_graphrag_query.py:112"}, "properties": {"repobilityId": "ca678c80e5905173", "scanner": "scanner-primary", "fingerprint": "2f6236a291692caf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2bc60679e6e96cd8", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/deploy_forum_manual.py:30"}, "properties": {"repobilityId": "72d01f1620816844", "scanner": "scanner-primary", "fingerprint": "2bc60679e6e96cd8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7198745b66211661", "level": "none", "message": {"text": "Commented-code block (5 lines) in infrastructure/scripts/archive/test_resource_service_directly.py:21"}, "properties": {"repobilityId": "26ed4d83f4f6a34f", "scanner": "scanner-primary", "fingerprint": "7198745b66211661", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31d0c061ed6c9ea0", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/archive/investigate_graphrag.py:47"}, "properties": {"repobilityId": "22c61b2d196451df", "scanner": "scanner-primary", "fingerprint": "31d0c061ed6c9ea0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-250ac81e9fcb6c22", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/final_fix.py:87"}, "properties": {"repobilityId": "434844ca6c53843c", "scanner": "scanner-primary", "fingerprint": "250ac81e9fcb6c22", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7dc48a3661716184", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/archive/final_fix.py:47"}, "properties": {"repobilityId": "65ef6b2a963590cd", "scanner": "scanner-primary", "fingerprint": "7dc48a3661716184", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9cf60e2af2bb25b", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/deploy_multi_agent_infrastructure.py:120"}, "properties": {"repobilityId": "1919877a43b47c3c", "scanner": "scanner-primary", "fingerprint": "e9cf60e2af2bb25b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2fb901426d7ede92", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/comprehensive_graphrag_query.py:26"}, "properties": {"repobilityId": "9d05e26a25910602", "scanner": "scanner-primary", "fingerprint": "2fb901426d7ede92", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f5dbaf53312a5e3b", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/manual_sql_fix.py:32"}, "properties": {"repobilityId": "b522766dd10f894c", "scanner": "scanner-primary", "fingerprint": "f5dbaf53312a5e3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-39303480e0c66145", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_column_fix.py:15"}, "properties": {"repobilityId": "1c382886036baef4", "scanner": "scanner-primary", "fingerprint": "39303480e0c66145", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7d2a8219a427d6b1", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/direct_function_fix.py:2"}, "properties": {"repobilityId": "25fbc75e8f90cf55", "scanner": "scanner-primary", "fingerprint": "7d2a8219a427d6b1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1b84f2d81e88b952", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/urgent_column_fix.py:57"}, "properties": {"repobilityId": "76da7b3c3a6586f6", "scanner": "scanner-primary", "fingerprint": "1b84f2d81e88b952", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-67e8ce97fea25700", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_function_fix.py:27"}, "properties": {"repobilityId": "5ec46c66c8358c5a", "scanner": "scanner-primary", "fingerprint": "67e8ce97fea25700", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ee3ceee0c17033a2", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/diagnose_db.py:42"}, "properties": {"repobilityId": "9a8898e1e3e7145c", "scanner": "scanner-primary", "fingerprint": "ee3ceee0c17033a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e5498e4e37f76e24", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_function.py:19"}, "properties": {"repobilityId": "aae8aa8cf5ac5b3c", "scanner": "scanner-primary", "fingerprint": "e5498e4e37f76e24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-68ece05abb1f9288", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/apply_fix_directly.py:57"}, "properties": {"repobilityId": "a8e5d5a9498fe617", "scanner": "scanner-primary", "fingerprint": "68ece05abb1f9288", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f87f491852b4c72a", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_db_schema.py:47"}, "properties": {"repobilityId": "8c2e41f25d7805bb", "scanner": "scanner-primary", "fingerprint": "f87f491852b4c72a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7cafa34544bc1bb8", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/simple_db_check.py:15"}, "properties": {"repobilityId": "827d01372c8ee59d", "scanner": "scanner-primary", "fingerprint": "7cafa34544bc1bb8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4587a5e7c4a14bac", "level": "none", "message": {"text": "Commented-code block (6 lines) in infrastructure/scripts/archive/apply_graphrag_fix.py:20"}, "properties": {"repobilityId": "85395c7af1f14ffd", "scanner": "scanner-primary", "fingerprint": "4587a5e7c4a14bac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfacb84f538ae418", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_simple_query.py:59"}, "properties": {"repobilityId": "d1422920dbe0d5ba", "scanner": "scanner-primary", "fingerprint": "bfacb84f538ae418", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d69cca24c57c92a1", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/archive/test_curriculum_function.py:2"}, "properties": {"repobilityId": "daffb4bccc2cf645", "scanner": "scanner-primary", "fingerprint": "d69cca24c57c92a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-18ccd6ca63089bc5", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/batch_index_high_priority.py:126"}, "properties": {"repobilityId": "3cd9cf26f115f050", "scanner": "scanner-primary", "fingerprint": "18ccd6ca63089bc5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ff7986514d850b7", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/setup_codex_mcp_bridge.py:36"}, "properties": {"repobilityId": "ecb3a57ca65d0052", "scanner": "scanner-primary", "fingerprint": "8ff7986514d850b7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df5ab411bb01524d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_search_v2` in infrastructure/scripts/maintenance/enhanced_graphrag_query.py:115"}, "properties": {"repobilityId": "d1d68e710dbbb8bd", "scanner": "scanner-primary", "fingerprint": "df5ab411bb01524d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2401cf7e347ab5a9", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_forum_manual.py:30"}, "properties": {"repobilityId": "3097e50011ba8dac", "scanner": "scanner-primary", "fingerprint": "2401cf7e347ab5a9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03185e552a37d0c8", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_unified_function.py:25"}, "properties": {"repobilityId": "5aab7133247038a3", "scanner": "scanner-primary", "fingerprint": "03185e552a37d0c8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1ec89d04e9e8effc", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_unified_function.py:31"}, "properties": {"repobilityId": "0ecbf6d692dfc701", "scanner": "scanner-primary", "fingerprint": "1ec89d04e9e8effc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0e2dec4e0e12dedd", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/fix_function_overload_emergency.py:18"}, "properties": {"repobilityId": "0c03713b45881194", "scanner": "scanner-primary", "fingerprint": "0e2dec4e0e12dedd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4e3a971a59d34493", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_multi_agent_infrastructure.py:120"}, "properties": {"repobilityId": "78a27b4b8491937e", "scanner": "scanner-primary", "fingerprint": "4e3a971a59d34493", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-df634fe3de55a496", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/comprehensive_graphrag_query.py:26"}, "properties": {"repobilityId": "5fb3c9d85c8d8370", "scanner": "scanner-primary", "fingerprint": "df634fe3de55a496", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5590e2d5f15fbe3d", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/direct_function_fix.py:2"}, "properties": {"repobilityId": "fd60da7b89512992", "scanner": "scanner-primary", "fingerprint": "5590e2d5f15fbe3d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8517cdd1ee48c647", "level": "note", "message": {"text": "Legacy-named symbol `bulk_indexer_v2` in infrastructure/scripts/maintenance/fixed_bulk_indexer.py:124"}, "properties": {"repobilityId": "18a8c8ea10556ee6", "scanner": "scanner-primary", "fingerprint": "8517cdd1ee48c647", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8e2ee295578105ac", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/graphrag_bulk_indexer.py:94"}, "properties": {"repobilityId": "aa7737009b31cb95", "scanner": "scanner-primary", "fingerprint": "8e2ee295578105ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-93572d790b699d83", "level": "note", "message": {"text": "Legacy-named symbol `curriculum_filter_v1` in infrastructure/scripts/maintenance/deploy_function_fix.py:10"}, "properties": {"repobilityId": "07c0f66ede519c2f", "scanner": "scanner-primary", "fingerprint": "93572d790b699d83", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-81d8b874c75ebc9c", "level": "warning", "message": {"text": "Network/subprocess call without timeout or try/except \u2014 infrastructure/scripts/maintenance/deploy_function_fix.py:77"}, "properties": {"repobilityId": "26164c2dc5eb1b72", "scanner": "scanner-primary", "fingerprint": "81d8b874c75ebc9c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "f1ee61488d5089aa", "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": "4d60d22c5c1dcde9", "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": "ec23827f2f98b92a", "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": "c55677e83f9bccfc", "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": "f882002bcb30ce1c", "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": "6e6c309d833e6ade", "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": "5695b970b42437dd", "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": "3da3eee987325b0e", "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": "97d50a001f77b7d6", "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": "57c55b3505f40ba5", "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": "4535e9a162c78caf", "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": "11ab3a309d61edca", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-49c98f7cedd9c977", "level": "note", "message": {"text": "Near-duplicate function bodies in 4 places"}, "properties": {"repobilityId": "f14a96757045d4b8", "scanner": "scanner-primary", "fingerprint": "49c98f7cedd9c977", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c3befded0db5601d", "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": "ebadc44ef1705107", "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": "d5780308b663648b", "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": "1ec432f5c8a2d933", "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": "8f3d819125a2daa5", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-76a2f6818267a9a8", "level": "note", "message": {"text": "Near-duplicate function bodies in 8 places"}, "properties": {"repobilityId": "62c9e7c43f3d7d26", "scanner": "scanner-primary", "fingerprint": "76a2f6818267a9a8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-02525d39071dd2c7", "level": "note", "message": {"text": "Near-duplicate function bodies in 5 places"}, "properties": {"repobilityId": "cfc228ce937fcf35", "scanner": "scanner-primary", "fingerprint": "02525d39071dd2c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-8bb2e05a62aff069", "level": "error", "message": {"text": "FastAPI POST `generate_lesson` without auth dependency \u2014 docker/kahirangi/app.py:275"}, "properties": {"repobilityId": "ad773b9dbd6de92d", "scanner": "scanner-primary", "fingerprint": "8bb2e05a62aff069", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/kahirangi/app.py"}, "region": {"startLine": 275}}}]}, {"ruleId": "scanner-bc33b7204baaa49c", "level": "error", "message": {"text": "FastAPI POST `rlm_query` without auth dependency \u2014 docker/te-aronui/rlm_api.py:153"}, "properties": {"repobilityId": "321f92699a51a7ad", "scanner": "scanner-primary", "fingerprint": "bc33b7204baaa49c", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_api.py"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-c25064b5cbc247a7", "level": "error", "message": {"text": "FastAPI POST `rlm_search` without auth dependency \u2014 docker/te-aronui/rlm_api.py:201"}, "properties": {"repobilityId": "df00d4553474d8cb", "scanner": "scanner-primary", "fingerprint": "c25064b5cbc247a7", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_api.py"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-20dfbee461317d7a", "level": "error", "message": {"text": "FastAPI POST `rlm_chunk` without auth dependency \u2014 docker/te-aronui/rlm_api.py:222"}, "properties": {"repobilityId": "4f361498c49c5f67", "scanner": "scanner-primary", "fingerprint": "20dfbee461317d7a", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_api.py"}, "region": {"startLine": 222}}}]}, {"ruleId": "scanner-3610a61ba9420ebc", "level": "error", "message": {"text": "FastAPI POST `rlm_embed` without auth dependency \u2014 docker/te-aronui/rlm_api.py:247"}, "properties": {"repobilityId": "220e6303766904df", "scanner": "scanner-primary", "fingerprint": "3610a61ba9420ebc", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docker/te-aronui/rlm_api.py"}, "region": {"startLine": 247}}}]}, {"ruleId": "scanner-28b4b8abe5928db9", "level": "error", "message": {"text": "FastAPI POST `embed` without auth dependency \u2014 scripts/graphrag-embed-api.py:41"}, "properties": {"repobilityId": "72ed55bd488db515", "scanner": "scanner-primary", "fingerprint": "28b4b8abe5928db9", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["auth", "owasp", "auth.fastapi.unauth_mutation"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/graphrag-embed-api.py"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-77bb59ff4280b86d", "level": "error", "message": {"text": "Dangling fetch: POST https://oauth2.googleapis.com/token (functions/api/auth-google-exchange.js:435)"}, "properties": {"repobilityId": "e45f935738bc605f", "scanner": "scanner-primary", "fingerprint": "77bb59ff4280b86d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8ffaab0508f6782", "level": "error", "message": {"text": "Dangling fetch: POST https://open.bigmodel.cn/api/paas/v4/embeddings (tests/probe_glm.js:11)"}, "properties": {"repobilityId": "92e858a1b42bbd8a", "scanner": "scanner-primary", "fingerprint": "c8ffaab0508f6782", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ce169f29ce2048c2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/embeddings (tests/probe_alternatives.js:14)"}, "properties": {"repobilityId": "c44fb90b7708e79c", "scanner": "scanner-primary", "fingerprint": "ce169f29ce2048c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d5dd8527fbee70f", "level": "error", "message": {"text": "Dangling fetch: GET /data/annotations.json (js/browse-page.js:393)"}, "properties": {"repobilityId": "1b2a2b5ce0840564", "scanner": "scanner-primary", "fingerprint": "3d5dd8527fbee70f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-069c73aaf0ef19da", "level": "error", "message": {"text": "Dangling fetch: POST /api/create-resource-forum-post (js/resource-promotion.js:75)"}, "properties": {"repobilityId": "6fc261db8305e53f", "scanner": "scanner-primary", "fingerprint": "069c73aaf0ef19da", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4ed8c923b41532cb", "level": "error", "message": {"text": "Dangling fetch: POST /api/ai-companion (js/student-dashboard.js:222)"}, "properties": {"repobilityId": "8bb72a73f66d3f37", "scanner": "scanner-primary", "fingerprint": "4ed8c923b41532cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-48b02c95955aee79", "level": "error", "message": {"text": "Dangling fetch: GET /api/get-graphrag-resources?min_quality=3&require_complete=false&limit=0 (js/other-resources-graphrag.js:27)"}, "properties": {"repobilityId": "8ca9bbd782579fd0", "scanner": "scanner-primary", "fingerprint": "48b02c95955aee79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-76f2132699b80f1f", "level": "error", "message": {"text": "Dangling fetch: GET /api/env (js/env-loader.js:47)"}, "properties": {"repobilityId": "f10432e9b1895b42", "scanner": "scanner-primary", "fingerprint": "76f2132699b80f1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-25d0eb50e2b76bf5", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-forgot-password (js/forgot-password-ui.js:25)"}, "properties": {"repobilityId": "8a2e12f1c8634ebd", "scanner": "scanner-primary", "fingerprint": "25d0eb50e2b76bf5", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6b3a41a5a18d993", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (js/maori-pronunciation.js:406)"}, "properties": {"repobilityId": "1678b155ee8a151a", "scanner": "scanner-primary", "fingerprint": "c6b3a41a5a18d993", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4574fe8f754fdfa", "level": "error", "message": {"text": "Dangling fetch: GET /api/news-feed (js/news-loader.js:93)"}, "properties": {"repobilityId": "b4b81a0addfbf252", "scanner": "scanner-primary", "fingerprint": "d4574fe8f754fdfa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5ad4941b562132c2", "level": "error", "message": {"text": "Dangling fetch: GET https://api.rss2json.com/v1/api.json?rss_url=${rssUrl} (js/news-loader.js:224)"}, "properties": {"repobilityId": "36eade334f06118a", "scanner": "scanner-primary", "fingerprint": "5ad4941b562132c2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0c6a153f4830904d", "level": "error", "message": {"text": "Dangling fetch: GET /data/curriculum-documents.json (js/curriculum-documents-init.js:55)"}, "properties": {"repobilityId": "68f73d1eecefdec3", "scanner": "scanner-primary", "fingerprint": "0c6a153f4830904d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c8a17ae1e21018c4", "level": "error", "message": {"text": "Dangling fetch: GET /units-manifest.json (js/unit-plans-init.js:225)"}, "properties": {"repobilityId": "1992e6fb2479cd48", "scanner": "scanner-primary", "fingerprint": "c8a17ae1e21018c4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b49b665462b57d44", "level": "error", "message": {"text": "Dangling fetch: GET /api/youtube-config (js/youtube-api.js:50)"}, "properties": {"repobilityId": "f3c1f7f13c584f39", "scanner": "scanner-primary", "fingerprint": "b49b665462b57d44", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01d21db4ae424a99", "level": "error", "message": {"text": "Dangling fetch: GET /units-manifest.json (js/unit-plans-hero.js:143)"}, "properties": {"repobilityId": "d81fc4ed1aab67df", "scanner": "scanner-primary", "fingerprint": "01d21db4ae424a99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c78c235839619aef", "level": "error", "message": {"text": "Dangling fetch: GET /components/mobile-bottom-nav.html (js/pages/lessons-init.js:1)"}, "properties": {"repobilityId": "d56085028879e534", "scanner": "scanner-primary", "fingerprint": "c78c235839619aef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8601f04b8672e7ed", "level": "error", "message": {"text": "Dangling fetch: GET /api/get-student-projects (js/pages/my-submissions-init.js:107)"}, "properties": {"repobilityId": "235687507e6453d7", "scanner": "scanner-primary", "fingerprint": "8601f04b8672e7ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3d493bd4704634f2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/populate-graph-from-files.js:168)"}, "properties": {"repobilityId": "ea1a8ce76fd9b3f5", "scanner": "scanner-primary", "fingerprint": "3d493bd4704634f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-482d0bc6a3888545", "level": "error", "message": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (scripts/test-secure-ai-service.js:32)"}, "properties": {"repobilityId": "f6cef59f42b269b7", "scanner": "scanner-primary", "fingerprint": "482d0bc6a3888545", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-79b5b09d3313fb61", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/simulate-generate-lesson.js:104)"}, "properties": {"repobilityId": "8b3079f23b3b9b77", "scanner": "scanner-primary", "fingerprint": "79b5b09d3313fb61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2f36fe1558ca1d8c", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/test-glm-endpoint.js:28)"}, "properties": {"repobilityId": "b62935d640968e50", "scanner": "scanner-primary", "fingerprint": "2f36fe1558ca1d8c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d6cb4be43d487aef", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/build-knowledge-graph.js:126)"}, "properties": {"repobilityId": "17fc71c62e0ed805", "scanner": "scanner-primary", "fingerprint": "d6cb4be43d487aef", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5fa9fb77a06d73dc", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/align-curriculum.js:35)"}, "properties": {"repobilityId": "0702aa9f9b897e83", "scanner": "scanner-primary", "fingerprint": "5fa9fb77a06d73dc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-df60986286d0805a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.supabase.com/v1/projects/nlgldaqtubrlcqddppbq/database/query (scripts/deploy-nesting.js:28)"}, "properties": {"repobilityId": "85104d4e1fc794ea", "scanner": "scanner-primary", "fingerprint": "df60986286d0805a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ba43e57ceb0c9ff", "level": "error", "message": {"text": "Dangling fetch: POST http://host.docker.internal:11434/api/chat (mcp-server/index.js:2004)"}, "properties": {"repobilityId": "9fa325e36087344c", "scanner": "scanner-primary", "fingerprint": "1ba43e57ceb0c9ff", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-353812314ab6bd2d", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:96)"}, "properties": {"repobilityId": "53302ec0b6a5ee2b", "scanner": "scanner-primary", "fingerprint": "353812314ab6bd2d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f4c8f1053de741e4", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth-google-exchange (tests/playwright/auth-oauth.spec.ts:130)"}, "properties": {"repobilityId": "daf0bd1fc02ab547", "scanner": "scanner-primary", "fingerprint": "f4c8f1053de741e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-82eb368b5831bcb7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (supabase/functions/curriculum-align/index.ts:77)"}, "properties": {"repobilityId": "584d4e6ad2dfda5c", "scanner": "scanner-primary", "fingerprint": "82eb368b5831bcb7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0379f6d02024134a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/process-whiteboard/index.ts:60)"}, "properties": {"repobilityId": "b833d3aa1a2f37df", "scanner": "scanner-primary", "fingerprint": "0379f6d02024134a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2a1bfa41cc4bd478", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (supabase/functions/generate-lesson-glm-free/index.ts:191)"}, "properties": {"repobilityId": "d43240b5ffd936a9", "scanner": "scanner-primary", "fingerprint": "2a1bfa41cc4bd478", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-191934589c56f145", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/forum-post-news-bot/index.ts:332)"}, "properties": {"repobilityId": "9822dcfca88b74fa", "scanner": "scanner-primary", "fingerprint": "191934589c56f145", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9861c05a1279c973", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${provider.key} (supabase/functions/forum-post-news-bot/index.ts:340)"}, "properties": {"repobilityId": "6891a16f5ef321ee", "scanner": "scanner-primary", "fingerprint": "9861c05a1279c973", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f5dfb23d8b75b76b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/generate-lesson/index.ts:269)"}, "properties": {"repobilityId": "dfc9a99d4ccf7c7c", "scanner": "scanner-primary", "fingerprint": "f5dfb23d8b75b76b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-47ea98422d97ba8d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:344)"}, "properties": {"repobilityId": "cf6cd444c0075cf0", "scanner": "scanner-primary", "fingerprint": "47ea98422d97ba8d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5c454d2ffbc13ce3", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:406)"}, "properties": {"repobilityId": "788990e05b0730da", "scanner": "scanner-primary", "fingerprint": "5c454d2ffbc13ce3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c90043a2491d9488", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/send-workshop-emails/index.ts:428)"}, "properties": {"repobilityId": "4c3230ead7889cda", "scanner": "scanner-primary", "fingerprint": "c90043a2491d9488", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1d68d9ceffad551c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (supabase/functions/parse-timetable/index.ts:55)"}, "properties": {"repobilityId": "0b7abf22a28b9acd", "scanner": "scanner-primary", "fingerprint": "1d68d9ceffad551c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1236c451ef2f4517", "level": "error", "message": {"text": "Dangling fetch: GET https://api.dictionaryapi.dev/api/v2/entries/en/${encodeURIComponent(cleanWord.toLowerCase())} (supabase/functions/dictionary-service/index.ts:148)"}, "properties": {"repobilityId": "576915ade47db789", "scanner": "scanner-primary", "fingerprint": "1236c451ef2f4517", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-600bba6a4903156c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/speech (supabase/functions/tts-proxy/index.ts:63)"}, "properties": {"repobilityId": "10d11cc4b1776f6a", "scanner": "scanner-primary", "fingerprint": "600bba6a4903156c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e14d9080d44194c9", "level": "error", "message": {"text": "Dangling fetch: POST https://api.elevenlabs.io/v1/text-to-speech/${voiceId} (supabase/functions/tts-proxy/index.ts:81)"}, "properties": {"repobilityId": "79a82d1e82381123", "scanner": "scanner-primary", "fingerprint": "e14d9080d44194c9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-07889a3cb3c23f56", "level": "error", "message": {"text": "Dangling fetch: POST https://${region}.tts.speech.microsoft.com/cognitiveservices/v1 (supabase/functions/tts-proxy/index.ts:120)"}, "properties": {"repobilityId": "8b427812b93f54ec", "scanner": "scanner-primary", "fingerprint": "07889a3cb3c23f56", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5062a854b5454b33", "level": "error", "message": {"text": "Dangling fetch: POST https://api.deepseek.com/v1/chat/completions (supabase/functions/generate-lesson-secure/index.ts:178)"}, "properties": {"repobilityId": "f3a37cfec9b9fdcc", "scanner": "scanner-primary", "fingerprint": "5062a854b5454b33", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e1f51feab73bae04", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (supabase/functions/analyze-reflections/index.ts:43)"}, "properties": {"repobilityId": "152eaa325a8e9871", "scanner": "scanner-primary", "fingerprint": "e1f51feab73bae04", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99591b34697f8bc6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (supabase/functions/forum-notify-email/index.ts:114)"}, "properties": {"repobilityId": "ffd0ec06672b91f0", "scanner": "scanner-primary", "fingerprint": "99591b34697f8bc6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2dc8f8e2a56df35", "level": "note", "message": {"text": "Unused endpoint: POST /generate-lesson"}, "properties": {"repobilityId": "7b21cae23dff7887", "scanner": "scanner-primary", "fingerprint": "d2dc8f8e2a56df35", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64b202f487de07f3", "level": "note", "message": {"text": "Unused endpoint: POST /rlm/query"}, "properties": {"repobilityId": "0708e60dee1cd365", "scanner": "scanner-primary", "fingerprint": "64b202f487de07f3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0f2443cb4aa8e606", "level": "note", "message": {"text": "Unused endpoint: POST /rlm/search"}, "properties": {"repobilityId": "36b95f1067636e1c", "scanner": "scanner-primary", "fingerprint": "0f2443cb4aa8e606", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a876e03294b2aa1c", "level": "note", "message": {"text": "Unused endpoint: POST /rlm/chunk"}, "properties": {"repobilityId": "61bda6f5084f79ab", "scanner": "scanner-primary", "fingerprint": "a876e03294b2aa1c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f5a1a2390aa8e0b7", "level": "note", "message": {"text": "Unused endpoint: POST /rlm/embed"}, "properties": {"repobilityId": "2430e24a158b4269", "scanner": "scanner-primary", "fingerprint": "f5a1a2390aa8e0b7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-21cf56c09f860b64", "level": "note", "message": {"text": "Unused endpoint: GET /index.html"}, "properties": {"repobilityId": "203837436ce1e365", "scanner": "scanner-primary", "fingerprint": "21cf56c09f860b64", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-13451f35f0ddd1ca", "level": "note", "message": {"text": "Unused endpoint: GET /sse"}, "properties": {"repobilityId": "530f3c025057394e", "scanner": "scanner-primary", "fingerprint": "13451f35f0ddd1ca", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cde167f60259e05e", "level": "note", "message": {"text": "Unused endpoint: POST /messages"}, "properties": {"repobilityId": "e40b791945c8b0e1", "scanner": "scanner-primary", "fingerprint": "cde167f60259e05e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-093467ddc6e6a64d", "level": "note", "message": {"text": "Unused endpoint: POST /api/generate"}, "properties": {"repobilityId": "7d346e1ba58c7d3d", "scanner": "scanner-primary", "fingerprint": "093467ddc6e6a64d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e3eff48d761e020c", "level": "note", "message": {"text": "Unused endpoint: POST /graphrag/update"}, "properties": {"repobilityId": "28649a682b42b6d8", "scanner": "scanner-primary", "fingerprint": "e3eff48d761e020c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-88d13dbeee45f04a", "level": "note", "message": {"text": "Unused endpoint: POST /graph/traverse"}, "properties": {"repobilityId": "04c7f166cac76891", "scanner": "scanner-primary", "fingerprint": "88d13dbeee45f04a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5c4546cb878d5ace", "level": "note", "message": {"text": "Unused endpoint: POST /graph/vector-search"}, "properties": {"repobilityId": "28020f2d1cd681d0", "scanner": "scanner-primary", "fingerprint": "5c4546cb878d5ace", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-31382516b6cc0c25", "level": "note", "message": {"text": "Unused endpoint: POST /graph/embed-query"}, "properties": {"repobilityId": "4cea6d9b625b794c", "scanner": "scanner-primary", "fingerprint": "31382516b6cc0c25", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}