{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-61be86536a5f5ed1", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-drift.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-drift.ts: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-5f39b74fc0622d79", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-blog-mdx.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-blog-mdx.ts: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-d0972902defbbb8c", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-sitemap-data-snapshot.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sitemap-data-snapshot.ts:106"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d4b518a15b274e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-starting-soon-snapshot.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-starting-soon-snapshot.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b71bf277b1c9834d", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-courses.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-courses.ts: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-4f9881720ba866b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-bls.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-bls.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46beccc73dd1266b", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-scorecard-freshness.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scorecard-freshness.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e6724d046a04abb3", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-term-hardcoding.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-term-hardcoding.ts: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-18d138fa4bb5c8a6", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-subject-vocab.ts:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-subject-vocab.ts:342"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d7f418b147b5ba0", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-output.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-output.ts:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd4cf5aab097c94b", "name": "Stray `console.log` in TS/JS \u2014 scripts/scorecard-map.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scorecard-map.ts:263"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-78a622678423080c", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-last-updated-snapshot.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-last-updated-snapshot.ts:127"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e763dac493bc4d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/seat-watch.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seat-watch.ts: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-15b7aa1ee6946e71", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-cross-state-transfers.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-cross-state-transfers.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-a58e04ee17b5125b", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-state-summaries.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-state-summaries.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a22456e65abe3d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0181d73abfe03086", "name": "Stray `console.log` in TS/JS \u2014 scripts/normalize-invisible-terms.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/normalize-invisible-terms.ts: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-d227f45ab14cf9ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-scorecard.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scorecard.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9a8f6926405fd1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-programs.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-programs.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09370346effe641a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-health.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-health.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2dd4f08903291da2", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-data-integrity.ts:331", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-data-integrity.ts:331"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc2216aa7cbcc013", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-coverage-rollup.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-coverage-rollup.ts: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-854e8c170d4c62ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/reapply-program-matcher.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reapply-program-matcher.ts: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-76ad9d6a63721a3b", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-dest-rollup.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-dest-rollup.ts: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-896a1b2700d0bba9", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-coverage.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-coverage.ts:102"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-574da8af823ab848", "name": "Stray `console.log` in TS/JS \u2014 scripts/notify.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify.ts: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-201e15fdba792694", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-registry-integrity.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-registry-integrity.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd0cd9b3f4729d50", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-transfers.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-transfers.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a6e4b2011ba0dd3", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-course-availability-cache.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-course-availability-cache.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f66650644ccd0204", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-universities-cache.ts:112", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-universities-cache.ts:112"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ace5373e0bac410", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-term-counts-snapshot.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-term-counts-snapshot.ts:102"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4c023cb13f9b3ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-benchmarks.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-benchmarks.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-4348fcaa2d3849b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/eval-search-intent.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-search-intent.ts: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-99d3e5b8ccd5f63b", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-assist-articulation.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-assist-articulation.ts: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-25a8e02ce3c47ef3", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard-programs.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard-programs.ts: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-1cf43d53506df2b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/bench-transfer-lookup.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-transfer-lookup.ts: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-9bb5bc981a228a9d", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-config-data-consistency.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-config-data-consistency.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79710bdbe3239687", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-section-counts-snapshot.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-section-counts-snapshot.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74be726b63f7da8f", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-colleague.ts:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-colleague.ts:198"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c92bf4c3c9809c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-transfer-artsys.ts:382", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-transfer-artsys.ts:382"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18e61e247852f699", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner8.ts:372", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner8.ts:372"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b686f0df862cb0d", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-custom.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-custom.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02dfede061023eb3", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-jenzabar.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-jenzabar.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe0ca3cda2607e64", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner-ssb.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner-ssb.ts:223"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f4e52c75cf2a036", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-programs.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-programs.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d382c9b4b81972e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-ccbc.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-ccbc.ts:88"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8122a71744c4f7f", "name": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-transfer.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-transfer.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2051e2dd2d76ded3", "name": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-programs.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-programs.ts: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-c4e1e6b218661845", "name": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-colleague.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-colleague.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7cc15014eddd4e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-transfer-core42.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-transfer-core42.ts: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-80acc669b854070c", "name": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-jenzabar.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-jenzabar.ts:270"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92c8bf84d8d0d800", "name": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-programs.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-programs.ts: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-01e33ef8d12fe977", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/normalize-existing-modes.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/normalize-existing-modes.ts: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-7be5935d65579200", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ctclink.ts:445", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ctclink.ts:445"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2982fdd6b8f2669", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ccs-programs.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ccs-programs.ts:239"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-236b8681f9bf61d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-wsu.ts:287", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-wsu.ts:287"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbd1ce81f7d99c74", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-uw.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-uw.ts: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-bd945d79606513be", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-catalog-prereqs.ts:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-catalog-prereqs.ts: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-c721328a13602571", "name": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-programs.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-programs.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b82376708991e19d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-colleague.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-colleague.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab0d35be1c257fa4", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-wncc.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-wncc.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c1096d9592d2e69", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-lptc.ts:236", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-lptc.ts: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-85236a66dc03176b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-nicc.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-nicc.ts:237"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1891eed65060e094", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-transfer.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-transfer.ts:180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38ed202baef037de", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-programs.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-programs.ts: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-e0c6fc1741f11258", "name": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-mpcc.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-mpcc.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffece287948c89c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-colleague.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-colleague.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-65bb589b8036aa2d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uni.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uni.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2a98795352deca4", "name": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uiowa.ts:107", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uiowa.ts: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-23261e9d40632e6c", "name": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-transit.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-transit.ts:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-419ed0a10afdb081", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acts-catalogs.ts:326", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acts-catalogs.ts:326"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a462f54009981d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ozarka.ts:367", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ozarka.ts:367"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-403c557d114ecdc7", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-uaccm.ts:347", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-uaccm.ts:347"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55db41aad6059a72", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-eacc.ts:325", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-eacc.ts:325"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75643ce0a958644f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-nwacc.ts:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-nwacc.ts:166"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b26637954e7c67d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-seark-pdf-programs.ts:390", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-seark-pdf-programs.ts:390"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b045b2128cf922b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-asu-jonesboro.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-asu-jonesboro.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc5405fc1205e8f4", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-programs.ts: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-31d6198c2112a772", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acalog-harvest.ts:220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acalog-harvest.ts:220"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a900987dc4da884", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ua-powerbi.ts:433", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ua-powerbi.ts:433"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b561da065ef551d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc.ts:311", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc.ts:311"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15775c99c2f33b84", "name": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc-prereqs.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc-prereqs.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79e5c48a38e09661", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-colleague.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-colleague.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10fcb02622a39913", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-westmoreland.ts:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-westmoreland.ts:289"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e9b91c756c26aee", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-transfer.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-transfer.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d8f4d96a5d1ef48a", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-catalog-prereqs.ts:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-catalog-prereqs.ts:204"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ffb9ec1bb41087e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-programs.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-programs.ts: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-b1646202349d52f4", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-northampton.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-northampton.ts:177"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59a45fab9b7a87f1", "name": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-pitt-tes.ts:394", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-pitt-tes.ts:394"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95b351ff55dfa75e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cayuga.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cayuga.ts:175"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8bb40097a6082bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-nassau-prereqs.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-nassau-prereqs.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-cc99f3fe09e0c26a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-herkimer.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-herkimer.ts:113"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-171bbb49e873a6a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-programs.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-programs.ts:142"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-441f0ef04c188e6a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-other-programs.ts:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-other-programs.ts:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee315e6b67f7ccd7", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-prereqs.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-prereqs.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-19e2a1502fb29d0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cuny.ts:599", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cuny.ts:599"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd6201a1ac9b8260", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-step.ts:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-step.ts:269"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-253a0636a04d9b28", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-mvcc-programs.ts:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-mvcc-programs.ts: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-b24e8f3605517d71", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-colleague.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-colleague.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-03766f98a1d1263f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-catalog-prereqs.ts:349", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-catalog-prereqs.ts:349"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-150a5610de013309", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-programs.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-programs.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d6dc9bb6601049c", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-trex.ts:416", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-trex.ts:416"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26ebea8a4e63e44a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-fit-prereqs.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-fit-prereqs.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-66795ab1e58c01a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-jones.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-jones.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b91ee644219a43a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-hinds.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-hinds.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-992df90129097e66", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-prcc-bookstore.ts:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-prcc-bookstore.ts:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-737cbf8711aba39a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-banner8.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-banner8.ts: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-e60bad71600806d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-mgccc.ts:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-mgccc.ts:190"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98ec12f52bcb3f02", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-coahoma.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-coahoma.ts:175"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-caa81a15027423fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-catalog-prereqs.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-catalog-prereqs.ts:153"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c07f6683b09e77d4", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-programs.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-programs.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-59fa907a34904f77", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-itawamba.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-itawamba.ts:142"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ec5570c2030fca4", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-athena.ts:346", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-athena.ts:346"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0325f82587e7126a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-transfer-olemiss.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-transfer-olemiss.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12e20a83a026af14", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-misc-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-misc-programs.ts: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-05834646c0821314", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts: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-698f5825d96b395d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-easternflorida.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-easternflorida.ts:279"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f72f9b785e7edaf8", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-palmbeachstate.ts:267", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-palmbeachstate.ts:267"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bb342621a4ddba9", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-scns-titles.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-scns-titles.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-657e93f90111db0d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-scns-flatfile.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-scns-flatfile.ts: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-c0f0d823bb5cf5c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/discover-catalogs.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/discover-catalogs.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1439ee02060943ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-coursedog.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-coursedog.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-cce5f35c98235313", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-tcc.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-tcc.ts:237"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5333dfbfd4050600", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-hccfl.ts:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-hccfl.ts:170"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1d85c0039989df51", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-spcollege.ts:309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-spcollege.ts:309"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6555423ea4d79e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-seminolestate.ts:234", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-seminolestate.ts: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-d9018ea6db34b79b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-mdc.ts:420", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-mdc.ts: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-cad4a0c71345c5b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/patch-mdc-campus.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/patch-mdc-campus.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc7dfa3838f615cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-banner-ssb.ts:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-banner-ssb.ts: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-c5c9d254e677ee4b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-acalog-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-acalog-programs.ts: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-403803ae5fcb26ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-nfc.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-nfc.ts:184"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70fc20f12744ccd7", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-daytonastate.ts:406", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-daytonastate.ts:406"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3a2493a8963f7f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-cf.ts:231", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-cf.ts:231"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-163e1c6c3e06a79e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-courseleaf-titles.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-courseleaf-titles.ts: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-ca79f8dbbe8591a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-santafe.ts:293", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-santafe.ts:293"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b225334f886bcdac", "name": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-broward.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-broward.ts:316"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ea11edc5bf6a9d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-banner8.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-banner8.ts: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-23c8df756015fb16", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-transfer-ccn.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-transfer-ccn.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b44d05eac775b41", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-highlands.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-highlands.ts: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-22c53d13d4c4842e", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-cdkc.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-cdkc.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae4eac8b3eb4dcf8", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-lbhc.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-lbhc.ts:180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ef54ee7b92e91dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:266", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:266"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b8e8793d6640044", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-fvcc.ts:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-fvcc.ts:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a02f8fe29badd39", "name": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-skc.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-skc.ts:135"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71d03a930b8bcd16", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-smartcatalogiq-programs.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-smartcatalogiq-programs.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ebcb1112fb67699", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-cleancatalog-programs.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-cleancatalog-programs.ts: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-8eb64ca3b8283c48", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-usg.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-usg.ts:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-540615e30289da9b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-uga.ts:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-uga.ts:132"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aeef920e1943d86b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gatech.ts:358", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gatech.ts:358"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25a5a50623cf81a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-banner-ssb.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-banner-ssb.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ebdd195b48b95327", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-programs.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-programs.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d332aa83f3a076eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-nimble-cms-programs.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-nimble-cms-programs.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-920c09cb66417298", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gsu.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gsu.ts:146"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d80c4d31fc5d909", "name": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts:387", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts:387"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bfa45c7143461e5c", "name": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-banner8.ts:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-banner8.ts:298"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ede4e090d7c6c66", "name": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0169a997eb28e9c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer-keene.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer-keene.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe8b4a5099e6532e", "name": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-catalog-prereqs.ts:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-catalog-prereqs.ts:198"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9d1335e40767fb0", "name": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-programs.ts: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-1886732b74688f2a", "name": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-colleague.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-colleague.ts: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-0eca7f9623faa71d", "name": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-banner8.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-banner8.ts: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-b1714701eb4778d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-ords.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-ords.ts:88"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d9f6dfc6614151c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-osu.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-osu.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-5eb9c681898e4cd1", "name": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-programs.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-programs.ts: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-183df670095fcf15", "name": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-lctcs-banner-ssb.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-lctcs-banner-ssb.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-ee8a565ab2f86a08", "name": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-coursedog.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-coursedog.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9b4642973021bdf", "name": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-programs.ts: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-cc6121cd51762222", "name": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-regents-matrix.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-regents-matrix.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6d1084310df868c", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-colleague.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-colleague.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec29a24c80df3088", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-transfer-mitransfer.ts:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-transfer-mitransfer.ts: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-e00b82ae2b25b653", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-misc-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-misc-programs.ts: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-dd8852e14057522d", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts: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-6819ac211b593960", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/discover-catalogs.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/discover-catalogs.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-741cd24dda90d8b4", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-banner-ssb.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-banner-ssb.ts:221"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47ea20ff6fa69ecf", "name": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-acalog-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-acalog-programs.ts: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-fbd7ec9fd9cac7dd", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-colleague.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-colleague.ts: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-168e223e80a37cec", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-maricopa.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-maricopa.ts:271"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e0bdf07b6112f3d", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-jenzabar-cmc.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-jenzabar-cmc.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7c314f771ecea83", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-transfer-aztransfer.ts:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-transfer-aztransfer.ts:269"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea86dafa9d9f8d18", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-banner-ssb.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-banner-ssb.ts: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-f8b13eb4ec66f6ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-dine.ts:449", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-dine.ts:449"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-550c2dbf0a6089fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-programs.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-programs.ts: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-84a4702c89e238c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-ccc.ts:272", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-ccc.ts:272"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb1d4f545d7044c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-colleague.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-colleague.ts: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-2798f5f62e8ab822", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-misc-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-misc-programs.ts: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-438d87cba1d656dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-niu.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-niu.ts: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-463f9b4fc9e9d6fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-smartcatalogiq-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-smartcatalogiq-programs.ts: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-2b519daf98e10ea9", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-iecc.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-iecc.ts: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-ac5a45beb12638b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/discover-catalogs.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/discover-catalogs.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9f75532e4de8cc5", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-siu.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-siu.ts:229"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44fee265da1b21e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-acalog-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-acalog-programs.ts: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-0fe642b0df2840f5", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/sweep-stale-terms.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/sweep-stale-terms.ts:211"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-279f76e4a11f08be", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-colleague.ts:405", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-colleague.ts:405"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7693658dfcc4c526", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/supabase-import.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/supabase-import.ts:156"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-daa2140158df2476", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/http-retry.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/http-retry.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63ad86d335b689a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-college.ts:875", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-college.ts:875"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e664530ee6ef55e", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-programs.ts:512", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-programs.ts:512"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52124ddda760eaec", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-ctnet-multisource.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-ctnet-multisource.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1911e05293af773", "name": "TODO/FIXME marker in shipping code \u2014 scripts/lib/bootstrap-state.ts:261", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/lib/bootstrap-state.ts:261"}, "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-d64c260a7c7c072e", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/bootstrap-state.ts:414", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bootstrap-state.ts:414"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d8495adb0a06c7a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-colleges.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-colleges.ts:315"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-441743ab2f6946d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-catalog.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-catalog.ts: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-884d21bdb4f074c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/state-health-rollup.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/state-health-rollup.ts:362"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8110b521dac1e35", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-cleancatalog-programs.ts:416", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-cleancatalog-programs.ts:416"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca3856bec8b97fb5", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-collegetransfer.ts:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-collegetransfer.ts:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9293518a43795a17", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog-programs.ts:537", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog-programs.ts:537"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-493ba7b146dcef23", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog.ts:422", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog.ts:422"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34c1599e88d82ac4", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-prereq-regression.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-prereq-regression.ts: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-bbec42e2f1df02bb", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper-matrix.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper-matrix.ts: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-3d372b801ccb5919", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-programs.ts:250", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-programs.ts:250"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a78efbabd89ba1ab", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/coverage-expansion.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/coverage-expansion.ts:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47a1381ee181fcc6", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/run-migration.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/run-migration.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6404920e3b17e85c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/refingerprint-sweep.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/refingerprint-sweep.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7bcaecafdbab3097", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/resolve-terms.ts:326", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/resolve-terms.ts:326"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e435f1a2118a0c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar-webforms.ts:378", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar-webforms.ts: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-54ac96654ed85f95", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar.ts:407", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar.ts:407"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f3c41c4fa377af0", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-courseleaf-programs.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-courseleaf-programs.ts: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-aac712e61af60ff4", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-scrape-health.ts:397", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-scrape-health.ts:397"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db9b7b2bad9483fb", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-ssb.ts:599", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-ssb.ts:599"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70dc270f04d8fcd4", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/articulation-portals.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/articulation-portals.ts: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-18b6ccdde4c6f895", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-8.ts:563", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-8.ts:563"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df170cb681d304c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-acalog-programs.ts:556", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-acalog-programs.ts:556"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5222a61c38745879", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/fetch-zipcodes.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fetch-zipcodes.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e0d4d088b3d2bca", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/backfill-state-health-history.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/backfill-state-health-history.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-516aa6357ce0c820", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-config-urls.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-config-urls.ts:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18b93a1be1430b69", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-nimble-cms-programs.ts:369", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-nimble-cms-programs.ts:369"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7d0d2f7fb283249", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-state-sweep.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-state-sweep.ts:237"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6cc9466f2dcabc7", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/colleague-terms.ts:275", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/colleague-terms.ts:275"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68bd67c83745093c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/cluster-fingerprints.ts:662", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/cluster-fingerprints.ts:662"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfb9ff9200a44510", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/triage-scraper-health.ts:591", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/triage-scraper-health.ts:591"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4452df3f98517389", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/aggregate-prereqs.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/aggregate-prereqs.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-21e38f9e236dfd9c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-diff.ts:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-diff.ts:302"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a7888bd95f33dee", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/add-state.ts:284", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/add-state.ts:284"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-216f0bd07052f0b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-prereqs.ts:216", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-prereqs.ts:216"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9efea706c91deb7e", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-colleague.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-colleague.ts:239"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4e6440df9eb042d", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-transfer.ts:566", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-transfer.ts:566"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aac65b8c755996c2", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-ocean.ts:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-ocean.ts:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f61349c3c3d23d4", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-banner-ssb.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-banner-ssb.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f97f879c39106b13", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-salem.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-salem.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e605f246d3ce1337", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-programs.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-programs.ts: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-fdfd6f02a5faea3d", "name": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-rcsj.ts:299", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-rcsj.ts:299"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c98dff93e4c5db5", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague.ts:74"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb370426ca4f0b02", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-cerritos.ts:617", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-cerritos.ts:617"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ac3626f58591d48", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-redwoods.ts:677", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-redwoods.ts:677"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5cbc3f6e3306bec", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-rccd.ts:311", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-rccd.ts:311"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-664c6f553de8302c", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-template-programs.ts:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-template-programs.ts:149"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18c74da4309ecc05", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-lbcc.ts:424", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-lbcc.ts:424"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e9dc73daa40c84d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sdccd.ts:260", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sdccd.ts:260"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f8937bd08c38057", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague-variants.ts:530", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague-variants.ts:530"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83a0e61d07b385de", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-ccsf.ts:361", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-ccsf.ts:361"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ab4aaaf88ed9ee0", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-yosemite.ts:492", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-yosemite.ts:492"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e46faf67294e59d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-smc.ts:301", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-smc.ts:301"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b03517f0a27b46a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-westhills.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-westhills.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a00b8a4b75a7f807", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/gen-direct-matches.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/gen-direct-matches.ts: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-ec2b3d733273ab6e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-laccd.ts:621", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-laccd.ts:621"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f304c6bf979587f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-4cd.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-4cd.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a288b446c341967", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-peralta.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-peralta.ts:239"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98a104a801fa974c", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-canyons.ts:664", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-canyons.ts:664"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7626357fd5c8f350", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-banner-cluster.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-banner-cluster.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac8e938d043aefd6", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-imperial.ts:429", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-imperial.ts:429"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f06b754d11662ae3", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-socccd.ts:455", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-socccd.ts:455"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4d91a0a9a2e409e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-foothill.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-foothill.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c2912f69d40f54f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/normalize-unknown-modes.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/normalize-unknown-modes.ts: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-befff18318223a83", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/explore-assist-articulation.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/explore-assist-articulation.ts: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-eef1aa9eaba6781f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-losrios.ts:484", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-losrios.ts:484"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd2c9ef67fa5439d", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-transfer-assist.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-transfer-assist.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-891a4b06633fcb4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-wvm.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-wvm.ts:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ded6d1d58eec2f6b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-delta.ts:343", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-delta.ts:343"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d74e66b9a7e1148", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbccd.ts:459", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbccd.ts:459"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-987e2e043b23899e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-marin.ts:448", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-marin.ts:448"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e0ab421574b0c6b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-assist-receivers.ts:274", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-assist-receivers.ts:274"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6d00184d2b934cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbcc.ts:700", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbcc.ts:700"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3168d196d2fea8d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-deanza.ts:267", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-deanza.ts:267"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d479b43333c97583", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs-acalog.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs-acalog.ts: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-303eb57ad9b01681", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-transfers.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-transfers.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed0e41feb6551910", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-jenzabar.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-jenzabar.ts:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d8c20a80a451d21", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-catalog-prereqs.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-catalog-prereqs.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9532e74de595e3ce", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-mn-eservices.ts:262", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-mn-eservices.ts:262"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-13ae16d40ccea2f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs.ts: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-cf0b56a9e01829fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-ilisagvik.ts:261", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-ilisagvik.ts:261"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bfbb67c46b6088e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-catalog-prereqs.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-catalog-prereqs.ts: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-4b974bed9a016e9f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-programs.ts:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-programs.ts:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbbef79a6a45eb90", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-colleague.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-colleague.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-349ee84e5e3e6d83", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-cccs-banner8.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-cccs-banner8.ts: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-ea66c5f4823be447", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-prereqs.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-prereqs.ts:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da1674a7fb75f99b", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-du-transfer.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-du-transfer.ts:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e40a98592b16481", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-aims-workday.ts:267", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-aims-workday.ts:267"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6249c0632aa31811", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-programs.ts:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-programs.ts:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-174a50f7cd11a244", "name": "Stray `console.log` in TS/JS \u2014 scripts/co/build-transfers.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/build-transfers.ts: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-3f43d8ed5c4e9fdb", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ecsu.ts:306", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ecsu.ts:306"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1e684673e27dd72", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-wcsu.ts:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-wcsu.ts:148"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3517e5f69b8d8bc5", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-uconn.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-uconn.ts: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-985165d1e5bbae7a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-banner.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-banner.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32a97ed81283ea3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ccsu.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ccsu.ts:300"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d23dc59e8f05dd3b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-all.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-all.ts: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-44478310ee64d6e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-scsu.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-scsu.ts:141"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c39ddba78aac628", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-catalog-prereqs.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-catalog-prereqs.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1000a2803e3d50c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-programs.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-programs.ts: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-04730951437a2980", "name": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-transfer.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-transfer.ts: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-e79c35d99d88560d", "name": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-banner.ts:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-banner.ts:181"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdd05843c11fc975", "name": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-programs.ts: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-d20bd36a2a5c3c48", "name": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-transfer.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-transfer.ts:232"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de114a5ef8288929", "name": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-programs.ts: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-bbd60f51464ae1a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-transfer-uhdad.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-transfer-uhdad.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75c61fa389049906", "name": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-uhcc.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-uhcc.ts: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-50289d4f66402366", "name": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-programs.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-programs.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-67a7673b62bbeb84", "name": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer.ts:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f9cd497f1f9be20", "name": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-catalog-prereqs.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-catalog-prereqs.ts:315"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b26162c1ef6c28d", "name": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-mccs.ts:404", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-mccs.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-b6da986cabfebbf4", "name": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer-mainestreet.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer-mainestreet.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a9ef323d8594564", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-sipi-pdf.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-sipi-pdf.ts:277"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef9d87862dc46c54", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-colleague.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-colleague.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2612a9a3909b1e61", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-banner8.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-banner8.ts: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-2524b7cb5c5af1fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-campusnexus.ts:379", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-campusnexus.ts:379"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb543cb8eadef13d", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-programs.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-programs.ts: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-a9252fbfd4fb87e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-transfer-ccns.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-transfer-ccns.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-239d33b697fb8709", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-catalog-prereqs.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-catalog-prereqs.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb0a4f5413a005b1", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-wvup.ts:307", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-wvup.ts:307"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-450e82219adccfa6", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-marshall.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-marshall.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c46d84dddaa6125", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-eastern-wv.ts:276", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-eastern-wv.ts:276"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc67130386d85563", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-mountwest.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-mountwest.ts: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-d13ae92c7c38d575", "name": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-wvu.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-wvu.ts: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-73b5286519b92cf5", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-colleague.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-colleague.ts:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bb7d724da007bc3", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-misc-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-misc-programs.ts: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-f52fa3ae0582d0ff", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-ncstate.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-ncstate.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dc5cad534c7aba7", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-catawba.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-catawba.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e92783d80519f2f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-hpu.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-hpu.ts: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-853883576d8a69d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts: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-d3c18507c7a2b065", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-colleague-subdomains.ts:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-colleague-subdomains.ts: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-be87cbfca9141030", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-uncg.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-uncg.ts: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-03ad5ee92e2fe6c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-southeastern.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-southeastern.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8043961de2efeb27", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-registration-systems.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-registration-systems.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-584ea477dd2d24fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-catalogs.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-catalogs.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db99a3b16ae2a75c", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-tri-county.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-tri-county.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5e10573d17005b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-wingate.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-wingate.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-de2ef5c7a3f75a23", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cleveland.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cleveland.ts:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cae3e98391c39b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/_discover-cns-api.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/_discover-cns-api.ts: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-987f8347e509af65", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-mayland.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-mayland.ts: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-ffc19a6003e1c410", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-sandhills.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-sandhills.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-42bbf7973daffdd7", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-martin.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-martin.ts: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-9d74ca9ed1d99b66", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-albemarle.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-albemarle.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-af4aafb88c4f306d", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-acalog-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-acalog-programs.ts: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-3b56fbe38d63a5f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-elon.ts:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-elon.ts: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-5ff05a46de3c134c", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-pamlico.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-pamlico.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-291769fb421c21dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-cns.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-cns.ts:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-545fc93f7bb664ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cape-fear.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cape-fear.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3477cb2d548fd6a", "name": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-transfer-usd.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-transfer-usd.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7d1f1b9deef70c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-programs.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-programs.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-685e4e4a05a9ab1b", "name": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-oglala-lakota.ts:281", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-oglala-lakota.ts:281"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4aaa47bcbf564769", "name": "Stray `console.log` in TS/JS \u2014 scripts/sd/normalize-term-filenames.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/normalize-term-filenames.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-206f5e135c44acc2", "name": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-southeast-tech.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-southeast-tech.ts:180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47cb37f0e2c8b42d", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-colleague.ts:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-colleague.ts: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-53402bee1f107c98", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-universities.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-universities.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc62cf12b384bbdc", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/discover-sc-systems.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/discover-sc-systems.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84904648e93c1553", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner8.ts:313", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner8.ts:313"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb87cb419b848f9b", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-northeastern-pdf.ts:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-northeastern-pdf.ts:258"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca98d56f8febe0af", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-cygnet.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-cygnet.ts: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-f73a578838bbc90a", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner.ts:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner.ts:251"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9362443288d64b4d", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-midlands.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-midlands.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50cb7f85737c5e37", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-clemson.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-clemson.ts:101"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-015fcaecac0f7a73", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-programs.ts: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-6720832470efe621", "name": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-williamsburg-pdf.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-williamsburg-pdf.ts:270"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3e4badb2516e46d", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-colleague.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-colleague.ts: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-b683b3ad161ff057", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-oregon-coast.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-oregon-coast.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d71f3b5287990bbb", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-tvcc.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-tvcc.ts:101"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b6f89e7c55121ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-osu.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-osu.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b23fabe6520d05f", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-programs.ts:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-programs.ts: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-9b275b4c8e6590ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-klamath.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-klamath.ts:169"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12dd04a89d03c425", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-eou.ts:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-eou.ts:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33e1a34519f4f97d", "name": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-columbia-gorge.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-columbia-gorge.ts:208"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e056466bc5d3c080", "name": "Stray `console.log` in TS/JS \u2014 scripts/ok/scrape-transfer.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ok/scrape-transfer.ts:175"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-791624f9945e80b1", "name": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner8.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner8.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b3bc09e5c571f704", "name": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-programs.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-programs.ts: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-43d2b64b7e08562d", "name": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-transfer-stars.ts:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-transfer-stars.ts:164"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-adcdf72ab7d463ce", "name": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner-ssb9.ts:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner-ssb9.ts:70"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92283a064e999bc4", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-colleague.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-colleague.ts: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-b2949593132644b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-swtc.ts:278", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-swtc.ts:278"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbff180a96d28860", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-cvtc.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-cvtc.ts:316"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-884c0f1782312650", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-ntc.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-ntc.ts: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-805465fc38f8943b", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-transfer-uwm.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-transfer-uwm.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-782d97dc2da3377b", "name": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-programs.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-programs.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-0f4e336f2ccf56bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-nv-transfers.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-nv-transfers.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-137bfc51b16ae18f", "name": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-catalog-prereqs.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-catalog-prereqs.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e75cb7a6b4a1d152", "name": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-programs.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-programs.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3cc771ed8ec10621", "name": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-peoplesoft.ts:557", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-peoplesoft.ts:557"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ff766e2cd353095", "name": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-colleague.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-colleague.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee89ccc16cac9954", "name": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-transfer.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-transfer.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-dfa297bc296df748", "name": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-catalog-prereqs.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-catalog-prereqs.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b53f8995a53198b2", "name": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-programs.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-programs.ts: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-ce713a694d9af33d", "name": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-colleague.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-colleague.ts: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-55c511a73b8f7d5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-programs.ts: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-c5d9100438d5f8e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-northwest-college.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-northwest-college.ts: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-632859f010ef6c11", "name": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-banner8.ts:367", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-banner8.ts:367"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6c1a38c66437a0c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-transfer.ts:448", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-transfer.ts:448"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0db935d0db266c40", "name": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-catalog-prereqs.ts:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-catalog-prereqs.ts:235"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-135efdc64c80da55", "name": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-programs.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-programs.ts: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-f730d45a4c783ffc", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner8.ts:368", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner8.ts:368"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48d106a3b7956a41", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-collegetransfer.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-collegetransfer.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d38d31bdbfa48c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner-ssb.ts:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner-ssb.ts:289"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd17e495cadc811e", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-catalog-prereqs.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-catalog-prereqs.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41a5fb592f10b3fb", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-programs.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-programs.ts: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-1bb0864208a8ea89", "name": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-udel.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-udel.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25cace182c90ee04", "name": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-transfer-gerta.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-transfer-gerta.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55a6f1a6ecf96c07", "name": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-ndus.ts:420", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-ndus.ts: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-9c14b3f25551e573", "name": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-nd-programs.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-nd-programs.ts: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-e5d06a053b06185a", "name": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-catalog-prereqs.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-catalog-prereqs.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd2d8c444aa3ba22", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-colleague.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-colleague.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71b74be63e12a0b6", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-smartcatalogiq-programs.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-smartcatalogiq-programs.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1e299b967362259", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-masstransfer.ts:264", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-masstransfer.ts:264"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b945fa3c764a642", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner8.ts:325", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner8.ts:325"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-edb378664c0af351", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-cleancatalog-programs.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-cleancatalog-programs.ts: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-7b9e9190a788efe8", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-coursedog-programs.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-coursedog-programs.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d8a3ea748e39932", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-massasoit-programs.ts:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-massasoit-programs.ts:246"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f34a6875b68c6a7", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-courseleaf-programs.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-courseleaf-programs.ts: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-ac53050c34ec012b", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner-ssb.ts:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner-ssb.ts:187"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9956feb63b0ff0a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-programs.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-programs.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-c33325a6cde524ff", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cdc1e42674e985cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-rcc-programs.ts:236", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-rcc-programs.ts: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-8a674852228cf0e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:373", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:373"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc69172d8ce21864", "name": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-middlesex.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-middlesex.ts: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-64423b4cad646705", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-banner-ssb.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-banner-ssb.ts:279"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42de0d9f5ecc6764", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:477", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:477"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52f2563326e13313", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-catalog-prereqs.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-catalog-prereqs.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e44a42bc20ca8c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-programs.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-programs.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d9db63cebe0cc9b", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utk.ts:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utk.ts:353"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02a7a69d4069ae36", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-mtsu.ts:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-mtsu.ts:210"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75d8a7a535e79030", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-ttu.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-ttu.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d45b4e22741ed6e", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-all.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-all.ts: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-93e6d7227e46dd78", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-apsu.ts:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-apsu.ts:302"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6483fb12f6c22b77", "name": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utm.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utm.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-21823704f79b7d2b", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/fixup-tccns-and-dates.ts:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/fixup-tccns-and-dates.ts:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02f9a7f09df0e8de", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-colleague.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-colleague.ts: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-9cbb3073fd4f9a42", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-netcc.ts:330", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-netcc.ts:330"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fefba25966d988ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-clarendon.ts:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-clarendon.ts:226"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2756f5c1b9ca11b", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-misc-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-misc-programs.ts: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-b0868e0d7bdad751", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts: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-bf1517d3f2368a5b", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-banner8.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-banner8.ts: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-84c8c3014e0b32a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-alamo.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-alamo.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b409af72bc493f63", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-austin.ts:569", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-austin.ts:569"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44ab25e966e6ea1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-hccs.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-hccs.ts:277"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4c36be5b5fe4c63", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/discover-catalogs.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/discover-catalogs.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a91a3a50776de8b4", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-cisco.ts:264", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-cisco.ts:264"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0e6180034964506", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-collin.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-collin.ts:221"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5feb3c739f1eedc6", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-courseleaf-prereqs.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-courseleaf-prereqs.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a4f17acab3f0ba5", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-grayson.ts:309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-grayson.ts:309"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1fbbac98f49a158d", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-prereqs.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-prereqs.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d873de7c86b728c", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-programs.ts: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-b7127e04405096d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-transfer-tccns.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-transfer-tccns.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f216cfd8e341641", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-dallas.ts:406", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-dallas.ts:406"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-44554df658b914e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-central-texas.ts:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-central-texas.ts: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-ce697c8b9363ea20", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-howard.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-howard.ts:222"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4144f441a5bc76b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-lsc.ts:553", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-lsc.ts:553"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1896cdc8cc0e4458", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-kilgore.ts:363", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-kilgore.ts:363"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-339780695cbe1f85", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-brazosport.ts:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-brazosport.ts:178"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6480850ed6e6605", "name": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-frank-phillips.ts:291", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-frank-phillips.ts:291"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3bc434229c260bd", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colleague.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colleague.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-03b1823141a33420", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-emporia.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-emporia.ts:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-889ae47d19b95a4a", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cdea4e727fa6c19", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-allen.ts:256", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-allen.ts:256"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1d904a1604c9044", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-manhattan-tech.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-manhattan-tech.ts:140"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9f88c5a9f5552d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-ku.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-ku.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-7a4dc58a5a3c0483", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:157"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a7cce06fbdb0c170", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-hutchinson.ts:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-hutchinson.ts:232"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef9de8cfe8a03b88", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-programs.ts:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-programs.ts: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-9042a99f5d402bd1", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-salina.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-salina.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9253f8e5243ebaf", "name": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colby.ts:220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colby.ts:220"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2f2505e10c64be1", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vwu.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vwu.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a36ce08ada21584", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-camp-pdf-programs.ts:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-camp-pdf-programs.ts:248"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6000dbe1b015ec08", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vhcc-pdf-programs.ts:268", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vhcc-pdf-programs.ts:268"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd711d40a8098635", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vcu.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vcu.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-d721f1cd6c126a0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-uva.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-uva.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1716f112a538b5ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-odu.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-odu.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86f571ceaa8b5abc", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/_ps-summer-probe.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/_ps-summer-probe.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-672a2354b8627cf1", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-equiv.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-equiv.ts: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-afff55da485ca154", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/discover-ps-responses.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/discover-ps-responses.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc4ac9e13395f892", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-courseleaf-programs.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-courseleaf-programs.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a143e9c78bbc1de", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-umw.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-umw.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eff48d29d62bab62", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-gmu.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-gmu.ts: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-08c50bb9321e08bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-catalog-prereqs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-catalog-prereqs.ts: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-ebbd365e7bf76e03", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vsu.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vsu.ts: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-c6b27f9a3f4fae4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-programs.ts:212", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-programs.ts:212"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd4a2b8dba7ec257", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/enrich-peoplesoft.ts:502", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/enrich-peoplesoft.ts:502"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0caf69d6b9efc5ae", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vccs.ts:327", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vccs.ts:327"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb2941880cf99c90", "name": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-peoplesoft.ts:598", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-peoplesoft.ts:598"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-751ab0c6b98902c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-courses.ts:460", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-courses.ts:460"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8b11725ca0d5796", "name": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-catalog-prereqs.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-catalog-prereqs.ts:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbe694aefdba7848", "name": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-transfer-collegesource-tes.ts:453", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-transfer-collegesource-tes.ts:453"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa0140a07dd19395", "name": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-programs.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-programs.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc8e862ea1690c37", "name": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-ivy-tech.ts:292", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-ivy-tech.ts:292"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59748156d2cadee1", "name": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-programs.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-programs.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-852dfab6792a9ca6", "name": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-purdue.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-purdue.ts:208"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-965cc0fbbf394e24", "name": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-iu.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-iu.ts:180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c85879d5ad4b120a", "name": "Stray `console.log` in TS/JS \u2014 scripts/in/geocode-ivy-campuses.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/geocode-ivy-campuses.ts: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-067d13359d425916", "name": "`truncate` class without `title=` for hover reveal \u2014 components/AnswerCard.tsx:432", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/AnswerCard.tsx:432"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25d0ae3326a9a933", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/JsonLd.tsx:18", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/JsonLd.tsx:18"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e272ea933401327b", "name": "`truncate` class without `title=` for hover reveal \u2014 components/ProgramRequirements.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ProgramRequirements.tsx:312"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-770d4c41aea402b4", "name": "`truncate` class without `title=` for hover reveal \u2014 components/Breadcrumbs.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/Breadcrumbs.tsx:54"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd941426ccd82d3e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/Breadcrumbs.tsx:32", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/Breadcrumbs.tsx:32"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b9b542fa6073d79", "name": "`truncate` class without `title=` for hover reveal \u2014 components/CourseTable.tsx:275", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/CourseTable.tsx:275"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99408a3a1ad1bc32", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ChooseQuiz.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ChooseQuiz.tsx:58"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6646c0a49b80f892", "name": "`truncate` class without `title=` for hover reveal \u2014 components/ScheduleBuilder.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ScheduleBuilder.tsx:281"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5a698a7ee77fc9a", "name": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/WeeklyCalendar.tsx:147", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/WeeklyCalendar.tsx:147"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-433337c7be342967", "name": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/ScheduleResults.tsx:613", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/ScheduleResults.tsx:613"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6377747000f27fd", "name": "`truncate` class without `title=` for hover reveal \u2014 components/auth/UserMenu.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/auth/UserMenu.tsx:137"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-efefd9f12ef8a15d", "name": "`truncate` class without `title=` for hover reveal \u2014 app/page.tsx:215", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/page.tsx:215"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bdda466d5941f68a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/page.tsx:100", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/page.tsx:100"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a26a52be61eeb0cb", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:115", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:115"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d4fc8dd1f4486b81", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/page.tsx:71", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/page.tsx:71"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-de4db010dd1c9eba", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/[slug]/page.tsx:146", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/[slug]/page.tsx:146"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-911087a7f70dae66", "name": "`truncate` class without `title=` for hover reveal \u2014 app/colleges/page.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/colleges/page.tsx:244"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-703ccc84bb8f92aa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/colleges/page.tsx:162", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/colleges/page.tsx:162"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b00e4b938f67e50b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/account/AccountDashboard.tsx:662", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/account/AccountDashboard.tsx:662"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71ab3f7336bcf276", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/page.tsx:133", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/page.tsx:133"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9777ac36c4b09fc5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/layout.tsx:71", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/layout.tsx:71"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-153f4171628b5617", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/about/page.tsx:92", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/about/page.tsx:92"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-81a72a182c29c8f3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/colleges/page.tsx:80", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/colleges/page.tsx:80"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2749d4df5c3b1461", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/page.tsx:113", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/page.tsx:113"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d6d0f3397a97dc28", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/TransferCoverageSection.tsx:79", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/TransferCoverageSection.tsx:79"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-14fd1abe4debbd02", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/to/[universitySlug]/page.tsx:239", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/to/[universitySlug]/page.tsx:239"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9dd72d5fbd8bfb40", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/compare/CompareTable.tsx:56", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/compare/CompareTable.tsx:56"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f36097bc8cca6135", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/subject/[prefix]/page.tsx:299", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/subject/[prefix]/page.tsx:299"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-faaa50f6d50eca66", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/programs/page.tsx:151", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/programs/page.tsx:151"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-79edf6f75809847a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/online/page.tsx:110", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/online/page.tsx:110"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e0fa81cbabd8528", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/courses/page.tsx:258", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/courses/page.tsx:258"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8fc58d17ab71a5b1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/page.tsx:278", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/page.tsx:278"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-30a2939ed0619825", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:429", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:429"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd953284b3af5d5e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:284", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:284"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-82f67bd42c71e9c6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/programs/page.tsx:108", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/programs/page.tsx:108"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-98a8a143588284f0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/courses/[prefix]/page.tsx:259", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/courses/[prefix]/page.tsx:259"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7d5b7fa05970c195", "name": "\"active\" state uses light bg in a dark theme \u2014 app/[state]/college/[id]/program/[slug]/PlanClient.tsx:275", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/[state]/college/[id]/program/[slug]/PlanClient.tsx:275"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ba712f468837bbf", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/course/[code]/page.tsx:451", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/course/[code]/page.tsx:451"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4b2bd386a0117aa4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/plan/page.tsx:74", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/plan/page.tsx:74"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c6f84994a5262", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/program/[slug]/page.tsx:287", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/program/[slug]/page.tsx:287"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bcf989df364ce1b7", "name": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx:357", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx:357"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d48532bb4fb96f9", "name": "TODO/FIXME marker in shipping code \u2014 lib/programs/__tests__/planner.test.ts:146", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/programs/__tests__/planner.test.ts:146"}, "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-54f3d8dad3ca46a4", "name": "TODO/FIXME marker in shipping code \u2014 lib/states/ms/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/ms/config.ts:11"}, "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-8807ae9e9906cf5f", "name": "TODO/FIXME marker in shipping code \u2014 lib/states/il/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/il/config.ts:11"}, "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-32d91a9a9dd73374", "name": "TODO/FIXME marker in shipping code \u2014 lib/states/ky/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/ky/config.ts:11"}, "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-0f63c0b7913e40bd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-blog-mdx.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-blog-mdx.ts: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-84ae5e5bebef8968", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-courses.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-courses.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-559a6deb63b6220e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38745d70cd32eb0b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scorecard-freshness.ts:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scorecard-freshness.ts:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79eeb8a99db3acb8", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-term-hardcoding.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-term-hardcoding.ts: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-d59212c26eec6582", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-subject-vocab.ts:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-subject-vocab.ts:342"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1db50e416964bbf", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-output.ts:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-output.ts:55"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62823fd91cce8cae", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/scorecard-map.ts:263", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/scorecard-map.ts:263"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59a448dbd12ed52c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/clean-cross-state-transfers.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/clean-cross-state-transfers.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-c84f7f018f4f4c27", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6c890d68c079b0a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/test-scorecard.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/test-scorecard.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e4ad1f66c9fc43e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-programs.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-programs.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f1a1afbc36c55c0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-data-integrity.ts:331", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-data-integrity.ts:331"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ab8b9db0d478bd6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/reapply-program-matcher.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/reapply-program-matcher.ts: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-cbc61134719a8274", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-coverage.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-coverage.ts:102"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ccde05c62a57f66f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/notify.ts:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/notify.ts: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-2004170b9a2e210d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-registry-integrity.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-registry-integrity.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8eeee1e63456425", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-transfers.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-transfers.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1421f7c06afe6d3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-transfer-universities-cache.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-transfer-universities-cache.ts: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-d4fe4013fe566e5d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-benchmarks.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-benchmarks.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-2a2408cdd9365c80", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/eval-search-intent.ts:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/eval-search-intent.ts: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-e284d71fa20c0c61", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-assist-articulation.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-assist-articulation.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-279bab6d701c80d6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard-programs.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard-programs.ts: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-6791e21f8a367257", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/bench-transfer-lookup.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/bench-transfer-lookup.ts: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-5783409214cc74db", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:198"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6ba998a6014057a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:382", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:382"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bbf96b39cd5e2f8f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner8.ts:372", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner8.ts:372"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91d35f31b61a9dfa", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3f2928ce36c9628e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-jenzabar.ts:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-jenzabar.ts:130"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ffebe3102f07a76", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:223"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb1514de1408eff9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-programs.ts:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-programs.ts:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4cbf2ed092e32781", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-colleague.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-colleague.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5633286c85f441c7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts: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-d2daf5abe44f9368", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-jenzabar.ts:264", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-jenzabar.ts:264"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cb382231f5a2940", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:406", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:406"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ff22973f722fe65f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts: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-f605fe6466c30911", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ia/scrape-colleague.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ia/scrape-colleague.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-9db4839f8927fba4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:326", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:326"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8be57e6cfd7ace80", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:367", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:367"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e137f83f76f187dd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:347", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:347"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49e875a09d891448", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-eacc.ts:325", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-eacc.ts:325"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ad6c54cf3e83a78", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:166"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d57db6fb9ff7429e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:390", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:390"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee37dbf6c9dc0a75", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a0485d2112fb8d6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-programs.ts: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-3a49d5faac454d05", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:220"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1440b941f2671c37", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:433", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:433"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce9a68533081e2cc", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:311", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:311"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a28900f81db16eb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-colleague.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-colleague.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83a821b83034982d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:289"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e484d5f7499b5a1f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-267bbdb1cea96ff9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-catalog-prereqs.ts:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-catalog-prereqs.ts:204"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f0fb6b9a258e0ef", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.ts:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.ts:177"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1070fb08d0f34f13", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:394", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:394"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd59f991391f4abf", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts:175"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c25701505018de2c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:113"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25caa07ca3951418", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-programs.ts:142", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-programs.ts:142"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec4d6f8f4b17d44c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-other-programs.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-other-programs.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f48146a990c42a4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.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-69a87eef3051c98f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:599", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:599"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84613b6cf0ebbbc6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-step.ts:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-step.ts:269"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8787c269b347ea4f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-colleague.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-colleague.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-529c653148f80786", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:335", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:335"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2cfe85503233106", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-programs.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-programs.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a1e5343e3601a90", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:416", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:416"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac80eae7c5a404ee", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-banner8.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-banner8.ts: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-1e5a55b046d47de0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:153"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23bc25e2754804d7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-programs.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-programs.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-5cf09023d87dbf22", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-transfer-olemiss.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-transfer-olemiss.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e05697fc71474553", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:279"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85415392dfa3d9c3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts: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-2bf37833825a6dc1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-coursedog.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-coursedog.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-6a7e9efffd77d1fc", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:309", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:309"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b80129c61d2745b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts:420", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts: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-f96df2445590f8b7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/patch-mdc-campus.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/patch-mdc-campus.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a873d63be3d27d6b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts: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-5565b72b22a0c1be", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:316", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:316"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fe6dd99e8b0a262", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-banner8.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-banner8.ts: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-b7b44aafb21daa40", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-transfer-ccn.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-transfer-ccn.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf2532bab7a07a42", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-cdkc.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-cdkc.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66e50c6a42533a8b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts:135"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15f5787bb3f517e5", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:193"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba924bf05f1f5e8c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-cleancatalog-programs.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-cleancatalog-programs.ts: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-1af37d5fe4e2df5e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-usg.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-usg.ts:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ad59d28ec6288d0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:132"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05930e627460d668", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:358", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:358"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e8162e1a2ec8171", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cc0a0b696681fb72", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-programs.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-programs.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ba09042ba088caa", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-nimble-cms-programs.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-nimble-cms-programs.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c42becb6367ca329", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:146", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:146"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-626a6e0b55ff591f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:387", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:387"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8158980a87b1f601", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:298"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d367c907ef9247b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7dc07caf96a0eaeb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e68c9bee8d88cd1b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-catalog-prereqs.ts:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-catalog-prereqs.ts:198"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6f27d3a2b16e519", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-programs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-programs.ts: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-21b3f5d9332f8840", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-colleague.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-colleague.ts: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-aa80bd87ed6b7c22", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-banner8.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-banner8.ts: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-10fc6607309df694", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.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-752553ec86677c5c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-lctcs-banner-ssb.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-lctcs-banner-ssb.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-4e66cdabcb6c48fd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-coursedog.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-coursedog.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-948848f0393996b4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts: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-5b9c9d6383d19448", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd159109ce2ebf32", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3674e40e0e91a3d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts: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-34e3fda1cdc96706", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:221"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8716b9a2e16c260f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-colleague.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-colleague.ts: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-b496c811b98113b0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:271", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:271"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f25de505f7df7f7e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-84a9541ca5fd927a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:269"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75a8139ed823c877", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-banner-ssb.ts:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-banner-ssb.ts: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-f5dd2284132e45f7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:449", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:449"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b83c860c68b78cb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-programs.ts:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-programs.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-c96b0d19b64d8341", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:272", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:272"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61be029d042c7f44", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-colleague.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-colleague.ts: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-9d993e1cee38ef8c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts: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-311b79b5b6ac6d2a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-iecc.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-iecc.ts: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-52f41b73ef078991", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:229"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cca92f96ea4735f0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/sweep-stale-terms.ts:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/sweep-stale-terms.ts:211"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1c64294d120a439", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:389", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:389"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc6721857e7fdb29", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43a039cdfc7df27a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/http-retry.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/http-retry.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76a4665fedd9000b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:875", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:875"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3160dedd09be41ab", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:493", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:493"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e45600b34bef125", "name": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:261", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:261"}, "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-e357a616ee57d007", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:414", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:414"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a65f6547a4abdc64", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:315"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a207a59f1756fc3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-catalog.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-catalog.ts: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-17cb2ca8c6fab70a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:362", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:362"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73730ca0cfae1c0c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:407", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:407"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f9c5263c442914b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0dcd0ad3df94063a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:424", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:424"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3bc3ee895df61c1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:422", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:422"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8fa7c2079e6ac6e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts: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-17fdaa4f05a99c6a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scraper-matrix.ts:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scraper-matrix.ts: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-cd8143681d811bff", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:250", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:250"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9ad525e5ca13e26", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/coverage-expansion.ts:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/coverage-expansion.ts:173"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a8a2b53437a7ff4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/run-migration.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/run-migration.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f84fb2a5fc211d2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/refingerprint-sweep.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/refingerprint-sweep.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-161b02b03767195f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:326", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:326"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85d8550c5951a011", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts:378", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts: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-e1a99cf6d4afd2e9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts:407", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts:407"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95f10b5419686e41", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:445", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:445"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50c851495930efbd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:397", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:397"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-791d3280426a941b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:589", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:589"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3b5299fa2262e49", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts: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-04070cf9c8a8b982", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:515", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:515"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9723fd493aa80f9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:523", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:523"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bddeaf971d5eaba0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ababb5bde0abceda", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd79daf3bbc1f8e3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-37aa58b616bacaa1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-nimble-cms-programs.ts:369", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-nimble-cms-programs.ts:369"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52eb307e18518c37", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-state-sweep.ts:237", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-state-sweep.ts:237"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a604db39594ee86", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:275", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:275"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a35378e26491ae39", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:662", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:662"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-513b592d1c253a55", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/triage-scraper-health.ts:591", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/triage-scraper-health.ts:591"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25e160f7932d6250", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts: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-01170e7c3e55b467", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be0503e40b100c3d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/add-state.ts:284", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/add-state.ts:284"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a90d31ddb0ea89cf", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ebc3bfa8605dbed", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:550", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:550"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d1a85a9630fa279", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6101ff387178574", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-programs.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-programs.ts: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-0c6e536b5286ea26", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-rcsj.ts:299", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-rcsj.ts:299"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc14f43ff467f33c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-colleague.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-colleague.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-a814e6baf8da9146", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:260", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:260"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-906e3fcf2b3957f4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:621", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:621"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f9364b77f05dd94", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75e1b923edaab9ab", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-peralta.ts:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-peralta.ts:239"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09fb0110b923fa26", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts:244", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts:244"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf1a36dbeac6dc3c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts: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-04679504db9e6230", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:484", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:484"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c42f30ed9fbc5526", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:213"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6496961d7ddfa785", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:270"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2d8e1603e64205b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-deanza.ts:267", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-deanza.ts:267"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fb48da0e38146b9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs-acalog.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs-acalog.ts: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-319e48994600a9cf", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-transfers.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-transfers.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4cd252d81f88016", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15a757c97648edc5", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-mn-eservices.ts:262", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-mn-eservices.ts:262"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c2dc825cb6dcf4d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs.ts: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-d13b6da4c7fb291f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-colleague.ts:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-colleague.ts:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a5adc72ebe21d01", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-cccs-banner8.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-cccs-banner8.ts: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-09b1e1521333da3c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-programs.ts: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-151e7c974b465b86", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ecsu.ts:306", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ecsu.ts:306"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a92faf29ba057359", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.ts:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.ts:148"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f8079d45d988a65", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-uconn.ts:254", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-uconn.ts: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-2523a1259a960128", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2752ffda7306c690", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ccsu.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ccsu.ts:300"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5df58a2004cb3407", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts: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-627e90144a921017", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-scsu.ts:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-scsu.ts:141"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b1771871e07c2ebf", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-catalog-prereqs.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-catalog-prereqs.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d882debb3db74cf1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-programs.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-programs.ts: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-923f30509a123d93", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts: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-e1121f0a130360df", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:181"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-420ea5b4e14fbc01", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts: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-6a83c6cae9e9c9fd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f02adcd8209051a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-uhcc.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-uhcc.ts: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-4eafcd6ef0812557", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8fd20f09b27c220", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:315"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-045f5f068a33566b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.ts:404", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.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-034ad846594cb667", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer-mainestreet.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer-mainestreet.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4aedfb4f936deee", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:277"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5613cbc1568d20a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-banner8.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-banner8.ts: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-830b1b714db5471a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-campusnexus.ts:379", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-campusnexus.ts:379"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-703d4907dd43b0b2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-programs.ts: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-e82586b436f6ce21", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-transfer-ccns.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-transfer-ccns.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e192092ee8161fa2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-transfer-marshall.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-transfer-marshall.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e18950486b3d9049", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:276", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:276"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2103d4f15a3e8c40", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-colleague.ts:242", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-colleague.ts:242"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc27c3cea195e9b3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts: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-e8a91b4e5d941644", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.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-0a6ac19c4e983930", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1feb0bb14934f506", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-colleague-subdomains.ts:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-colleague-subdomains.ts: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-7b70dc00d454b569", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e334f37109bb867", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:123"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75f4985694f7e35f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-registration-systems.ts:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-registration-systems.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-3a0855ed831e0ad2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20249fc400dbc237", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d912cd6eea18de4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:125"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2edcd522ea03d7a6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/_discover-cns-api.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/_discover-cns-api.ts: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-2a1415c2998d201d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts: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-e98463d99533664a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.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-203726761c6cc691", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts: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-e5b5f79c5b5be13f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.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-3436dca8fadce595", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:217"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e4bda40630610cc", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-75d83a01ecea05eb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e59dbcbc5c6c9ed8", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-950cabbc6b0b6960", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d546d890c036a4fb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-programs.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-programs.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-4c506c9e2c58f120", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:281", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:281"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ade2b3cb6e7b98ad", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-southeast-tech.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-southeast-tech.ts:175"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-062f84a5aedba69d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-colleague.ts:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-colleague.ts: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-27407fb2bed3ec8a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-universities.ts:245", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-universities.ts:245"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ba6e7d8ec52c741", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/discover-sc-systems.ts:203", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/discover-sc-systems.ts:203"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a3e07be1cdc7099", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:313", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:313"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b563c1df26b03d2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:258", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:258"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65c200d607295b18", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts: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-f3556ad31c75b3fc", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:251"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a024a0bfe78447d5", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-midlands.ts:182", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-midlands.ts:182"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef706d2ff5ff4050", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:101"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-020caa302a5ce484", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-programs.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-programs.ts: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-f47206bbd03be92c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:270"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-388847cd5e0bc442", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-colleague.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-colleague.ts: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-9dbeb5556ea6ff20", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8599d3339246583f", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:101"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43bce17bdcd3840e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:159"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a5d52f390c1c70c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-klamath.ts:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-klamath.ts:169"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f8aef26e3dc56bc", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:208"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34c477fb6cb89cb5", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ok/scrape-transfer-ocep.ts:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ok/scrape-transfer-ocep.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-e8b98ecb08e7c3d3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9efd6c5952439e27", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:164"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b55be7b2e15bb8e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner-ssb9.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner-ssb9.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-d2339562bf799d3a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-nv-transfers.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-nv-transfers.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d631e1614e04c130", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-catalog-prereqs.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-catalog-prereqs.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4477cd50dcd0230", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-programs.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-programs.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1629ad9e3f85226d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-peoplesoft.ts:557", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-peoplesoft.ts:557"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-34dc666aa4903d04", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:174"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4691e7a475a2cea3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.ts:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.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-a268610f6c684316", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-catalog-prereqs.ts:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-catalog-prereqs.ts:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e324051f3350731", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-programs.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-programs.ts: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-a433bd479acdf2d9", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-colleague.ts:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-colleague.ts: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-116e9fe9deea93a7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-programs.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-programs.ts: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-fe35bf43cb1f14be", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts: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-422b51be795fd6cd", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:367", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:367"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bca87a03f47c2abe", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:425", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:425"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a059e027a6749698", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-catalog-prereqs.ts:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-catalog-prereqs.ts:235"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-020052dac268bdf0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-programs.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-programs.ts: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-2355648bdc06811d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:368", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:368"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99d3ddc5e40397df", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-collegetransfer.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-collegetransfer.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f772a6682950518", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:289"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7798c60e6adc9ce2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-catalog-prereqs.ts:265", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-catalog-prereqs.ts:265"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce0d0d2e46764b43", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-programs.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-programs.ts: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-f3dca50b2a0d4ab3", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:124"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a344fd84213d7c76", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:202"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a3a80d334f8069b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-ndus.ts:406", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-ndus.ts:406"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f053ae01cc53a394", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-nd-programs.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-nd-programs.ts: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-e67ed518d46d175d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-catalog-prereqs.ts:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-catalog-prereqs.ts:197"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa287e7a90b17c8b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts:195"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-820ac9951eda463a", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-smartcatalogiq-programs.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-smartcatalogiq-programs.ts:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-119e4f3bb19dbe25", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:264", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:264"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6da5b1f7a7ed615e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:325", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:325"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98214a071ddee891", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts: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-5899ef124d399fa0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-coursedog-programs.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-coursedog-programs.ts:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c394538dc0b123ec", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:246"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35a228a998e4df7d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-courseleaf-programs.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-courseleaf-programs.ts: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-40fafeaac19697c7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:187"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-151b633417c4bb49", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-programs.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-programs.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-0cb740b2c65cd216", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bc50257eea0ac82", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:236", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts: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-051255d6052391eb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:373", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:373"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae8d70db774b428b", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts: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-f38c4763ad14bb8e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:279", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:279"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a51392e4f4a8769", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:477", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:477"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92916d1b83c582ec", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-catalog-prereqs.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-catalog-prereqs.ts:252"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-70755ff0966bd0ad", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-programs.ts:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-programs.ts:136"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02b6165faad45517", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:353"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7d02927f9eecb31", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-mtsu.ts:210", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-mtsu.ts:210"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee2d9ade6ff5a71e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:122"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4a167e579a8a322", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts: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-8a668faf594b1d9e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:302"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33aae74cb92b4c27", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4029afcd491fdba1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-colleague.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-colleague.ts: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-8272ded9492e80de", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:226"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6bed6faef74c72b1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:90"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5883e62ddec45393", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:277"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c716592a841ad993", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:221"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36b013a0bd4612fe", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-courseleaf-prereqs.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-courseleaf-prereqs.ts:158"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5559311432c847e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-62b2858cc7f83615", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5356c385bf7071e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-howard.ts:222", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-howard.ts:222"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aab82fba1a62d8d2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts:537", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts:537"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f64a7e7aa9e683a6", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:363", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:363"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7da6addc4d4212d", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a95f1bdcd1ee768", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:248"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68444ba51ef10291", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:268", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:268"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d191b62a4fadde0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.ts:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.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-33c165c2dce4e653", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d40ab8d35fabae02", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7378a5d4868dac0", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/_ps-summer-probe.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/_ps-summer-probe.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-2d7716dba00659d4", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts: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-4edc4aa9b41a7c1e", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/discover-ps-responses.ts:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/discover-ps-responses.ts:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49bf80497551f213", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-courseleaf-programs.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-courseleaf-programs.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9e32e6f753dda29", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-umw.ts:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-umw.ts:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8a1c4a2eb70785c", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts: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-eb0ce2e8137a0070", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts: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-c665d8e8ce0b1ad7", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.ts: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-7470f4b6ad9d7dea", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-programs.ts:212", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-programs.ts:212"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0be82031ad7f07ff", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:502", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:502"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6772fe52e0e6610", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vccs.ts:327", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vccs.ts:327"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64e954c233b08d94", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:598", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:598"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-be06b7d29e8773c2", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:460", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:460"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e27ba8c1811ee96", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-catalog-prereqs.ts:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-catalog-prereqs.ts:201"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e938a202999582c1", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:453", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:453"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-282d440be2decdeb", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-665fb198dd3629c1", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/PrereqFlowChart.tsx:181", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/PrereqFlowChart.tsx:181"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3e8969d00a29490", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/AnswerCard.tsx:432", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/AnswerCard.tsx:432"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-545a637c5287cc14", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/JsonLd.tsx:18", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/JsonLd.tsx:18"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b206f14ed328e120", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ProgramRequirements.tsx:21", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ProgramRequirements.tsx:219"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8847439a3e51272c", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:54", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:54"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38f5dbb92581220a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6e9388e865ac8ef6", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/CourseTable.tsx:285", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/CourseTable.tsx:285"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85973a6f94c7addd", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ScheduleBuilder.tsx:281", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ScheduleBuilder.tsx:281"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f3e456a67ee09a6", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/WeeklyCalendar.ts", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/WeeklyCalendar.tsx:147"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b552b19987da9e26", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/ScheduleResults.t", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/ScheduleResults.tsx:611"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a71b5ab260ff2a6", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/auth/UserMenu.tsx:137", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/auth/UserMenu.tsx:137"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5679b99dabcca918", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/page.tsx:284", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/page.tsx:284"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85843fc445d70cab", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/page.tsx:98", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/page.tsx:98"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-15e632c5ccac3024", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/page.tsx:71", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/page.tsx:71"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4d24240bd44a02fa", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8bcb27d095ba5b3c", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:244", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:244"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5acc0ae33e50d071", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:162", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:162"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f2fbf89767e20b8f", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/account/AccountDashboard.tsx:613", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/account/AccountDashboard.tsx:613"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0312d5a5eae31ef", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/page.tsx:108", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/page.tsx:108"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-abd8e5efcc429c82", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/layout.tsx:59", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/layout.tsx:59"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c81b356ec52ce55", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1a318ee1be1cded0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2e046b2b214f7d41", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b98eace91b11fc19", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/to/[universityS", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:258"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-408c4be21af00313", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/compare/CompareT", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/compare/CompareTable.tsx:56"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57cb7da6f0931851", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.ts", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:293"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-61af6ed8d59d0ab3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4eb89cd8106819d8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0033a61a4e9d86b3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b4238628955ef0e5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:26", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:265"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-51e4d3b197a31b98", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:433"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-926ea60ff2fa7ecc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:286"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cac235b153de18ec", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/pa", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx:108"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87d9f9f5c253ccae", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[pr", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:285"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d3ac5ccc8036fd2", "name": "\"active\" state uses light bg in a dark theme \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/program/[slug]/Pla", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/program/[slug]/PlanClient.tsx:219"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7d8499a5fc9e21c1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:4", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:424"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3d07743dd75db4e7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:267"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c2eb956948c77357", "name": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoo", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoonClient.tsx:370"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-729cc4e76b23fef2", "name": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ms/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ms/config.ts:11"}, "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-f14673d8e05de908", "name": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/il/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/il/config.ts:11"}, "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-5372dc371009871c", "name": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/co/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/co/config.ts:11"}, "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-ac0cc645c48867b6", "name": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ky/config.ts:11", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ky/config.ts:11"}, "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-3b5e872f32207a08", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts:1", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15cba9f0a5fcb814", "name": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/collect-audit-data.ts:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/collect-audit-data.ts:769"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a07d83ad7ef25a9e", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/grade-snapshot.test.ts:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/grade-snapshot.test.ts:184"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9bcc78ef08fbd55", "name": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/collect-audit-data.ts:791", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/collect-audit-data.ts:791"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f6cd08fa8d1eb4b0", "name": "Analyzer timeout: security.gitleaks", "shortDescription": {"text": "Analyzer timeout: security.gitleaks"}, "fullDescription": {"text": "analyzer exceeded 60.0s wall-clock (thread mode \u2014 daemon abandoned). Bump REPOBILITY_ANALYZER_TIMEOUT_S if expected."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c05ddac31c577df7", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.app.html:434", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.app.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-527cae9a5bfccf51", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.html:439", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.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-d17114cd0c25bc94", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:162", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:162"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba5e7bbea2065020", "name": "Insecure pattern 'insert_adjacent_html' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:175", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:175"}, "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-55075fdd3cd324ad", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/courses.html:127", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/courses.html:127"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-75433ee8ad63fb71", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/transfers.html:231", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/transfers.html:231"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eea53d0ff82b5db0", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/choose.html:150", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/choose.html: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-e597853a53d06a01", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/schedule.html:313", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/schedule.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-f94a07c6b124361a", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/program.html:224", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/program.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-dfaf996799187d0a", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/prereqs.html:172", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/prereqs.html:172"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-db3ff9ec0670e652", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/concept-nav.js:29", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/concept-nav.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-c36084f01ee4b4ad", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/home-search.html:160", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/home-search.html:160"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3de302c04d4a47ff", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/us-map.html:94", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/us-map.html: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-9e2abcce1054dfb4", "name": "Insecure pattern 'node_child_process' in scripts/ne/scrape-lptc.ts:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ne/scrape-lptc.ts:19"}, "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-5c5192ad23bff6a5", "name": "Insecure pattern 'node_child_process' in scripts/ar/scrape-uaccm.ts:47", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-uaccm.ts:47"}, "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-57480df1608c31db", "name": "Insecure pattern 'node_child_process' in scripts/ar/scrape-seark-pdf-programs.ts:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-seark-pdf-programs.ts:40"}, "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-26425332a5cc08f6", "name": "Insecure pattern 'node_child_process' in scripts/ar/scrape-npc.ts:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-npc.ts:32"}, "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-6bdc96c0bcc20ed2", "name": "Insecure pattern 'node_child_process' in scripts/ga/scrape-tcsg-pdf-programs.ts:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ga/scrape-tcsg-pdf-programs.ts:34"}, "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-0c55ec7d3e7badc4", "name": "Insecure pattern 'node_child_process' in scripts/az/scrape-dine.ts:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/az/scrape-dine.ts: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-cdaf23f53ad72e52", "name": "Insecure pattern 'node_child_process' in scripts/lib/state-health-rollup.ts:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/state-health-rollup.ts:32"}, "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-62a09f1bbedc33f3", "name": "Insecure pattern 'node_child_process' in scripts/lib/check-prereq-regression.ts:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/check-prereq-regression.ts:23"}, "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-946594507ee5d8df", "name": "Insecure pattern 'node_child_process' in scripts/lib/check-scrape-health.ts:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/check-scrape-health.ts:40"}, "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-e2e8a0e507f701b1", "name": "Insecure pattern 'node_child_process' in scripts/lib/fetch-zipcodes.ts:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/fetch-zipcodes.ts:35"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2fdeea4bc77c02e9", "name": "Insecure pattern 'node_child_process' in scripts/lib/backfill-state-health-history.ts:45", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/backfill-state-health-history.ts:45"}, "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-11e00c09ce4f389c", "name": "Insecure pattern 'node_child_process' in scripts/lib/scrape-diff.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/scrape-diff.ts:29"}, "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-ab18664c74377614", "name": "Insecure pattern 'node_child_process' in scripts/lib/add-state.ts:59", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/add-state.ts:59"}, "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-e031d637ed3e9dba", "name": "Insecure pattern 'node_child_process' in scripts/ct/scrape-transfer-all.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ct/scrape-transfer-all.ts:24"}, "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-ce4e7afcda85a650", "name": "Insecure pattern 'node_child_process' in scripts/dc/scrape-programs.ts:41", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/dc/scrape-programs.ts:41"}, "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-029d63c9306620ff", "name": "Insecure pattern 'node_child_process' in scripts/me/scrape-catalog-prereqs.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/me/scrape-catalog-prereqs.ts:29"}, "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-4425867aec4b2a45", "name": "Insecure pattern 'node_child_process' in scripts/nm/scrape-sipi-pdf.ts:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nm/scrape-sipi-pdf.ts:27"}, "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-e4cb634649584308", "name": "Insecure pattern 'node_child_process' in scripts/wv/scrape-eastern-wv.ts:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/wv/scrape-eastern-wv.ts:28"}, "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-9ded89daa8105c43", "name": "Insecure pattern 'node_child_process' in scripts/nc/scrape-tri-county.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-tri-county.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d826acc723da2369", "name": "Insecure pattern 'node_child_process' in scripts/nc/scrape-transfer-wingate.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-transfer-wingate.ts:17"}, "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-135c0552f045d962", "name": "Insecure pattern 'node_child_process' in scripts/nc/scrape-cleveland.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-cleveland.ts:14"}, "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-9afaa97925ca1dc7", "name": "Insecure pattern 'node_child_process' in scripts/nc/scrape-martin.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-martin.ts:14"}, "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-28eb6391a86aa558", "name": "Insecure pattern 'node_child_process' in scripts/nc/scrape-pamlico.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-pamlico.ts:13"}, "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-488a1384090e43be", "name": "Insecure pattern 'node_child_process' in scripts/sd/scrape-oglala-lakota.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sd/scrape-oglala-lakota.ts:21"}, "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-9f02109cc1333766", "name": "Insecure pattern 'node_child_process' in scripts/sc/scrape-northeastern-pdf.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sc/scrape-northeastern-pdf.ts:21"}, "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-31c29fe8be0c0030", "name": "Insecure pattern 'node_child_process' in scripts/sc/scrape-williamsburg-pdf.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sc/scrape-williamsburg-pdf.ts:24"}, "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-4b4050c9c9634615", "name": "Insecure pattern 'node_child_process' in scripts/nd/scrape-transfer-gerta.ts:38", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/nd/scrape-transfer-gerta.ts:38"}, "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-2a3e54b304d537d7", "name": "Insecure pattern 'node_child_process' in scripts/ma/scrape-massasoit-programs.ts:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ma/scrape-massasoit-programs.ts:25"}, "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-04773b3cf927a875", "name": "Insecure pattern 'node_child_process' in scripts/ma/scrape-qcc-pdf-programs.ts:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ma/scrape-qcc-pdf-programs.ts:34"}, "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-0a87fe6547c1a2d3", "name": "Insecure pattern 'node_child_process' in scripts/tn/scrape-jscc-pdf-programs.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/tn/scrape-jscc-pdf-programs.ts:24"}, "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-8336f31d74b6c18c", "name": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-all.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-all.ts:20"}, "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-1c20ee90879d3073", "name": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-apsu.ts:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-apsu.ts:26"}, "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-55c6b03713f20cdd", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-hccs.ts:375", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-hccs.ts:375"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3879bcb6e5585daf", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-cisco.ts:129", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-cisco.ts: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-0c2ac6868023eb68", "name": "Insecure pattern 'node_child_process' in scripts/tx/scrape-brazosport.ts:57", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/tx/scrape-brazosport.ts:57"}, "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-9258a912f7daa5d7", "name": "Insecure pattern 'node_child_process' in scripts/tx/scrape-frank-phillips.ts:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/tx/scrape-frank-phillips.ts:27"}, "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-ce030af76fa18798", "name": "Insecure pattern 'node_child_process' in scripts/ks/scrape-colby.ts:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ks/scrape-colby.ts:26"}, "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-482810e2c0c1be24", "name": "Insecure pattern 'node_child_process' in scripts/va/scrape-camp-pdf-programs.ts:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/va/scrape-camp-pdf-programs.ts:31"}, "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-b8d52c5fbf6d597c", "name": "Insecure pattern 'node_child_process' in scripts/va/scrape-vhcc-pdf-programs.ts:36", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/va/scrape-vhcc-pdf-programs.ts:36"}, "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-65b6d8436bccccf4", "name": "Insecure pattern 'dangerous_innerhtml' in components/JsonLd.tsx:18", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/JsonLd.tsx:18"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed3fef987c87d940", "name": "Insecure pattern 'dangerous_innerhtml' in components/Breadcrumbs.tsx:32", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/Breadcrumbs.tsx:32"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc0c93dfdd4e608c", "name": "Insecure pattern 'document_write' in components/PrintInstructions.tsx:114", "shortDescription": {"text": "Insecure pattern 'document_write' in components/PrintInstructions.tsx:114"}, "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-5061249cbb5af2ba", "name": "Insecure pattern 'dangerous_innerhtml' in components/ChooseQuiz.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in components/ChooseQuiz.tsx:58"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a95c829a187eadd", "name": "Insecure pattern 'dangerous_innerhtml' in app/page.tsx:100", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/page.tsx:100"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cbe5def1344fe023", "name": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:115", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:115"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d7ccd89f9c53bb93", "name": "Insecure pattern 'dangerous_innerhtml' in app/blog/page.tsx:71", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/blog/page.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-bbabe9743e18a8c5", "name": "Insecure pattern 'dangerous_innerhtml' in app/blog/[slug]/page.tsx:146", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/blog/[slug]/page.tsx:146"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6de40d4cf1b3c97c", "name": "Insecure pattern 'dangerous_innerhtml' in app/colleges/page.tsx:162", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/colleges/page.tsx:162"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93d0a5453e0a8ad8", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/page.tsx:133", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/page.tsx:133"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dc1b2c159c343ec3", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/layout.tsx:71", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/layout.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-416efa37f71041a2", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/about/page.tsx:92", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/about/page.tsx:92"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f74e0199cde9c5aa", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/colleges/page.tsx:80", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/colleges/page.tsx:80"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c3141d75341e326f", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/page.tsx:113", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/page.tsx:113"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ee6885b23d1ab91e", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/to/[universitySlug]/page.tsx:239", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/to/[universitySlug]/page.tsx:239"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e44648ae71ffa1b7", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/subject/[prefix]/page.tsx:299", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/subject/[prefix]/page.tsx:299"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-debeff16686edb51", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/programs/page.tsx:151", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/programs/page.tsx:151"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-07f5cee3f7798b8b", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/online/page.tsx:110", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/online/page.tsx:110"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-978cef1fd0b06204", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/courses/page.tsx:258", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/courses/page.tsx:258"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8c5c5b560bb4556b", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/page.tsx:278", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/page.tsx:278"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d4405bc4573d14e", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/instructor/[slug]/page.tsx:284", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/instructor/[slug]/page.tsx:284"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-413acc5f1215bc19", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/programs/page.tsx:108", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/programs/page.tsx:108"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-16b3b01dce8213e8", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/courses/[prefix]/page.tsx:259", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/courses/[prefix]/page.tsx:259"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8ce160a6b115e290", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/course/[code]/page.tsx:451", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/course/[code]/page.tsx:451"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-518a99f270e93c3e", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/plan/page.tsx:74", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/plan/page.tsx:74"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b548fa3f5d4caca", "name": "Insecure pattern 'dangerous_innerhtml' in app/[state]/program/[slug]/page.tsx:287", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/program/[slug]/page.tsx:287"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd98b234f6e30783", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:47", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:47"}, "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-ff88442dc0c36dc8", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:40"}, "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-c3424051a05f350d", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:32"}, "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-ad215aee59c7c76e", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:34"}, "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-e132dbf0a831aa56", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts: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-88edf586b30ad47b", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:32"}, "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-9c8545c827e9bb1c", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts:23"}, "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-961c15fb3084d1c2", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:40"}, "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-654c2935f62b7cdd", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:35"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-788115f7e5f3e3d7", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:45", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:45"}, "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-c33b104a630ada90", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:21"}, "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-e438a424347bd081", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:59", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:59"}, "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-94ea6a8bd1481d4c", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts:24"}, "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-e8c7bc6e4e8febbb", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:29"}, "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-50c96d01378b530e", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:27"}, "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-94b6a5b1c8f0eb27", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:28"}, "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-e3911440364530e7", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ece91843f671b851", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:17"}, "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-7139c82fb1e152c8", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:14"}, "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-e685a175c9b80c47", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:14"}, "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-46f576f67c118cb4", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:13"}, "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-4a7a916e0e97dabe", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:21"}, "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-e2f291f514a03311", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:21"}, "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-65b598137c5a3f61", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:24"}, "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-e624eb69041d4797", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:38", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:38"}, "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-2314a851a3d53f95", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:25"}, "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-55739bbe57c32cc5", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:34"}, "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-9cc6b37f005a5daf", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:24"}, "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-7db23503b6504c6d", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:20"}, "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-d454e0b1c446342a", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:26"}, "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-ebb1662fffdec081", "name": "Insecure pattern 'direct_innerhtml_assignment' in .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:375", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:375"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22bdc1cf218da864", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:31"}, "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-ba4ddf9a6ac9132f", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:36", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:36"}, "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-954710ff30795bae", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/JsonLd.tsx:18", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/JsonLd.tsx:18"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5d196ea7e8de793d", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-80ea1aef37b37e52", "name": "Insecure pattern 'document_write' in .claude/worktrees/saved-plans/components/PrintInstructions.tsx:114", "shortDescription": {"text": "Insecure pattern 'document_write' in .claude/worktrees/saved-plans/components/PrintInstructions.tsx:114"}, "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-e0b62ea969227f75", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/page.tsx:98", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/page.tsx:98"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f453c58550206b85", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/page.tsx:71", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/page.tsx:71"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c0bf7dc4e0c3e86d", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1ddc2f7e1f7e9dd", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/colleges/page.tsx:162", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/colleges/page.tsx:162"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f47ec27e4568a6e0", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/page.tsx:108", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/page.tsx:108"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8f230e67e9f897c3", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/layout.tsx:59", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/layout.tsx:59"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19109c9deee03257", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a5d408fe81326a13", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33d873d92d01fe70", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0ea6b2a35dc7df9a", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.ts", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:258"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6cc05bcc70f2f474", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:293", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:293"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6957d91380232c4e", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b25d5b2f37ea5c50", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f1e671a5f1e906a4", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-220fe82a4aaab53b", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:265", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:265"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a32cd47fa260c3df", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:286"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c38f909bc3f3535b", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx:108", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx:108"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1ad8124e91b159a7", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.t", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:285"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d1aff12baf5f66ed", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:424", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:424"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c38bfbf02afe0b08", "name": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:267", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:267"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dd8ecb6419e55034", "name": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts:24"}, "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-347829e86bb39548", "name": "Insecure pattern 'node_child_process' in .claude/skills/state-audit/scripts/grade-snapshot.test.ts:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/skills/state-audit/scripts/grade-snapshot.test.ts:24"}, "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-547efce1791071de", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cd973c4f1a174189", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8e3191fa94751fb7", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-29c0cf6369080995", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c96adf58093eeee", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fe99a730dceee720", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59a785a7ba586834", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e69c5910724b0403", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-acc23e5d93c8e965", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27f36f630a1284ab", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-daf3f018d762af12", "name": "Very large file: scripts/lib/add-state.ts (1401 lines)", "shortDescription": {"text": "Very large file: scripts/lib/add-state.ts (1401 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-d4fdfe53b7e55d29", "name": "Very large file: app/[state]/courses/CourseSearchClient.tsx (1195 lines)", "shortDescription": {"text": "Very large file: app/[state]/courses/CourseSearchClient.tsx (1195 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-236837c99950d23f", "name": "Very large file: .claude/worktrees/saved-plans/scripts/lib/add-state.ts (1401 lines)", "shortDescription": {"text": "Very large file: .claude/worktrees/saved-plans/scripts/lib/add-state.ts (1401 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-6d996376716b57c7", "name": "Very large file: .claude/worktrees/saved-plans/content/blog/index.ts (2295 lines)", "shortDescription": {"text": "Very large file: .claude/worktrees/saved-plans/content/blog/index.ts (2295 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-5e2131e3c2d80a06", "name": "Very large file: content/blog/index.ts (2477 lines)", "shortDescription": {"text": "Very large file: content/blog/index.ts (2477 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "114 test file(s) for 1477 source file(s) (ratio 0.08). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1b572cdccf1403d4", "name": "45 TODO/FIXME markers", "shortDescription": {"text": "45 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 8273 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 347 placeholder/mock markers across 113 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.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-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.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-8d0a025b7eaf3bd2", "name": "Agent authority lacks a verifier contract: .claude/rules/supabase.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/rules/supabase.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-80ab64bd5d9c1812", "name": "Agent authority lacks a verifier contract: .claude/agents/state-health-triage.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/state-health-triage.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-00156ffb3a8121df", "name": "Agent authority lacks a verifier contract: .claude/skills/blog-pipeline/references/triggers.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/blog-pipeline/references/triggers.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-b4bca6e0b651c610", "name": "Commented-code block (5 lines) in eslint.config.mjs:15", "shortDescription": {"text": "Commented-code block (5 lines) in eslint.config.mjs:15"}, "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-f731c51fced98c5b", "name": "Commented-code block (7 lines) in proxy.ts:73", "shortDescription": {"text": "Commented-code block (7 lines) in proxy.ts:73"}, "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-910305d37f9aacb1", "name": "Commented-code block (16 lines) in next.config.ts:7", "shortDescription": {"text": "Commented-code block (16 lines) in next.config.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ed7d085071fd9b74", "name": "Commented-code block (6 lines) in __tests__/proxy.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in __tests__/proxy.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b4b6034e9bf276f3", "name": "Commented-code block (5 lines) in scripts/ingest-bls.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ingest-bls.ts:111"}, "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-cf49a6e6750e055f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ingest-bls.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ingest-bls.ts:86"}, "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-65a0e1487ce9cbfa", "name": "Commented-code block (5 lines) in scripts/scorecard-map.ts:207", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scorecard-map.ts:207"}, "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-373adf14bb6aea95", "name": "Commented-code block (6 lines) in scripts/check-prod-health.ts:37", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-prod-health.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d780debbf903fac", "name": "Commented-code block (6 lines) in scripts/build-transfer-universities-cache.ts:35", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/build-transfer-universities-cache.ts:35"}, "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-f564f087e5057197", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-colleague.ts:225", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-colleague.ts:225"}, "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-a7faaa7ffc5c739c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-transfer-artsys.ts:253", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-transfer-artsys.ts:253"}, "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-bea2ea1972edce1d", "name": "Commented-code block (5 lines) in scripts/md/scrape-custom.ts:150", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/md/scrape-custom.ts:150"}, "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-45343142d1638dfa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-custom.ts:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-custom.ts:163"}, "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-21ef29c97afdd56c", "name": "Commented-code block (5 lines) in scripts/md/scrape-jenzabar.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/md/scrape-jenzabar.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e3a8ae3d5ca405c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-jenzabar.ts:259", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-jenzabar.ts:259"}, "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-5ddebd15056909eb", "name": "Commented-code block (5 lines) in scripts/md/scrape-banner-ssb.ts:481", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/md/scrape-banner-ssb.ts:481"}, "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-56236cbd45d73d9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-ccbc.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-ccbc.ts:52"}, "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-b4221e1743383a99", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/id/scrape-transfer.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/id/scrape-transfer.ts:96"}, "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-6fa99a3dcf444ae6", "name": "Commented-code block (15 lines) in scripts/id/scrape-programs.ts:64", "shortDescription": {"text": "Commented-code block (15 lines) in scripts/id/scrape-programs.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d900ef720ddc73ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mo/scrape-transfer-core42.ts:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mo/scrape-transfer-core42.ts:116"}, "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-8ea3dd07e2ce27ae", "name": "Commented-code block (5 lines) in scripts/wa/scrape-ctclink.ts:473", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/wa/scrape-ctclink.ts:473"}, "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-cb775cf47e82eb5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-ctclink.ts:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-ctclink.ts:248"}, "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-32ab562535d3e718", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-transfer-uw.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-transfer-uw.ts:110"}, "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-0789677ca4bf4f75", "name": "Commented-code block (7 lines) in scripts/wa/scrape-catalog-prereqs.ts:41", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/wa/scrape-catalog-prereqs.ts:41"}, "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-ae27c00e59aa56b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-catalog-prereqs.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-catalog-prereqs.ts:16"}, "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-ee9e5c7401ee0a9a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-wncc.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-wncc.ts:71"}, "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-3a6b3d4612567ded", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-lptc.ts:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-lptc.ts:69"}, "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-f6e300322f12e487", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-nicc.ts:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-nicc.ts:61"}, "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-9e95189cbf5993f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-transfer.ts:94", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-transfer.ts:94"}, "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-155c0293f77b36fd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-mpcc.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-mpcc.ts:68"}, "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-95682bae8e2d485d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uni.ts:41", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uni.ts:41"}, "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-8a74acdbbceb9fba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uiowa.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uiowa.ts:67"}, "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-58beaa678320b046", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-transit.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-transit.ts:106"}, "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-15e7d221c65cd642", "name": "Commented-code block (5 lines) in scripts/ar/scrape-transfer-acts-catalogs.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-transfer-acts-catalogs.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ae87457a7b873976", "name": "Commented-code block (11 lines) in scripts/ar/scrape-ozarka.ts:189", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/ar/scrape-ozarka.ts:189"}, "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-54bcbbf032d2936a", "name": "Commented-code block (5 lines) in scripts/ar/scrape-nwacc.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-nwacc.ts:59"}, "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-c5efb228dc8c3f86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ar/scrape-nwacc.ts:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ar/scrape-nwacc.ts:167"}, "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-0795fafeed8d393a", "name": "Commented-code block (5 lines) in scripts/ar/scrape-seark-pdf-programs.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-seark-pdf-programs.ts:84"}, "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-3819f61e78436c0e", "name": "Commented-code block (9 lines) in scripts/ar/scrape-transfer-asu-jonesboro.ts:88", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/ar/scrape-transfer-asu-jonesboro.ts:88"}, "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-10d26629b2878186", "name": "Commented-code block (8 lines) in scripts/ar/scrape-transfer-acalog-harvest.ts:76", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/ar/scrape-transfer-acalog-harvest.ts:76"}, "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-afe0901c7383141c", "name": "Commented-code block (5 lines) in scripts/ar/scrape-ua-powerbi.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-ua-powerbi.ts:95"}, "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-97bf33d2d9833a21", "name": "Commented-code block (8 lines) in scripts/ar/scrape-npc.ts:70", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/ar/scrape-npc.ts:70"}, "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-98b6e306269366f3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-westmoreland.ts:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-westmoreland.ts:127"}, "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-ee19fb5b66956288", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-transfer.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-transfer.ts:72"}, "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-df94a15c8efbbd68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-northampton.ts:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-northampton.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-7e2ae039c1f0ed2b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-pitt-tes.ts:180", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-pitt-tes.ts:180"}, "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-850cdedb2489a90e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cayuga.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cayuga.ts: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-57d97c5a451c6a30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-herkimer.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-herkimer.ts:67"}, "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-b4c822053fc00509", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-suny-acalog-prereqs.ts:172", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-suny-acalog-prereqs.ts:172"}, "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-569f1482ff373936", "name": "Commented-code block (5 lines) in scripts/ny/scrape-cuny.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ny/scrape-cuny.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b039823eb64c1cbe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cuny.ts:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cuny.ts:127"}, "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-67a6b4693abbbb08", "name": "Commented-code block (5 lines) in scripts/ny/scrape-catalog-prereqs.ts:446", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ny/scrape-catalog-prereqs.ts:446"}, "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-fb5abe364d9cd101", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-catalog-prereqs.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-catalog-prereqs.ts:13"}, "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-e1cde3d5bcb08cd1", "name": "Commented-code block (8 lines) in scripts/ny/scrape-transfer-trex.ts:260", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/ny/scrape-transfer-trex.ts:260"}, "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-4f0d1b5045ab9eab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-transfer-trex.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-transfer-trex.ts:160"}, "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-79e322ff3af298df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-jones.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-jones.ts:96"}, "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-3a638da6ea50e102", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-prcc-bookstore.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-prcc-bookstore.ts:95"}, "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-06a313548d7bd713", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-mgccc.ts:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-mgccc.ts:131"}, "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-c903fd0951946581", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-catalog-prereqs.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-catalog-prereqs.ts:149"}, "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-4ebc2ed25fb46d9d", "name": "Commented-code block (6 lines) in scripts/ms/scrape-itawamba.ts:65", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ms/scrape-itawamba.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16e6041ea00f596b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-itawamba.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-itawamba.ts:59"}, "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-18175253053dfc1e", "name": "Commented-code block (7 lines) in scripts/ms/scrape-athena.ts:102", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/ms/scrape-athena.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1b1d5a2b0a77a824", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-athena.ts:182", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-athena.ts:182"}, "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-ce80f0c11e511e80", "name": "Commented-code block (5 lines) in scripts/fl/scrape-smartcatalogiq-programs.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-smartcatalogiq-programs.ts:74"}, "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-eb48532ea98cea03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts:58"}, "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-b3c92b51af7a6739", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-easternflorida.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-easternflorida.ts:71"}, "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-f220a00e8ebe0336", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-palmbeachstate.ts:217", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-palmbeachstate.ts:217"}, "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-6e046d953d1314c0", "name": "Commented-code block (5 lines) in scripts/fl/scrape-scns-flatfile.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-scns-flatfile.ts:33"}, "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-4b8e317e24cef606", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-scns-flatfile.ts:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-scns-flatfile.ts:168"}, "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-19de51438092beb6", "name": "Commented-code block (5 lines) in scripts/fl/discover-catalogs.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/discover-catalogs.ts:48"}, "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-3d08bea74c316705", "name": "Commented-code block (11 lines) in scripts/fl/scrape-tcc.ts:151", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/fl/scrape-tcc.ts:151"}, "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-d34b11b37c437fbe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-tcc.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-tcc.ts:100"}, "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-0c7faf9ec8029600", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-hccfl.ts:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-hccfl.ts:171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-661948f5552d4d32", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-spcollege.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-spcollege.ts:112"}, "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-593df65361588de2", "name": "Commented-code block (5 lines) in scripts/fl/scrape-seminolestate.ts:302", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-seminolestate.ts:302"}, "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-0e79c82a0423139b", "name": "Commented-code block (5 lines) in scripts/fl/scrape-mdc.ts:182", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-mdc.ts:182"}, "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-04e44aed8f47f21c", "name": "Commented-code block (7 lines) in scripts/fl/scrape-banner-ssb.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/fl/scrape-banner-ssb.ts:27"}, "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-32c5ea7f110b979c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-banner-ssb.ts:302", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-banner-ssb.ts:302"}, "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-da3aaa463af01be9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-nfc.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-nfc.ts: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-5571b3c59125bb1b", "name": "Commented-code block (5 lines) in scripts/fl/scrape-daytonastate.ts:169", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-daytonastate.ts:169"}, "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-1c7949589d823062", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-cf.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-cf.ts:122"}, "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-f02568d33f3fa629", "name": "Commented-code block (5 lines) in scripts/fl/enrich-courseleaf-titles.ts:125", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fl/enrich-courseleaf-titles.ts:125"}, "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-c2800599876d226b", "name": "Commented-code block (6 lines) in scripts/fl/scrape-broward.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/fl/scrape-broward.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c547ad92f09de043", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-broward.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-broward.ts:96"}, "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-798698906c46b7fa", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-lbhc.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-lbhc.ts:129"}, "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-b8fcce07d2988564", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:74"}, "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-ce9a3693f9f4fde9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-skc.ts:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-skc.ts: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-4d7d4c72e5b01632", "name": "Commented-code block (5 lines) in scripts/ga/scrape-smartcatalogiq-programs.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ga/scrape-smartcatalogiq-programs.ts:82"}, "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-9f9e5257d21e5cec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-uga.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-uga.ts:129"}, "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-77b2b485bbb3338d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gatech.ts:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gatech.ts:152"}, "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-82997c38caa20057", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-banner-ssb.ts:314", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-banner-ssb.ts:314"}, "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-91771a0fa8de9ada", "name": "Commented-code block (5 lines) in scripts/ga/scrape-transfer-gsu.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ga/scrape-transfer-gsu.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-5317a17b9d4f2b35", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gsu.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gsu.ts:110"}, "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-c48f4a1d1b6b4196", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts: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-4cf3341c48d3271b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-banner8.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-banner8.ts:80"}, "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-89fed36e777dd46a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer.ts:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer.ts:137"}, "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-dcd8ffe232957b84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer-keene.ts:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer-keene.ts:139"}, "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-7f2a3eccecca9ec2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/oh/scrape-transfer-osu.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/oh/scrape-transfer-osu.ts:95"}, "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-5ad92c2eaee8743b", "name": "Commented-code block (5 lines) in scripts/la/scrape-programs.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/la/scrape-programs.ts: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-79a9db0bd566ecdc", "name": "Commented-code block (5 lines) in scripts/la/scrape-regents-matrix.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/la/scrape-regents-matrix.ts:39"}, "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-7476dc5b38c86a72", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/la/scrape-regents-matrix.ts:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/la/scrape-regents-matrix.ts:119"}, "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-6992b7d944482e6c", "name": "Commented-code block (5 lines) in scripts/mi/scrape-colleague.ts:689", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/mi/scrape-colleague.ts:689"}, "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-c468e6a32983133a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-transfer-mitransfer.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-transfer-mitransfer.ts:133"}, "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-e161354c267adb17", "name": "Commented-code block (5 lines) in scripts/mi/scrape-smartcatalogiq-programs.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/mi/scrape-smartcatalogiq-programs.ts:74"}, "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-f0df1deb779071ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts:58"}, "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-043fafe7fe2efbf3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-banner-ssb.ts:283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-banner-ssb.ts:283"}, "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-61d7275b24edc585", "name": "Commented-code block (5 lines) in scripts/az/scrape-maricopa.ts:191", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/az/scrape-maricopa.ts:191"}, "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-ac00a8e83fcee3b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/az/scrape-jenzabar-cmc.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/az/scrape-jenzabar-cmc.ts:122"}, "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-eadc1d95489c2585", "name": "Commented-code block (5 lines) in scripts/az/scrape-transfer-aztransfer.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/az/scrape-transfer-aztransfer.ts:50"}, "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-4efa52a6637a8174", "name": "Commented-code block (7 lines) in scripts/az/scrape-dine.ts:245", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/az/scrape-dine.ts:245"}, "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-73937db542af8ab9", "name": "Commented-code block (7 lines) in scripts/il/scrape-ccc.ts:289", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/il/scrape-ccc.ts:289"}, "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-cfc5fb71e2c0c570", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-ccc.ts:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-ccc.ts:275"}, "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-87672ba8dbfd4aa5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-niu.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-niu.ts:99"}, "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-edb424091c3947ae", "name": "Commented-code block (5 lines) in scripts/il/scrape-smartcatalogiq-programs.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/il/scrape-smartcatalogiq-programs.ts:74"}, "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-1f3ae4feef121123", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-smartcatalogiq-programs.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-smartcatalogiq-programs.ts:58"}, "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-3a0477167df8f62e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-siu.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-siu.ts:135"}, "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-608f10778b9b83e4", "name": "Commented-code block (6 lines) in scripts/lib/scrape-colleague.ts:253", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-colleague.ts:253"}, "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-d56639d750904ca3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-colleague.ts:339", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-colleague.ts:339"}, "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-359a3f1dd67002db", "name": "Commented-code block (7 lines) in scripts/lib/supabase-import.ts:31", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/supabase-import.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-847f40a94cd7ed52", "name": "Commented-code block (5 lines) in scripts/lib/fingerprint-college.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/fingerprint-college.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e32e06ef2b4a7eae", "name": "Commented-code block (5 lines) in scripts/lib/scrape-smartcatalogiq-programs.ts:184", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/scrape-smartcatalogiq-programs.ts:184"}, "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-8842e6dff561a0b7", "name": "Commented-code block (8 lines) in scripts/lib/scrape-ctnet-multisource.ts:209", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-ctnet-multisource.ts:209"}, "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-84712bb2623f99b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-ctnet-multisource.ts:156", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-ctnet-multisource.ts:156"}, "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-33b16f094cfb3dfd", "name": "Commented-code block (9 lines) in scripts/lib/discover-colleges.ts:231", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/lib/discover-colleges.ts:231"}, "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-f0670bbe0b9c3ae1", "name": "Commented-code block (6 lines) in scripts/lib/scrape-cleancatalog-programs.ts:128", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-cleancatalog-programs.ts:128"}, "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-59f08c82854fc51e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-collegetransfer.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-collegetransfer.ts:142"}, "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-f1cd85ecbbc8b91c", "name": "Commented-code block (7 lines) in scripts/lib/scrape-coursedog-programs.ts:630", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/scrape-coursedog-programs.ts:630"}, "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-34646c7d52bf431f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog-programs.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog-programs.ts:10"}, "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-6a3297a89a1d3ffb", "name": "Commented-code block (5 lines) in scripts/lib/scrape-coursedog.ts:350", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/scrape-coursedog.ts:350"}, "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-8ad3310c9fd133f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog.ts: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-cb675c3b9562384e", "name": "Commented-code block (5 lines) in scripts/lib/discover-programs.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/discover-programs.ts:101"}, "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-34b4d2d1da32046c", "name": "Commented-code block (7 lines) in scripts/lib/resolve-terms.ts:168", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/resolve-terms.ts:168"}, "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-5027056faea3221c", "name": "Commented-code block (8 lines) in scripts/lib/scrape-jenzabar-webforms.ts:124", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-jenzabar-webforms.ts:124"}, "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-88369901bd22aeef", "name": "Commented-code block (6 lines) in scripts/lib/scrape-jenzabar.ts:279", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-jenzabar.ts: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-d0ac84cb8b923c9d", "name": "Commented-code block (6 lines) in scripts/lib/scrape-courseleaf-programs.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-courseleaf-programs.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca770cea298db5e6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-courseleaf-programs.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-courseleaf-programs.ts:67"}, "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-dffa5bd66d32c495", "name": "Commented-code block (5 lines) in scripts/lib/check-scrape-health.ts:442", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/check-scrape-health.ts:442"}, "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-58790bf84ed6239a", "name": "Commented-code block (6 lines) in scripts/lib/scrape-banner-ssb.ts:298", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-banner-ssb.ts:298"}, "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-25cb0a9c4a1f5107", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-banner-ssb.ts:370", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-banner-ssb.ts:370"}, "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-e2aecdca2374e05c", "name": "Commented-code block (6 lines) in scripts/lib/articulation-portals.ts:157", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/articulation-portals.ts:157"}, "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-911a7890ecd641d0", "name": "Commented-code block (8 lines) in scripts/lib/scrape-banner-8.ts:321", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-banner-8.ts:321"}, "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-af509a0faccc5735", "name": "Commented-code block (8 lines) in scripts/lib/scrape-acalog-programs.ts:71", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-acalog-programs.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d681cf3582ab43b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-acalog-programs.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-acalog-programs.ts:81"}, "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-0170c288805d21a4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-zipcodes.ts:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-zipcodes.ts:85"}, "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-79ffa209f5dffa02", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/check-config-urls.ts:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/check-config-urls.ts:145"}, "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-df8791b0cc804142", "name": "Commented-code block (11 lines) in scripts/lib/colleague-terms.ts:144", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/colleague-terms.ts:144"}, "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-1d3306e3da261487", "name": "Commented-code block (5 lines) in scripts/lib/cluster-fingerprints.ts:323", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/cluster-fingerprints.ts:323"}, "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-25536e959756452b", "name": "Commented-code block (5 lines) in scripts/lib/aggregate-prereqs.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/aggregate-prereqs.ts:133"}, "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-6eca7c21337c6871", "name": "Commented-code block (8 lines) in scripts/lib/add-state.ts:401", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/add-state.ts:401"}, "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-28e7129f81bca16b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/in-state-institutions.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/in-state-institutions.ts:48"}, "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-f4a59c75127e4fb6", "name": "Commented-code block (5 lines) in scripts/nj/scrape-transfer.ts:576", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/nj/scrape-transfer.ts:576"}, "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-53be219cdaf22034", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-ocean.ts:108", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-ocean.ts:108"}, "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-c65bf6b97baf9864", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-banner-ssb.ts:277", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-banner-ssb.ts:277"}, "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-80cfc39a024d0b55", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-salem.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-salem.ts:90"}, "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-09d8fcc865824d13", "name": "Commented-code block (8 lines) in scripts/ca/scrape-cerritos.ts:266", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/ca/scrape-cerritos.ts:266"}, "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-3b8f86f066d345c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-sdccd.ts:221", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-sdccd.ts:221"}, "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-f6b9edf3f876e63d", "name": "Commented-code block (5 lines) in scripts/ca/scrape-yosemite.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-yosemite.ts:101"}, "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-42959576818018eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-yosemite.ts:296", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-yosemite.ts:296"}, "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-343072cce5c1b80c", "name": "Commented-code block (6 lines) in scripts/ca/scrape-smc.ts:288", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ca/scrape-smc.ts:288"}, "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-8ef1a19d41a7750e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-westhills.ts:73", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-westhills.ts:73"}, "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-85ae9e97cef09344", "name": "Commented-code block (5 lines) in scripts/ca/scrape-laccd.ts:299", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-laccd.ts:299"}, "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-9260ef36396b73cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-4cd.ts:207", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-4cd.ts:207"}, "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-1b1b2ce2930d68b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-canyons.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-canyons.ts:12"}, "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-c28fd784d3b1c6cd", "name": "Commented-code block (5 lines) in scripts/ca/scrape-banner-cluster.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-banner-cluster.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8871e0fadc7b39d", "name": "Commented-code block (5 lines) in scripts/ca/scrape-imperial.ts:212", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-imperial.ts:212"}, "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-a65c8cb341f912cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-imperial.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-imperial.ts:133"}, "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-f41a34888c1fbad2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-socccd.ts:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-socccd.ts:119"}, "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-7e5fd5ff5757a429", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-foothill.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-foothill.ts: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-fdfecb9537cc9d58", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/explore-assist-articulation.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/explore-assist-articulation.ts:84"}, "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-50e735539bc8ebdf", "name": "Commented-code block (5 lines) in scripts/ca/scrape-losrios.ts:548", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-losrios.ts:548"}, "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-03507c7463acefc5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-transfer-assist.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-transfer-assist.ts:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0eead4135b4c3f11", "name": "Commented-code block (5 lines) in scripts/ca/scrape-wvm.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-wvm.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-220ce8fff3885db1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-wvm.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-wvm.ts:110"}, "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-d3c33d9e2e562440", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-marin.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-marin.ts:142"}, "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-1656bcb9798969cd", "name": "Commented-code block (7 lines) in scripts/ca/scrape-assist-receivers.ts:341", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/ca/scrape-assist-receivers.ts:341"}, "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-3f38e3df5756f409", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-assist-receivers.ts:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-assist-receivers.ts:203"}, "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-d6ce98d728d64181", "name": "Commented-code block (5 lines) in scripts/ca/scrape-sbcc.ts:218", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-sbcc.ts:218"}, "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-eec3bb2d1466b6db", "name": "Commented-code block (12 lines) in scripts/ca/__tests__/parse-assist-articulation.test.ts:72", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/ca/__tests__/parse-assist-articulation.test.ts: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-52bbfb5763080b1c", "name": "Commented-code block (7 lines) in scripts/mn/scrape-jenzabar.ts:59", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/mn/scrape-jenzabar.ts:59"}, "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-c98c5a8deaae2820", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mn/scrape-catalog-prereqs.ts:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mn/scrape-catalog-prereqs.ts:136"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c33208f36295af0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ak/scrape-ilisagvik.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ak/scrape-ilisagvik.ts:67"}, "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-d5dd9e7d0451d0d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-aims-workday.ts:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-aims-workday.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-2f0eab685a130502", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-programs.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-programs.ts:111"}, "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-43b601f3d80c4b45", "name": "Commented-code block (11 lines) in scripts/co/build-transfers.ts:24", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/co/build-transfers.ts:24"}, "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-2fd9df07dda65791", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-transfer-wcsu.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-transfer-wcsu.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-47cf8e8cfe34d695", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-banner.ts:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-banner.ts:248"}, "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-05b4d6c9b1f7e744", "name": "Commented-code block (5 lines) in scripts/dc/scrape-transfer.ts:317", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/dc/scrape-transfer.ts:317"}, "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-cad67975d971858b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-transfer.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-transfer.ts:158"}, "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-2b5d375cb9c0b6c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-banner.ts:255", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-banner.ts:255"}, "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-e142901424fb6065", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-programs.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-programs.ts:62"}, "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-7cbae846e657b43f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ut/scrape-transfer.ts:171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ut/scrape-transfer.ts:171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5bd19a3cc8035813", "name": "Commented-code block (6 lines) in scripts/ut/scrape-programs.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ut/scrape-programs.ts:59"}, "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-c58f7429978bfe18", "name": "Commented-code block (6 lines) in scripts/hi/scrape-transfer-uhdad.ts:357", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/hi/scrape-transfer-uhdad.ts:357"}, "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-55da02d085f839e7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-transfer.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-transfer.ts:160"}, "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-82bb08049ace0fbf", "name": "Commented-code block (7 lines) in scripts/me/scrape-catalog-prereqs.ts:135", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/me/scrape-catalog-prereqs.ts:135"}, "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-c7f9edc388e7a4c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-catalog-prereqs.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-catalog-prereqs.ts:86"}, "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-cad3f442845ab5d9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-mccs.ts:419", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-mccs.ts:419"}, "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-7e12752a1ef060a4", "name": "Commented-code block (5 lines) in scripts/nm/scrape-sipi-pdf.ts:245", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/nm/scrape-sipi-pdf.ts:245"}, "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-018910b72223ccd9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nm/scrape-sipi-pdf.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nm/scrape-sipi-pdf.ts:65"}, "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-fe1ef746139fe77b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-catalog-prereqs.ts:8", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-catalog-prereqs.ts:8"}, "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-f39faac86ea8b4cc", "name": "Commented-code block (7 lines) in scripts/wv/scrape-eastern-wv.ts:172", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/wv/scrape-eastern-wv.ts:172"}, "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-83ab860317a801fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-eastern-wv.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-eastern-wv.ts:91"}, "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-c89f9a95d815adab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-transfer-wvu.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-transfer-wvu.ts:49"}, "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-6d97223f969fb06a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-ncstate.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-ncstate.ts:47"}, "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-6b1755d4b15a17ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-catawba.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-catawba.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-03b13d714602a0ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-hpu.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-hpu.ts:46"}, "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-66067613fb568eda", "name": "Commented-code block (5 lines) in scripts/nc/scrape-smartcatalogiq-programs.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/nc/scrape-smartcatalogiq-programs.ts:74"}, "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-6463ac8fb9512cf0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts:58"}, "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-8bbff048be09ddb0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-uncg.ts:44", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-uncg.ts:44"}, "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-3ab135a558c164c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-southeastern.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-southeastern.ts:125"}, "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-4eecb6987db09d43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-tri-county.ts:201", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-tri-county.ts:201"}, "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-5f6e1836fde47472", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-wingate.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-wingate.ts:46"}, "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-11b38a2661173739", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cleveland.ts:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cleveland.ts:130"}, "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-4b90db814731a282", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-mayland.ts:117", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-mayland.ts:117"}, "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-8af685e6012ccf9a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-sandhills.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-sandhills.ts: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-132281ddca60ed50", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-martin.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-martin.ts:62"}, "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-ae4ca47b32b5fc71", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-albemarle.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-albemarle.ts:140"}, "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-2a4c38f7dadecb6e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-elon.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-elon.ts:110"}, "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-3ce218953224f439", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-pamlico.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-pamlico.ts:72"}, "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-e1da3d0c0fdf3bd5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-cns.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-cns.ts:84"}, "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-8105145aa41a2ac5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cape-fear.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cape-fear.ts:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a8398738d6f45fc4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sd/scrape-transfer-usd.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sd/scrape-transfer-usd.ts:106"}, "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-19edcc2d294f9ebf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner8.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner8.ts:68"}, "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-d0a2da6d2c8473b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-northeastern-pdf.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-northeastern-pdf.ts:81"}, "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-06bf1358230c0a4f", "name": "Commented-code block (6 lines) in scripts/sc/scrape-cygnet.ts:119", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/sc/scrape-cygnet.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ac5cf4d10817313", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-cygnet.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-cygnet.ts:91"}, "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-fd472209f4681a84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner.ts:105"}, "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-e8c46ec55315eeb9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-transfer-clemson.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-transfer-clemson.ts:84"}, "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-7dc5fa1a8b1d1b6a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-williamsburg-pdf.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-williamsburg-pdf.ts: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-f78d19c1d560e953", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-oregon-coast.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-oregon-coast.ts:58"}, "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-f97d474c72243f3f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-tvcc.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-tvcc.ts:83"}, "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-cf7e11bccf0d5580", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-osu.ts:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-osu.ts:121"}, "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-b7b19241b6741924", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-eou.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-eou.ts:74"}, "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-cf7f2212c2a21c5a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-columbia-gorge.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-columbia-gorge.ts:97"}, "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-994de4adb9b39205", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ok/scrape-transfer.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ok/scrape-transfer.ts:110"}, "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-9edbab9356110e83", "name": "Commented-code block (5 lines) in scripts/al/scrape-accs-banner8.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/al/scrape-accs-banner8.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85f9b97ad1577463", "name": "Commented-code block (5 lines) in scripts/al/scrape-programs.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/al/scrape-programs.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e90d7a0facb88efe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/al/scrape-transfer-stars.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/al/scrape-transfer-stars.ts:113"}, "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-33b0e4654adea018", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-ntc.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-ntc.ts:112"}, "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-bae51497ba90115e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-transfer-uwm.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-transfer-uwm.ts:113"}, "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-2f483e3428b092a3", "name": "Commented-code block (5 lines) in scripts/nv/scrape-programs.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/nv/scrape-programs.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-71bf4f8ff8d845b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/vt/scrape-colleague.ts:447", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/vt/scrape-colleague.ts:447"}, "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-8ef13cf776800477", "name": "Commented-code block (6 lines) in scripts/vt/scrape-transfer.ts:51", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/vt/scrape-transfer.ts:51"}, "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-85aade4bbc990ba2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wy/scrape-northwest-college.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wy/scrape-northwest-college.ts:74"}, "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-011f8a73bf03c2de", "name": "Commented-code block (5 lines) in scripts/ri/scrape-banner8.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ri/scrape-banner8.ts:178"}, "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-16d7f20d3884496b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-banner8.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-banner8.ts: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-31c73868220d6960", "name": "Commented-code block (6 lines) in scripts/ri/scrape-transfer.ts:83", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ri/scrape-transfer.ts:83"}, "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-35d483b9c53dc526", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-transfer.ts:204", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-transfer.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-b680efe4b2b53fba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner8.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner8.ts:84"}, "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-bb60bba3d5faa94f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner-ssb.ts:350", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner-ssb.ts:350"}, "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-dc876cba0b1d80fb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-transfer-udel.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-transfer-udel.ts:125"}, "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-bd133f6336468d5a", "name": "Commented-code block (5 lines) in scripts/nd/scrape-transfer-gerta.ts:219", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/nd/scrape-transfer-gerta.ts:219"}, "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-16e68c237a2f5938", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-colleague.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-colleague.ts: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-9d059c3c7657fe34", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-masstransfer.ts:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-masstransfer.ts:165"}, "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-b4bcbe560ffd4055", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner8.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner8.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-548b1ba149ca3a55", "name": "Commented-code block (6 lines) in scripts/ma/scrape-cleancatalog-programs.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ma/scrape-cleancatalog-programs.ts: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-5cb3255446881a5d", "name": "Commented-code block (5 lines) in scripts/ma/scrape-massasoit-programs.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ma/scrape-massasoit-programs.ts:96"}, "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-d60788681ce2423a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-massasoit-programs.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-massasoit-programs.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-83d869a5f85577f4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner-ssb.ts:261", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner-ssb.ts:261"}, "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-41d5792d459a9c31", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:89"}, "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-8e9d315492fb81d8", "name": "Commented-code block (5 lines) in scripts/ma/scrape-rcc-programs.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ma/scrape-rcc-programs.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f63fed8f7f2f8bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-rcc-programs.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-rcc-programs.ts:59"}, "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-13c6b31f3e090097", "name": "Commented-code block (15 lines) in scripts/ma/scrape-qcc-pdf-programs.ts:214", "shortDescription": {"text": "Commented-code block (15 lines) in scripts/ma/scrape-qcc-pdf-programs.ts: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-fad1696e3ff08e51", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:110"}, "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-537a2751d88db9d0", "name": "Commented-code block (6 lines) in scripts/ma/scrape-catalog-prereqs-middlesex.ts:296", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/ma/scrape-catalog-prereqs-middlesex.ts:296"}, "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-580d9ed433f65e6d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-banner-ssb.ts:341", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-banner-ssb.ts:341"}, "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-8cd55c8251451e54", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:100"}, "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-2c486d1000906d48", "name": "Commented-code block (6 lines) in scripts/tn/transfer/scrape-utk.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/tn/transfer/scrape-utk.ts:33"}, "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-852ccf3aecd2668d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-ttu.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-ttu.ts:129"}, "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-6cdfa6dd5d7b8b56", "name": "Commented-code block (7 lines) in scripts/tn/transfer/scrape-all.ts:47", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/tn/transfer/scrape-all.ts:47"}, "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-00585d7ac23adc47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-apsu.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-apsu.ts:90"}, "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-9f250ebc036747dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-utm.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-utm.ts:64"}, "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-4e68dbcc66a3bea4", "name": "Commented-code block (8 lines) in scripts/tx/scrape-colleague.ts:25", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/tx/scrape-colleague.ts: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-8e9ac5a875620f00", "name": "Commented-code block (9 lines) in scripts/tx/scrape-netcc.ts:102", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/tx/scrape-netcc.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74605a2a316f97a0", "name": "Commented-code block (14 lines) in scripts/tx/scrape-clarendon.ts:114", "shortDescription": {"text": "Commented-code block (14 lines) in scripts/tx/scrape-clarendon.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6379495eb719dc35", "name": "Commented-code block (5 lines) in scripts/tx/scrape-smartcatalogiq-programs.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-smartcatalogiq-programs.ts:74"}, "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-db0956231fc8900c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts:58"}, "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-08046a92c9e5c2f8", "name": "Commented-code block (5 lines) in scripts/tx/scrape-alamo.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-alamo.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f4ecbcb1e2b1b4ea", "name": "Commented-code block (5 lines) in scripts/tx/scrape-austin.ts:99", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-austin.ts:99"}, "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-e3fd0b3891d6b67e", "name": "Commented-code block (5 lines) in scripts/tx/scrape-cisco.ts:115", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-cisco.ts:115"}, "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-f06b6efae82b3b78", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-collin.ts:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-collin.ts:211"}, "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-4c689834756e95fb", "name": "Commented-code block (6 lines) in scripts/tx/scrape-banner-ssb.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/tx/scrape-banner-ssb.ts:40"}, "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-e0b537bc55861f4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-acalog-prereqs.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-acalog-prereqs.ts:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24333f89b89d74c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-transfer-tccns.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-transfer-tccns.ts:102"}, "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-db489edebceff11e", "name": "Commented-code block (5 lines) in scripts/tx/scrape-dallas.ts:531", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-dallas.ts:531"}, "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-9e2f9b29e179e136", "name": "Commented-code block (6 lines) in scripts/tx/scrape-lsc.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/tx/scrape-lsc.ts:56"}, "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-6ce47c2115b7dc08", "name": "Commented-code block (5 lines) in scripts/tx/scrape-kilgore.ts:277", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-kilgore.ts:277"}, "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-474a0b25f072b1c2", "name": "Commented-code block (9 lines) in scripts/tx/scrape-frank-phillips.ts:153", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/tx/scrape-frank-phillips.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9260745d9b501eb0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-emporia.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-emporia.ts:38"}, "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-cf1d8c3c9ab9e6f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer.ts:135"}, "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-89c8e57792b9ccf9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-allen.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-allen.ts:110"}, "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-133733776d0a1354", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-manhattan-tech.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-manhattan-tech.ts:102"}, "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-ef40a775d569abc5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-ku.ts:47", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-ku.ts:47"}, "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-0091cadd5345797d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:104", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:104"}, "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-f13584df33948344", "name": "Commented-code block (5 lines) in scripts/ks/scrape-hutchinson.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ks/scrape-hutchinson.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07afb1393af78a2a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-hutchinson.ts:107", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-hutchinson.ts:107"}, "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-b9d29689e7349c63", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-salina.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-salina.ts: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-534867d307e623c8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vwu.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vwu.ts:49"}, "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-5f41eb6bbab9688c", "name": "Commented-code block (6 lines) in scripts/va/scrape-camp-pdf-programs.ts:192", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/va/scrape-camp-pdf-programs.ts:192"}, "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-830acb2f719d7a08", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-camp-pdf-programs.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-camp-pdf-programs.ts: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-c560465a2c69a60b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-vhcc-pdf-programs.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-vhcc-pdf-programs.ts: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-c343424dd909559b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vcu.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vcu.ts:59"}, "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-5aa8ea8263e77755", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-uva.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-uva.ts:48"}, "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-b5c467ba3e6eeb84", "name": "Commented-code block (10 lines) in scripts/va/scrape-transfer-odu.ts:68", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/va/scrape-transfer-odu.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8021e1ca5693722c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-odu.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-odu.ts:48"}, "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-3e5c6422bf6255b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-equiv.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-equiv.ts:51"}, "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-4f065317d13aece5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-gmu.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-gmu.ts:54"}, "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-0d60bc426da826f2", "name": "Commented-code block (7 lines) in scripts/va/scrape-catalog-prereqs.ts:66", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/va/scrape-catalog-prereqs.ts:66"}, "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-55a4eb0b0fcfd75b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-catalog-prereqs.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-catalog-prereqs.ts:59"}, "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-5a4f33291fdbc2f1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vsu.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vsu.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-c4d8c91fe2070fc1", "name": "Commented-code block (6 lines) in scripts/va/enrich-peoplesoft.ts:610", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/va/enrich-peoplesoft.ts:610"}, "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-c802fffc01c0a247", "name": "Commented-code block (5 lines) in scripts/va/scrape-peoplesoft.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/va/scrape-peoplesoft.ts:36"}, "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-3b7180a7a152f857", "name": "Commented-code block (5 lines) in scripts/va/__tests__/scrape-vccs.test.ts:263", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/va/__tests__/scrape-vccs.test.ts:263"}, "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-c29b0051b8c53720", "name": "Commented-code block (5 lines) in scripts/ky/scrape-courses.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ky/scrape-courses.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a740303bed4832ac", "name": "Commented-code block (5 lines) in scripts/ky/scrape-transfer-collegesource-tes.ts:475", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/ky/scrape-transfer-collegesource-tes.ts:475"}, "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-902cd8e869c405f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ky/scrape-programs.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ky/scrape-programs.ts:28"}, "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-92d334a7d90d366d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-purdue.ts:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-purdue.ts:92"}, "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-dbcfe250ae542b39", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-iu.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-iu.ts:83"}, "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-9c534f4499485af5", "name": "Commented-code block (6 lines) in components/AnswerCard.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in components/AnswerCard.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e2a83b45cd76dc7", "name": "Commented-code block (5 lines) in components/SemesterPlanner.tsx:538", "shortDescription": {"text": "Commented-code block (5 lines) in components/SemesterPlanner.tsx:538"}, "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-42298c4a0df2f44e", "name": "Commented-code block (5 lines) in components/ProgramRequirements.tsx:224", "shortDescription": {"text": "Commented-code block (5 lines) in components/ProgramRequirements.tsx:224"}, "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-a721913a92703d2d", "name": "Commented-code block (8 lines) in components/StartingSoonCallout.tsx:2", "shortDescription": {"text": "Commented-code block (8 lines) in components/StartingSoonCallout.tsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-770b22d378cdee86", "name": "Commented-code block (5 lines) in components/AdSenseScript.tsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in components/AdSenseScript.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7240c3ea24e53114", "name": "Commented-code block (5 lines) in components/HomeFeatureCards.tsx:10", "shortDescription": {"text": "Commented-code block (5 lines) in components/HomeFeatureCards.tsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-499e4affa87ae904", "name": "Commented-code block (5 lines) in app/layout.tsx:62", "shortDescription": {"text": "Commented-code block (5 lines) in app/layout.tsx:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38ea219de3aac790", "name": "Commented-code block (5 lines) in app/colleges/page.tsx:126", "shortDescription": {"text": "Commented-code block (5 lines) in app/colleges/page.tsx:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d554adba21af5dd", "name": "Commented-code block (7 lines) in app/auth/callback/route.ts:38", "shortDescription": {"text": "Commented-code block (7 lines) in app/auth/callback/route.ts:38"}, "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-93935d3e9e276be0", "name": "Commented-code block (5 lines) in app/api/account/delete/route.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/account/delete/route.ts:79"}, "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-1804153ea2da66da", "name": "Commented-code block (7 lines) in app/api/[state]/ask/route.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/[state]/ask/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-768dca6ba317de39", "name": "Commented-code block (6 lines) in app/api/[state]/sections-for-courses/route.ts:137", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/[state]/sections-for-courses/route.ts:137"}, "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-739e509ca074fa03", "name": "Commented-code block (7 lines) in app/api/[state]/courses/search/route.ts:66", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/[state]/courses/search/route.ts:66"}, "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-bc38027dc29088e3", "name": "Commented-code block (9 lines) in app/api/[state]/college/[id]/courses/[prefix]/route.ts:10", "shortDescription": {"text": "Commented-code block (9 lines) in app/api/[state]/college/[id]/courses/[prefix]/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5a526b1ffd6c95e", "name": "Commented-code block (6 lines) in app/sitemap/courses.xml/route.ts:22", "shortDescription": {"text": "Commented-code block (6 lines) in app/sitemap/courses.xml/route.ts:22"}, "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-bd16a7cf3b67f4eb", "name": "Commented-code block (11 lines) in app/sitemap/college-subjects.xml/route.ts:10", "shortDescription": {"text": "Commented-code block (11 lines) in app/sitemap/college-subjects.xml/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f1542e46f926a2f9", "name": "Commented-code block (9 lines) in app/[state]/page.tsx:21", "shortDescription": {"text": "Commented-code block (9 lines) in app/[state]/page.tsx: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-60233d4e4f0b313c", "name": "Commented-code block (5 lines) in app/[state]/layout.tsx:57", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/layout.tsx:57"}, "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-c89ed241f23fa80b", "name": "Commented-code block (6 lines) in app/[state]/schedule/page.tsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in app/[state]/schedule/page.tsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9efbd7c6c8808dfd", "name": "Commented-code block (11 lines) in app/[state]/transfer/page.tsx:51", "shortDescription": {"text": "Commented-code block (11 lines) in app/[state]/transfer/page.tsx:51"}, "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-f0675db2dddef7a6", "name": "Commented-code block (5 lines) in app/[state]/transfer/TransferClient.tsx:117", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/transfer/TransferClient.tsx: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-41fd0ce364cff17f", "name": "Commented-code block (9 lines) in app/[state]/transfer/to/[universitySlug]/page.tsx:100", "shortDescription": {"text": "Commented-code block (9 lines) in app/[state]/transfer/to/[universitySlug]/page.tsx:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2f110a2aef4a5f4", "name": "Commented-code block (6 lines) in app/[state]/subject/[prefix]/page.tsx:44", "shortDescription": {"text": "Commented-code block (6 lines) in app/[state]/subject/[prefix]/page.tsx:44"}, "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-b29d9e1871cdacfd", "name": "Commented-code block (7 lines) in app/[state]/courses/page.tsx:12", "shortDescription": {"text": "Commented-code block (7 lines) in app/[state]/courses/page.tsx:12"}, "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-2a6d138b81e4e5ce", "name": "Commented-code block (5 lines) in app/[state]/courses/CourseSearchClient.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/courses/CourseSearchClient.tsx:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-757525805f35a733", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/courses/CourseSearchClient.tsx:461", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/courses/CourseSearchClient.tsx:461"}, "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-940f7a32614e5c13", "name": "Commented-code block (6 lines) in app/[state]/college/[id]/TopProgramsSection.tsx:62", "shortDescription": {"text": "Commented-code block (6 lines) in app/[state]/college/[id]/TopProgramsSection.tsx:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e57c19a75b9ba527", "name": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeMap.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeMap.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ebce2806c6d36c9", "name": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeTermSection.tsx:98", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeTermSection.tsx:98"}, "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-a49699eb130f000b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/college/[id]/CollegeTermSection.tsx:77", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/college/[id]/CollegeTermSection.tsx:77"}, "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-1e447a39d84f2314", "name": "Commented-code block (6 lines) in app/[state]/college/[id]/page.tsx:84", "shortDescription": {"text": "Commented-code block (6 lines) in app/[state]/college/[id]/page.tsx:84"}, "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-273151b833317ac8", "name": "Commented-code block (10 lines) in app/[state]/college/[id]/program/[slug]/page.tsx:53", "shortDescription": {"text": "Commented-code block (10 lines) in app/[state]/college/[id]/program/[slug]/page.tsx: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-0508a2e22fc7598b", "name": "Commented-code block (11 lines) in app/[state]/course/[code]/page.tsx:43", "shortDescription": {"text": "Commented-code block (11 lines) in app/[state]/course/[code]/page.tsx:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-455f3c8f6b468c97", "name": "Commented-code block (5 lines) in app/[state]/plan/page.tsx:21", "shortDescription": {"text": "Commented-code block (5 lines) in app/[state]/plan/page.tsx: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-efc9cf93763eeeb8", "name": "Commented-code block (6 lines) in app/[state]/program/[slug]/page.tsx:53", "shortDescription": {"text": "Commented-code block (6 lines) in app/[state]/program/[slug]/page.tsx: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-0fb483e1a077e0cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx: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-c3f5b486d584e2d4", "name": "Commented-code block (5 lines) in app/plan/[id]/page.tsx:76", "shortDescription": {"text": "Commented-code block (5 lines) in app/plan/[id]/page.tsx:76"}, "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-32c468f28359cad4", "name": "Commented-code block (5 lines) in lib/geo.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/geo.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06e75231c68522fa", "name": "Commented-code block (8 lines) in lib/auth-providers.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in lib/auth-providers.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a33ddfb49779947b", "name": "Commented-code block (5 lines) in lib/courses.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/courses.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21be991716923d8b", "name": "Commented-code block (7 lines) in lib/state-insights.ts:210", "shortDescription": {"text": "Commented-code block (7 lines) in lib/state-insights.ts:210"}, "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-dde0a7e6d510f10e", "name": "Commented-code block (5 lines) in lib/institutions.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in lib/institutions.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-0bf4e555dfc5a9fa", "name": "Commented-code block (12 lines) in lib/transfer.ts:129", "shortDescription": {"text": "Commented-code block (12 lines) in lib/transfer.ts:129"}, "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-3346046b109e0090", "name": "Commented-code block (10 lines) in lib/seats.ts:3", "shortDescription": {"text": "Commented-code block (10 lines) in lib/seats.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d62a755110ee5fe", "name": "Commented-code block (5 lines) in lib/transfer-rank.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/transfer-rank.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38e1f1206ef69488", "name": "Commented-code block (7 lines) in lib/schemas.ts:30", "shortDescription": {"text": "Commented-code block (7 lines) in lib/schemas.ts: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-85f439417e294d5d", "name": "Commented-code block (5 lines) in lib/schedule.ts:294", "shortDescription": {"text": "Commented-code block (5 lines) in lib/schedule.ts:294"}, "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-7305e27ca62a8a50", "name": "Commented-code block (6 lines) in lib/seat-watch-match.ts:95", "shortDescription": {"text": "Commented-code block (6 lines) in lib/seat-watch-match.ts:95"}, "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-52495aff7426e67c", "name": "Commented-code block (7 lines) in lib/prereq-groups.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in lib/prereq-groups.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-47e9cb230b398d23", "name": "Commented-code block (12 lines) in lib/courses-search.ts:96", "shortDescription": {"text": "Commented-code block (12 lines) in lib/courses-search.ts:96"}, "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-90fff98be6e227fa", "name": "Commented-code block (6 lines) in lib/terms.ts:64", "shortDescription": {"text": "Commented-code block (6 lines) in lib/terms.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68df8e6742d0926b", "name": "Commented-code block (5 lines) in lib/college-insights.ts:147", "shortDescription": {"text": "Commented-code block (5 lines) in lib/college-insights.ts:147"}, "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-6f9286b30f39a4de", "name": "Commented-code block (9 lines) in lib/__tests__/transfer.test.ts:297", "shortDescription": {"text": "Commented-code block (9 lines) in lib/__tests__/transfer.test.ts:297"}, "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-4d62a6db22dc79f4", "name": "Commented-code block (5 lines) in lib/__tests__/courses-titles-for-subject.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/__tests__/courses-titles-for-subject.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6f5106f3b77b1e1", "name": "Commented-code block (5 lines) in lib/search-intent/cache.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/cache.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e98575dd08145f42", "name": "Commented-code block (8 lines) in lib/search-intent/prompt.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in lib/search-intent/prompt.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-8c1cff834155bb76", "name": "Commented-code block (5 lines) in lib/search-intent/classify-local.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/classify-local.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cdfe59a22cdea18", "name": "Commented-code block (6 lines) in lib/search-intent/types.ts:92", "shortDescription": {"text": "Commented-code block (6 lines) in lib/search-intent/types.ts:92"}, "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-e1f1538357835d18", "name": "Commented-code block (5 lines) in lib/search-intent/answer/no-answer.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/no-answer.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff0ac73a35a52ca0", "name": "Commented-code block (5 lines) in lib/search-intent/answer/prereqs.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/prereqs.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-423211bad078cb4f", "name": "Commented-code block (6 lines) in lib/search-intent/answer/pathway.ts:154", "shortDescription": {"text": "Commented-code block (6 lines) in lib/search-intent/answer/pathway.ts:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8cfd1a13f627af2d", "name": "Commented-code block (5 lines) in lib/search-intent/answer/eligibility.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/eligibility.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aa1032865f4c9cf3", "name": "Commented-code block (5 lines) in lib/search-intent/answer/resolve-course.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/resolve-course.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e2cd5fd5347df7c", "name": "Legacy-named symbol `isLegacy` in lib/programs/plan-shared.ts:61", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/programs/plan-shared.ts:61"}, "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-7bf32553100599ab", "name": "Legacy-named symbol `isLegacy` in lib/programs/planner.ts:58", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in lib/programs/planner.ts:58"}, "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-b5e47a310a486b3e", "name": "Commented-code block (7 lines) in lib/programs/planner.ts:364", "shortDescription": {"text": "Commented-code block (7 lines) in lib/programs/planner.ts:364"}, "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-2c879eca953c705b", "name": "Commented-code block (5 lines) in lib/programs/index.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in lib/programs/index.ts:41"}, "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-b42cf70d5b5fa2f8", "name": "Commented-code block (7 lines) in lib/programs/__tests__/choose.test.ts:282", "shortDescription": {"text": "Commented-code block (7 lines) in lib/programs/__tests__/choose.test.ts:282"}, "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-201c2dec32041d78", "name": "Commented-code block (5 lines) in lib/programs/__tests__/planner.test.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/programs/__tests__/planner.test.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b6af994dc7c487b", "name": "Commented-code block (5 lines) in lib/states/registry.ts:146", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/registry.ts:146"}, "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-1e4fc69714f29a71", "name": "Commented-code block (6 lines) in lib/states/id/config.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/id/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-968bac49d273f3ad", "name": "Commented-code block (13 lines) in lib/states/mo/config.ts:49", "shortDescription": {"text": "Commented-code block (13 lines) in lib/states/mo/config.ts:49"}, "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-26e3e796e9408806", "name": "Commented-code block (6 lines) in lib/states/wa/config.ts:63", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/wa/config.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6721172e1bac8c42", "name": "Commented-code block (9 lines) in lib/states/ne/config.ts:76", "shortDescription": {"text": "Commented-code block (9 lines) in lib/states/ne/config.ts:76"}, "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-a55b3afc49da834b", "name": "Commented-code block (5 lines) in lib/states/ia/config.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/ia/config.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-30db4571a057be62", "name": "Commented-code block (6 lines) in lib/states/ar/config.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/ar/config.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-480de8997f7ed4d5", "name": "Commented-code block (6 lines) in lib/states/pa/config.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/pa/config.ts:70"}, "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-2c34bb93063cc88d", "name": "Commented-code block (5 lines) in lib/states/ms/config.ts:75", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/ms/config.ts:75"}, "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-891450b1f8286c45", "name": "Commented-code block (5 lines) in lib/states/fl/config.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/fl/config.ts:23"}, "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-26347b9969752e74", "name": "Commented-code block (7 lines) in lib/states/mt/config.ts:71", "shortDescription": {"text": "Commented-code block (7 lines) in lib/states/mt/config.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8482e60258fa70ff", "name": "Commented-code block (6 lines) in lib/states/nh/config.ts:23", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/nh/config.ts:23"}, "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-cd6a6d3a57ac1d50", "name": "Commented-code block (5 lines) in lib/states/la/config.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/la/config.ts:47"}, "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-76074b81861b58ed", "name": "Commented-code block (6 lines) in lib/states/mi/config.ts:108", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/mi/config.ts:108"}, "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-74be5a161f744f2e", "name": "Commented-code block (6 lines) in lib/states/az/config.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/az/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-829bc90aa5a80fa2", "name": "Commented-code block (6 lines) in lib/states/il/config.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/il/config.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-41f8ce93a98a5987", "name": "Commented-code block (6 lines) in lib/states/ca/config.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/ca/config.ts:70"}, "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-d4233cb275fcd3fc", "name": "Commented-code block (7 lines) in lib/states/mn/config.ts:93", "shortDescription": {"text": "Commented-code block (7 lines) in lib/states/mn/config.ts:93"}, "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-954d37eae99c706f", "name": "Commented-code block (6 lines) in lib/states/ak/config.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/ak/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea63ab0195a91871", "name": "Commented-code block (6 lines) in lib/states/co/config.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/co/config.ts: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-9c405ec0a33f5adb", "name": "Commented-code block (9 lines) in lib/states/dc/config.ts:23", "shortDescription": {"text": "Commented-code block (9 lines) in lib/states/dc/config.ts:23"}, "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-83b7a567c4e03d18", "name": "Commented-code block (6 lines) in lib/states/ut/config.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/ut/config.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-5b7a39f6e8c872f7", "name": "Commented-code block (5 lines) in lib/states/hi/config.ts:53", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/hi/config.ts: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-032485723705d935", "name": "Commented-code block (5 lines) in lib/states/me/config.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/me/config.ts:23"}, "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-18c26f1d41e287ce", "name": "Commented-code block (6 lines) in lib/states/nm/config.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/nm/config.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d311c956149d6b8", "name": "Commented-code block (5 lines) in lib/states/wv/config.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/wv/config.ts:76"}, "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-21deecef6273274d", "name": "Commented-code block (7 lines) in lib/states/nc/config.ts:160", "shortDescription": {"text": "Commented-code block (7 lines) in lib/states/nc/config.ts:160"}, "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-9268722aa17efc94", "name": "Commented-code block (8 lines) in lib/states/sd/config.ts:11", "shortDescription": {"text": "Commented-code block (8 lines) in lib/states/sd/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-57d5996d928c8e9d", "name": "Commented-code block (5 lines) in lib/states/or/config.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/or/config.ts:74"}, "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-12c6db2fa3975805", "name": "Commented-code block (9 lines) in lib/states/ok/config.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in lib/states/ok/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40e4e9398c146e28", "name": "Commented-code block (5 lines) in lib/states/al/config.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/al/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc520c63bbf0bd48", "name": "Commented-code block (6 lines) in lib/states/wi/config.ts:84", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/wi/config.ts:84"}, "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-aa4648a6f2faf96e", "name": "Commented-code block (10 lines) in lib/states/vt/config.ts:64", "shortDescription": {"text": "Commented-code block (10 lines) in lib/states/vt/config.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4191e1a25fd16675", "name": "Commented-code block (5 lines) in lib/states/nd/config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/nd/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1506835775be48e4", "name": "Commented-code block (7 lines) in lib/states/ma/config.ts:23", "shortDescription": {"text": "Commented-code block (7 lines) in lib/states/ma/config.ts:23"}, "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-ae631c10624c94d4", "name": "Commented-code block (5 lines) in lib/states/tn/config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/tn/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71484fc566753540", "name": "Commented-code block (5 lines) in lib/states/tx/config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/tx/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c6a9e833d1d1fb52", "name": "Commented-code block (5 lines) in lib/states/ks/config.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in lib/states/ks/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-104933aada65f532", "name": "Commented-code block (8 lines) in lib/states/va/config.ts:64", "shortDescription": {"text": "Commented-code block (8 lines) in lib/states/va/config.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b62ec1e6591d7dd3", "name": "Commented-code block (6 lines) in lib/states/ky/config.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in lib/states/ky/config.ts:49"}, "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-c7534ddd4ee644a7", "name": "Commented-code block (8 lines) in lib/states/in/config.ts:65", "shortDescription": {"text": "Commented-code block (8 lines) in lib/states/in/config.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db869d8618832505", "name": "Commented-code block (8 lines) in lib/llm/json-chat.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in lib/llm/json-chat.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de2c509bdd07bd8c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/llm/json-chat.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/llm/json-chat.ts:111"}, "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-66cbcc8b781e7fac", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/proxy.ts:73", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/proxy.ts:73"}, "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-24b9671739bafbd1", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/next.config.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/next.config.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-86d0e6eed7bc782c", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ingest-bls.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ingest-bls.ts:111"}, "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-8a2445939d2b42ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:86"}, "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-ee3fa0de6267d164", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/scorecard-map.ts:207", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/scorecard-map.ts:207"}, "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-ce7c0851d8601baf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:225", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:225"}, "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-c299234825a98d61", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:253", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:253"}, "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-634c33f1bc2df345", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:150", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:150"}, "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-8e06fbafc10c8722", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:163", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:163"}, "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-689bf5c2a4ad4820", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:481", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:481"}, "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-2e64635a150394eb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts:116"}, "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-fdfb92c1c83e75c5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:248"}, "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-4d4c97bf27d1d788", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts:110"}, "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-5df7db7185d3d3e7", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71e38169d981b2ce", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:189", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:189"}, "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-0d40f4b8bc2ededb", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:59"}, "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-f69eba9d9ba6594e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:167", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:167"}, "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-3ae2a74e998c95fc", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:84"}, "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-3d458e81ae3e3434", "name": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:88", "shortDescription": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:88"}, "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-741708560de7f011", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:76", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:76"}, "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-2dc07c3a1e4fe157", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:95"}, "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-328d5c24a7815c16", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:70", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:70"}, "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-8bca9d5ee95463b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:127"}, "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-641e10a4e4a5a2c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:72"}, "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-5e7df50392bca401", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.ts:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.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-39afd7d5347b36f6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:180", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:180"}, "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-5aef74b4b639e003", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts: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-a436a290ce414f6d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:67"}, "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-d3e989eb15054102", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.ts:172", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.ts:172"}, "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-6391b7ca0321c2c6", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:205", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf21a97a94cfcbd1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:127", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:127"}, "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-ebc0ac70112c1395", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:13"}, "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-7dc716c6b68d5040", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:260", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:260"}, "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-388c68ddf83b9588", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:160"}, "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-172b2d0892e96898", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:149", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:149"}, "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-d1470f1fbb5b3c47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:71"}, "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-9c69a57eb78e6057", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:33"}, "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-fa2df12fbcd5b6c9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:168"}, "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-3d70a52147f4dfb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:112", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:112"}, "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-8bb3a3e85b642a45", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts:182", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts:182"}, "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-59e083776daad569", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:27"}, "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-7d1c098d0910d732", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:302", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:302"}, "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-6e466cee2e8b8c09", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c54fc8f6e7b71865", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:96"}, "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-dcc53300c503ed30", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts:124", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts: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-5a8d94264902339a", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:82"}, "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-b557a37320efdd00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:129"}, "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-fad602c8f203626d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:152", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:152"}, "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-737acc5c8af7ca51", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:314", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:314"}, "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-5119091219a4f99d", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:58", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.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-e02fc8177d78805a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:110"}, "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-561ffbb55993d3a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts: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-94b23c9463b9a985", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:80"}, "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-38a04f9779c417d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:137", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:137"}, "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-335816eddf4b5a13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:139", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:139"}, "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-f5e2a3473b90e4d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.ts:95"}, "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-e6588decf74358f7", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts: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-c26e1209afa76765", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:39"}, "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-97add0a25c7e2446", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:119", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:119"}, "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-43ece07d619f0ffc", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:689", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:689"}, "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-a78d5e5267530c16", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts:133", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts:133"}, "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-3836427a993a358b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:283", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:283"}, "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-7d35b45c861800aa", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:191", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:191"}, "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-ee6dfbe1077e1f6e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:122", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:122"}, "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-dd28d9f53f650fdd", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:50"}, "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-b1d0af9684fa5c7d", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:245", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:245"}, "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-92be0d5cbac4646d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:275", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:275"}, "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-1f4c7924ce219c69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts:99"}, "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-4cac5eec45c7a3cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:135"}, "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-093091d2c3c779f9", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:237", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:237"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ebfae0463b61441", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:323", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:323"}, "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-9bfb677450b6f9f0", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts:30", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts: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-a2feb5dbdc39a7e6", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab1f3222060d0f7f", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:184", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:184"}, "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-2a31bcc0b7e1248b", "name": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:231", "shortDescription": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:231"}, "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-91d7d5e6d6b6b4e8", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:128", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:128"}, "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-29e7c00d18d49893", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:142", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:142"}, "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-61704e47c0cd2cb6", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:510", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:510"}, "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-0be07a271de35251", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:10"}, "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-6b44d3da0fa21d33", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:350", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:350"}, "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-07f38a7cc6d6460f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts: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-5f7bade7845cb35d", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:101", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:101"}, "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-30bc987d9acb60ae", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:168", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:168"}, "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-261cad5dc8a8ecae", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts:124", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts:124"}, "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-23a4dbabc21f313a", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts:279", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts: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-1620ead0ed9a6096", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:266", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:266"}, "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-b5331ea882035e02", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:442", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:442"}, "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-402581e2e129647d", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:288", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:288"}, "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-a9324b19e4252c36", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:360", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:360"}, "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-b2ce7be0b2da7b35", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts:157", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts:157"}, "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-324411370217662b", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:321", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:321"}, "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-e00119e9d4bd0fd3", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:71", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05676b9072172ed8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:81"}, "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-676f05e460de7a5f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:85", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:85"}, "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-a74dd4cb80ab0210", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:145"}, "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-3330eb3b1347d51b", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:144", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:144"}, "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-4cb27b24eeb5f92d", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:323", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:323"}, "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-6f155d35fa395748", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts:107"}, "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-6f2b63ab54b144fc", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:401", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:401"}, "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-34d3a46c8dfc8209", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/in-state-institutions.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/in-state-institutions.ts:48"}, "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-cec8b3de202d8ace", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:680", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:680"}, "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-ecd5405b1344e52f", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:560", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:560"}, "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-09fd5f7343ef871c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:277", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:277"}, "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-731df3bf28a5d864", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:221", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:221"}, "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-a894967ff5315634", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:299", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:299"}, "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-a656feaa9d0a14b9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:207", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:207"}, "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-8a0fabce57f888b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts: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-00ee4914b25e1576", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts:84"}, "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-0974e0d0b2db6f97", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:548", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:548"}, "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-63f77bdffad4d749", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd04c8322baad5fa", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:335", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:335"}, "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-9584723304b187dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:199", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:199"}, "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-8dd8c0546d41be7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:136", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:136"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f9a64f986681d6d1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.ts:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.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-89c3ec54ea769f89", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:248", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:248"}, "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-7af23c9208666166", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:317", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:317"}, "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-6b6f77e86232face", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:158"}, "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-25448c1ba09866ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:255", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:255"}, "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-d822185c51bab0e4", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts:59", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts:59"}, "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-ce10836e696a7a24", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:357", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:357"}, "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-8bb5268805ab7204", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:160"}, "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-28d56d2cecb3904c", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:135", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:135"}, "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-2d2ff4cf63dee6d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:86"}, "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-ee26da0ffb0f3929", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.ts:419", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.ts:419"}, "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-da74069eced1612d", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:245", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:245"}, "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-53c027820625a11f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:65"}, "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-7d660a0fdea6a241", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:172", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:172"}, "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-fb845bd9f8c29beb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:91"}, "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-0c4d39e9168fe920", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts:46"}, "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-fa73a60fe5b66b2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.ts:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.ts:42"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0bf859004329c694", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:45"}, "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-79c2f836071ec4b4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.ts:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.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-e2175bc804e5eb80", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:125"}, "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-d363d4bf927d427d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:201", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:201"}, "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-6b8ba75a9da3976a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:45"}, "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-1b36b9c5b26bf7b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:130"}, "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-389b9509fd8f1b83", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts:117", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts:117"}, "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-7020a35f5a620cec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.ts:93", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.ts: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-ba0c5fdfe60084b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:62"}, "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-f5fa03136aaa5644", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.ts:140"}, "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-999c566566a2d231", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c131ef11c69cdb5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:72"}, "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-676c5c8e1bdbb7a3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:83"}, "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-956afc75cc4909bb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a450e750b8ab2af", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:106", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:106"}, "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-b291fef6fc83e91a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:68"}, "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-33839c2c77734d84", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:81"}, "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-16bbdb60e5b1c0fb", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:119", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25fa8a5317a83676", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:91"}, "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-94d87965f4b48cb3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:105", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:105"}, "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-45ce3b1a4ede140b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:84"}, "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-7260e29b86d8beef", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:76", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts: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-df9f86eedf547403", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:58"}, "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-f518ba4ec7ae4af3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:83", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:83"}, "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-fde70d937fa5b512", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:121", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:121"}, "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-82b52c3c0aadac6f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:97", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:97"}, "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-d9e3edb133748363", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:69", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99eb6e96013fbba2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:113"}, "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-7f82528442338af1", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nv/scrape-programs.ts:31", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nv/scrape-programs.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-227c1b60ad588c49", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:447", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:447"}, "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-cec71ffd3ae98e27", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.ts:51", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.ts:51"}, "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-df9539880f629e0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts:74"}, "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-43ddc7bbb6371679", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:178"}, "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-efb360d66bb50348", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts: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-52dd2e2046f1924e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:192", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:192"}, "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-6cd90fadc913ed7d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:84"}, "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-8c5b9fde93919cec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:350", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:350"}, "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-5872bac4720a59c3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:125"}, "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-9d4f9bd1f722ae1c", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:219", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:219"}, "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-f910015c7d2c7c9e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts:222", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts: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-ca5f1f6d0821574a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:165", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:165"}, "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-e81841f00e552fa3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dabd593669538b7d", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts:30", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts: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-21b1ab71c5ed3fc8", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:96", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:96"}, "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-4238501e8d82af28", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.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-cf3e0dea23bb55ce", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:261", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:261"}, "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-89dc545b92f73e8e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:89"}, "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-fb8575bb75eb59ef", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:119", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76f77f6b2001d76b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:59"}, "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-ae894ca2ab4659ff", "name": "Commented-code block (15 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:214", "shortDescription": {"text": "Commented-code block (15 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts: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-b939eefe78a90b89", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:110"}, "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-0d2ba35a998ad7b6", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts:296", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts:296"}, "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-a52b260ffeb37f5c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:341", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:341"}, "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-58b4cbff8906359c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:100"}, "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-94bb211819a13799", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:33", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:33"}, "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-df1c73c221b9693d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:129"}, "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-9d377d1e59ae591f", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:47", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:47"}, "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-308a2d491cabd928", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:90"}, "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-c2ea0b991a128eba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:64", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:64"}, "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-f7ca846b1aee85a6", "name": "Commented-code block (14 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:114", "shortDescription": {"text": "Commented-code block (14 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a039144771d2893", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-25bcbba6fb464433", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:211", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:211"}, "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-083c6efeb0fb4a85", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:147"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-604baeb057bca3b6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:102", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:102"}, "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-5db47f8e41062d6a", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts: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-274ac9e6a6223e67", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:277", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:277"}, "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-217b8df3e3efb769", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:49"}, "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-b8172a852ca8cf8d", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:192", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:192"}, "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-5d3692b0842cdc69", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:75", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts: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-6ab291a8397dc78f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts: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-972a4afc8a5eea34", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.ts:59"}, "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-c2765bf037f96308", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:48"}, "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-cdd4887559b16a5b", "name": "Commented-code block (10 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:68", "shortDescription": {"text": "Commented-code block (10 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-570a0bcb0e7b2526", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:48"}, "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-b33ff91f0f0008dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts:51"}, "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-8fbcbde26bb8b7be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts:54"}, "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-161340b389f9189b", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:66", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:66"}, "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-0eca45bcee5583d0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:59"}, "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-77c293db2a657dec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.ts:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.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-b8dadc90667ce6c0", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:610", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:610"}, "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-249b0a95ef08c616", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:36"}, "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-c30bf5c7b94a3fea", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/__tests__/scrape-vccs.test.ts:263", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/__tests__/scrape-vccs.test.ts:263"}, "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-50c92487a34aba81", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:86", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-40b1a11950b730c2", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:475", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:475"}, "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-7c1f99556fa0fabc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:28"}, "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-4510fa40e792bff1", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/components/AnswerCard.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/components/AnswerCard.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-296133f79c197b6c", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/layout.tsx:60", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/layout.tsx:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d1183c4e1124d50", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/colleges/page.tsx:126", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/colleges/page.tsx:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f65cc96e4a5f0d4", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/api/[state]/ask/route.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/api/[state]/ask/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-041915f111ff2b35", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/api/[state]/sections-for-courses/route.ts:131", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/api/[state]/sections-for-courses/route.ts:131"}, "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-832aae547a050fda", "name": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/app/api/[state]/college/[id]/courses/[prefix]/route.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/app/api/[state]/college/[id]/courses/[prefix]/route.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab9635d1e8443e08", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/sitemap/courses.xml/route.ts:22", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/sitemap/courses.xml/route.ts:22"}, "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-aa929da18f52a108", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/schedule/page.tsx:11", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/schedule/page.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef9d5807f6d57ab5", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:48", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:48"}, "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-56148090422c555c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/TransferClient.tsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/TransferClient.tsx:58"}, "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-2679060748e1a200", "name": "Commented-code block (12 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:135", "shortDescription": {"text": "Commented-code block (12 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:135"}, "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-e9a644297ae40bed", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:43", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ecb6c51a61d22a4", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:36", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:36"}, "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-cbad1fcd42b8c980", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx:112", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx: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-e4b91d6ef5f59e3c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx:410"}, "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-1a568731ca668339", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/TopProgramsSection.tsx:62", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/TopProgramsSection.tsx:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3e405bdd3fd18da5", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeMap.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeMap.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-83c36ed57789436b", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.tsx:98", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.tsx:98"}, "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-7ed7ae92f3837a14", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.tsx:77"}, "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-11dc1c4ec9905992", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:84", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:84"}, "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-7192bac83f4253b7", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:33", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:33"}, "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-f4717af5ab8d2798", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:36", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:36"}, "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-33ed8757c89a9a50", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:53", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx: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-a58126d8c78ab395", "name": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoonClient", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoonClient.tsx:137"}, "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-b583d43f83803471", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/geo.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/geo.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9487f67849067f19", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/auth-providers.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/auth-providers.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd5b5711d57b2ba5", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/courses.ts:68", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/courses.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5405ed649238f302", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/state-insights.ts:103", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/state-insights.ts:103"}, "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-928e27f2e1505db5", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/institutions.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/institutions.ts:51"}, "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-5fd1496b07a94202", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/transfer.ts:277", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/transfer.ts:277"}, "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-4cac3fe7e74d4339", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/college-insights.ts:147", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/college-insights.ts:147"}, "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-3fb9236a49f37fa7", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/cache.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/cache.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-460a5d207e0d20e6", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/search-intent/prompt.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/search-intent/prompt.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-d377bce7255b891f", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/search-intent/classify-llm.ts:52", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/search-intent/classify-llm.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8232cae28c95c644", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/types.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/types.ts: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-9e46552a2bf4fa2c", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/no-answer.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/no-answer.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5c54251d7ccbfc2", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/pathway.ts:154", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/pathway.ts:154"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca0dbce5eeea14ae", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/eligibility.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/eligibility.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c110e414d5c03f12", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/programs/index.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/programs/index.ts:41"}, "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-2279eadd69a61368", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/registry.ts:146", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/registry.ts:146"}, "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-cb5127edb14f8877", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/mo/config.ts:49", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/mo/config.ts:49"}, "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-ed0b3cb5d76094eb", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ar/config.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ar/config.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e688f31d253e4e72", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/pa/config.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/pa/config.ts:70"}, "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-a9768c58aabf6b28", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ms/config.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ms/config.ts: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-2561a9dde8793790", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/fl/config.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/fl/config.ts:23"}, "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-52302b570400b7f9", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/mt/config.ts:52", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/mt/config.ts:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecfda687b018663e", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nh/config.ts:23", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nh/config.ts:23"}, "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-2ef19d9cf726fd4c", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/la/config.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/la/config.ts:41"}, "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-ac029dfc97e48682", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/az/config.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/az/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86eeae83f69bd786", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/il/config.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/il/config.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5aecc292a0f48081", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ca/config.ts:70", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ca/config.ts:70"}, "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-99fa424ce9c77b3d", "name": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/co/config.ts:56", "shortDescription": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/co/config.ts:56"}, "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-13ebaae04dfe6f1d", "name": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/lib/states/dc/config.ts:23", "shortDescription": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/lib/states/dc/config.ts:23"}, "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-74690b8cf741bbb4", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ut/config.ts:6", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ut/config.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-b1c27f76849bed08", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/hi/config.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/hi/config.ts:51"}, "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-f11d33b2981aa09a", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/me/config.ts:23", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/me/config.ts:23"}, "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-35936a113d0686b1", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nm/config.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nm/config.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-765214e1e81950f1", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/wv/config.ts:72", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/wv/config.ts: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-15f54a5ba05d9abb", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/sd/config.ts:11", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/sd/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9964dcbf243f86dc", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/al/config.ts:11", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/al/config.ts:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ccd81978ade66a87", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/wy/config.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/wy/config.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8e934525eb2a459", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/nd/config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/nd/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f46dbc0c5c4a9bb7", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/ma/config.ts:23", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/ma/config.ts:23"}, "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-1d000bad187749c3", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tn/config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tn/config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e07d08891b58713", "name": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tx/config.ts:15", "shortDescription": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tx/config.ts:15"}, "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-d5894c1113e255c1", "name": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ky/config.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ky/config.ts:49"}, "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-dff20e8cdfec2a43", "name": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-cluster-gaps", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-cluster-gaps.ts:178"}, "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-e65510963f6b8d0c", "name": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-course-expla", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-course-explainer-demand.ts:271"}, "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-b8142d5f0ada0db5", "name": "Commented-code block (7 lines) in .claude/skills/blog-pipeline/scripts/detect-cluster-gaps.ts:178", "shortDescription": {"text": "Commented-code block (7 lines) in .claude/skills/blog-pipeline/scripts/detect-cluster-gaps.ts:178"}, "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-5147e87b2798d42d", "name": "Commented-code block (8 lines) in .claude/skills/blog-pipeline/scripts/detect-course-explainer-demand.ts:271", "shortDescription": {"text": "Commented-code block (8 lines) in .claude/skills/blog-pipeline/scripts/detect-course-explainer-demand.ts:271"}, "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-5560b0e235882e32", "name": "Commented-code block (10 lines) in .claude/skills/state-audit/scripts/collect-audit-data.ts:240", "shortDescription": {"text": "Commented-code block (10 lines) in .claude/skills/state-audit/scripts/collect-audit-data.ts:240"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a260e355ea7d9f89", "name": "32 env vars used in code but missing from .env.example", "shortDescription": {"text": "32 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ASSIST_FIXTURES_DIR`, `CF_MODEL`, `CF_TIMEOUT_MS`, `CLASSIFIER_FALLBACK`, `COAHOMA_DEBUG`, `COLLEGETRANSFER_API_KEY`, `DATABASE_URL`, `EMAIL_FROM` + 24 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18478"}, "properties": {"repository": "rohan-c0de/cc-coursemap", "repoUrl": "https://github.com/rohan-c0de/cc-coursemap", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-61be86536a5f5ed1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-migration-drift.ts:31"}, "properties": {"repobilityId": "e6a17f67f05767ad", "scanner": "scanner-primary", "fingerprint": "61be86536a5f5ed1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f39b74fc0622d79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-blog-mdx.ts:65"}, "properties": {"repobilityId": "34345fcb34af4991", "scanner": "scanner-primary", "fingerprint": "5f39b74fc0622d79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0972902defbbb8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sitemap-data-snapshot.ts:106"}, "properties": {"repobilityId": "ebc119d74d0791ad", "scanner": "scanner-primary", "fingerprint": "d0972902defbbb8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d4b518a15b274e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-starting-soon-snapshot.ts:133"}, "properties": {"repobilityId": "6e4f55dd6e9d3e9f", "scanner": "scanner-primary", "fingerprint": "7d4b518a15b274e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b71bf277b1c9834d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-courses.ts:36"}, "properties": {"repobilityId": "9fb06ca85cbd2eee", "scanner": "scanner-primary", "fingerprint": "b71bf277b1c9834d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f9881720ba866b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-bls.ts:116"}, "properties": {"repobilityId": "0839c5a2a8e44fdd", "scanner": "scanner-primary", "fingerprint": "4f9881720ba866b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46beccc73dd1266b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scorecard-freshness.ts:92"}, "properties": {"repobilityId": "b02651b9782def7b", "scanner": "scanner-primary", "fingerprint": "46beccc73dd1266b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e6724d046a04abb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-term-hardcoding.ts:138"}, "properties": {"repobilityId": "31323e08a95adf84", "scanner": "scanner-primary", "fingerprint": "e6724d046a04abb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18d138fa4bb5c8a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-subject-vocab.ts:342"}, "properties": {"repobilityId": "b023edcce8d5e9bd", "scanner": "scanner-primary", "fingerprint": "18d138fa4bb5c8a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d7f418b147b5ba0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-output.ts:55"}, "properties": {"repobilityId": "908b25155ed72328", "scanner": "scanner-primary", "fingerprint": "4d7f418b147b5ba0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd4cf5aab097c94b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scorecard-map.ts:263"}, "properties": {"repobilityId": "8ecbbd65ceb49bd2", "scanner": "scanner-primary", "fingerprint": "bd4cf5aab097c94b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78a622678423080c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-last-updated-snapshot.ts:127"}, "properties": {"repobilityId": "d80dcdd5bfb13d6d", "scanner": "scanner-primary", "fingerprint": "78a622678423080c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e763dac493bc4d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seat-watch.ts:45"}, "properties": {"repobilityId": "7a975d294dd37a8a", "scanner": "scanner-primary", "fingerprint": "8e763dac493bc4d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15b7aa1ee6946e71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-cross-state-transfers.ts:37"}, "properties": {"repobilityId": "70f77c093d1389ca", "scanner": "scanner-primary", "fingerprint": "15b7aa1ee6946e71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a58e04ee17b5125b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-state-summaries.ts:47"}, "properties": {"repobilityId": "8e957e61aacc5a34", "scanner": "scanner-primary", "fingerprint": "a58e04ee17b5125b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a22456e65abe3d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard.ts:90"}, "properties": {"repobilityId": "721249f6daaa73b1", "scanner": "scanner-primary", "fingerprint": "6a22456e65abe3d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0181d73abfe03086", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/normalize-invisible-terms.ts:115"}, "properties": {"repobilityId": "0ea5c429ce6f16dd", "scanner": "scanner-primary", "fingerprint": "0181d73abfe03086", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d227f45ab14cf9ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scorecard.ts:35"}, "properties": {"repobilityId": "1c9ed25c014ba53a", "scanner": "scanner-primary", "fingerprint": "d227f45ab14cf9ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9a8f6926405fd1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-programs.ts:33"}, "properties": {"repobilityId": "73f9b920e0db81aa", "scanner": "scanner-primary", "fingerprint": "f9a8f6926405fd1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09370346effe641a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-prod-health.ts:159"}, "properties": {"repobilityId": "eb8041b500c1e502", "scanner": "scanner-primary", "fingerprint": "09370346effe641a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2dd4f08903291da2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-data-integrity.ts:331"}, "properties": {"repobilityId": "1b57211ff01440f4", "scanner": "scanner-primary", "fingerprint": "2dd4f08903291da2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc2216aa7cbcc013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-coverage-rollup.ts:121"}, "properties": {"repobilityId": "997ffcf3b39aff26", "scanner": "scanner-primary", "fingerprint": "fc2216aa7cbcc013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-854e8c170d4c62ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reapply-program-matcher.ts:80"}, "properties": {"repobilityId": "e8db05b05a62de1f", "scanner": "scanner-primary", "fingerprint": "854e8c170d4c62ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76ad9d6a63721a3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-dest-rollup.ts:80"}, "properties": {"repobilityId": "92f215539e747845", "scanner": "scanner-primary", "fingerprint": "76ad9d6a63721a3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-896a1b2700d0bba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-scraper-coverage.ts:102"}, "properties": {"repobilityId": "b336837a42947b51", "scanner": "scanner-primary", "fingerprint": "896a1b2700d0bba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-574da8af823ab848", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify.ts:63"}, "properties": {"repobilityId": "03a13b4f4652feb2", "scanner": "scanner-primary", "fingerprint": "574da8af823ab848", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-201e15fdba792694", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-registry-integrity.ts:122"}, "properties": {"repobilityId": "92d0058516321eaf", "scanner": "scanner-primary", "fingerprint": "201e15fdba792694", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd0cd9b3f4729d50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-transfers.ts:33"}, "properties": {"repobilityId": "af54eb90666d8b6c", "scanner": "scanner-primary", "fingerprint": "cd0cd9b3f4729d50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a6e4b2011ba0dd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-course-availability-cache.ts:136"}, "properties": {"repobilityId": "5531dd90c77057ce", "scanner": "scanner-primary", "fingerprint": "4a6e4b2011ba0dd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f66650644ccd0204", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-transfer-universities-cache.ts:112"}, "properties": {"repobilityId": "65f2c0bf6e58e2ed", "scanner": "scanner-primary", "fingerprint": "f66650644ccd0204", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ace5373e0bac410", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-term-counts-snapshot.ts:102"}, "properties": {"repobilityId": "2667e26a21b463d1", "scanner": "scanner-primary", "fingerprint": "3ace5373e0bac410", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4c023cb13f9b3ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-benchmarks.ts:126"}, "properties": {"repobilityId": "dd33de9dc862ca7b", "scanner": "scanner-primary", "fingerprint": "f4c023cb13f9b3ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4348fcaa2d3849b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-search-intent.ts:73"}, "properties": {"repobilityId": "b09518947ed9f581", "scanner": "scanner-primary", "fingerprint": "4348fcaa2d3849b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99d3e5b8ccd5f63b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-assist-articulation.ts:53"}, "properties": {"repobilityId": "b71a9f3f9f823a29", "scanner": "scanner-primary", "fingerprint": "99d3e5b8ccd5f63b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25a8e02ce3c47ef3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-scorecard-programs.ts:65"}, "properties": {"repobilityId": "e4e5a4ab23bd8924", "scanner": "scanner-primary", "fingerprint": "25a8e02ce3c47ef3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cf43d53506df2b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/bench-transfer-lookup.ts:50"}, "properties": {"repobilityId": "121b58fdcc57e6c4", "scanner": "scanner-primary", "fingerprint": "1cf43d53506df2b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bb5bc981a228a9d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-config-data-consistency.ts:95"}, "properties": {"repobilityId": "95e3b29e2fe948c6", "scanner": "scanner-primary", "fingerprint": "9bb5bc981a228a9d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79710bdbe3239687", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-section-counts-snapshot.ts:84"}, "properties": {"repobilityId": "1b2b914fcb1ffbe9", "scanner": "scanner-primary", "fingerprint": "79710bdbe3239687", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74be726b63f7da8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-colleague.ts:198"}, "properties": {"repobilityId": "333e2d7ed15f3a6a", "scanner": "scanner-primary", "fingerprint": "74be726b63f7da8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c92bf4c3c9809c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-transfer-artsys.ts:382"}, "properties": {"repobilityId": "3752c7a42df5e13a", "scanner": "scanner-primary", "fingerprint": "6c92bf4c3c9809c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18e61e247852f699", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner8.ts:372"}, "properties": {"repobilityId": "a02ce13110255cee", "scanner": "scanner-primary", "fingerprint": "18e61e247852f699", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b686f0df862cb0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-custom.ts:162"}, "properties": {"repobilityId": "6161a59c39811c55", "scanner": "scanner-primary", "fingerprint": "7b686f0df862cb0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02dfede061023eb3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-jenzabar.ts:136"}, "properties": {"repobilityId": "1b80480eb9fadcff", "scanner": "scanner-primary", "fingerprint": "02dfede061023eb3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe0ca3cda2607e64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-banner-ssb.ts:223"}, "properties": {"repobilityId": "8f20df1001cf0883", "scanner": "scanner-primary", "fingerprint": "fe0ca3cda2607e64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f4e52c75cf2a036", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-programs.ts:46"}, "properties": {"repobilityId": "abc9fd051842903b", "scanner": "scanner-primary", "fingerprint": "3f4e52c75cf2a036", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d382c9b4b81972e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/md/scrape-ccbc.ts:88"}, "properties": {"repobilityId": "047b08348469b568", "scanner": "scanner-primary", "fingerprint": "d382c9b4b81972e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8122a71744c4f7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-transfer.ts:203"}, "properties": {"repobilityId": "3378e7090e2e37e9", "scanner": "scanner-primary", "fingerprint": "c8122a71744c4f7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2051e2dd2d76ded3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/id/scrape-programs.ts:29"}, "properties": {"repobilityId": "65f52a53f4e3317b", "scanner": "scanner-primary", "fingerprint": "2051e2dd2d76ded3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4e1e6b218661845", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-colleague.ts:47"}, "properties": {"repobilityId": "28fe7695c0380d3e", "scanner": "scanner-primary", "fingerprint": "c4e1e6b218661845", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7cc15014eddd4e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-transfer-core42.ts:115"}, "properties": {"repobilityId": "d187676d2d091ab6", "scanner": "scanner-primary", "fingerprint": "e7cc15014eddd4e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-80acc669b854070c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-jenzabar.ts:270"}, "properties": {"repobilityId": "4ad48bca9b09c056", "scanner": "scanner-primary", "fingerprint": "80acc669b854070c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92c8bf84d8d0d800", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mo/scrape-programs.ts:26"}, "properties": {"repobilityId": "a8adc1c285b2cd88", "scanner": "scanner-primary", "fingerprint": "92c8bf84d8d0d800", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01e33ef8d12fe977", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/normalize-existing-modes.ts:65"}, "properties": {"repobilityId": "dcc5dae85525ba04", "scanner": "scanner-primary", "fingerprint": "01e33ef8d12fe977", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7be5935d65579200", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ctclink.ts:445"}, "properties": {"repobilityId": "c9df9418f72784a0", "scanner": "scanner-primary", "fingerprint": "7be5935d65579200", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2982fdd6b8f2669", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-ccs-programs.ts:239"}, "properties": {"repobilityId": "2862350fc3f7a791", "scanner": "scanner-primary", "fingerprint": "b2982fdd6b8f2669", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-236b8681f9bf61d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-wsu.ts:287"}, "properties": {"repobilityId": "9725684d1982e485", "scanner": "scanner-primary", "fingerprint": "236b8681f9bf61d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbd1ce81f7d99c74", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-transfer-uw.ts:254"}, "properties": {"repobilityId": "8f6c6c57787a2c3c", "scanner": "scanner-primary", "fingerprint": "fbd1ce81f7d99c74", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd945d79606513be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-catalog-prereqs.ts:224"}, "properties": {"repobilityId": "e56a817b2ab4abdc", "scanner": "scanner-primary", "fingerprint": "bd945d79606513be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c721328a13602571", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wa/scrape-programs.ts:46"}, "properties": {"repobilityId": "05efedfcdb6dee48", "scanner": "scanner-primary", "fingerprint": "c721328a13602571", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b82376708991e19d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-colleague.ts:40"}, "properties": {"repobilityId": "e6fe109298c83f14", "scanner": "scanner-primary", "fingerprint": "b82376708991e19d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab0d35be1c257fa4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-wncc.ts:203"}, "properties": {"repobilityId": "81cfac45b88f5da3", "scanner": "scanner-primary", "fingerprint": "ab0d35be1c257fa4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c1096d9592d2e69", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-lptc.ts:236"}, "properties": {"repobilityId": "376b8f0b09b1ea38", "scanner": "scanner-primary", "fingerprint": "7c1096d9592d2e69", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85236a66dc03176b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-nicc.ts:237"}, "properties": {"repobilityId": "3c626adbb6c49eee", "scanner": "scanner-primary", "fingerprint": "85236a66dc03176b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1891eed65060e094", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-transfer.ts:180"}, "properties": {"repobilityId": "33817c6ae97a0cde", "scanner": "scanner-primary", "fingerprint": "1891eed65060e094", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38ed202baef037de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-programs.ts:29"}, "properties": {"repobilityId": "fcfde1e57829de7d", "scanner": "scanner-primary", "fingerprint": "38ed202baef037de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0c6fc1741f11258", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ne/scrape-mpcc.ts:213"}, "properties": {"repobilityId": "fd3f44f313158467", "scanner": "scanner-primary", "fingerprint": "e0c6fc1741f11258", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffece287948c89c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-colleague.ts:37"}, "properties": {"repobilityId": "b02aafa7b71da92e", "scanner": "scanner-primary", "fingerprint": "ffece287948c89c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65bb589b8036aa2d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uni.ts:74"}, "properties": {"repobilityId": "91e83cfdc99c6834", "scanner": "scanner-primary", "fingerprint": "65bb589b8036aa2d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2a98795352deca4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-uiowa.ts:107"}, "properties": {"repobilityId": "12ea38e35111f283", "scanner": "scanner-primary", "fingerprint": "a2a98795352deca4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23261e9d40632e6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ia/scrape-transfer-transit.ts:201"}, "properties": {"repobilityId": "739315ab557434f6", "scanner": "scanner-primary", "fingerprint": "23261e9d40632e6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-419ed0a10afdb081", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acts-catalogs.ts:326"}, "properties": {"repobilityId": "0f74e61e608fe5da", "scanner": "scanner-primary", "fingerprint": "419ed0a10afdb081", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a462f54009981d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ozarka.ts:367"}, "properties": {"repobilityId": "0f908f878447063f", "scanner": "scanner-primary", "fingerprint": "2a462f54009981d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-403c557d114ecdc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-uaccm.ts:347"}, "properties": {"repobilityId": "7f27fe813022709f", "scanner": "scanner-primary", "fingerprint": "403c557d114ecdc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55db41aad6059a72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-eacc.ts:325"}, "properties": {"repobilityId": "c148278e25c50e8b", "scanner": "scanner-primary", "fingerprint": "55db41aad6059a72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75643ce0a958644f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-nwacc.ts:166"}, "properties": {"repobilityId": "0da6d00adede44e6", "scanner": "scanner-primary", "fingerprint": "75643ce0a958644f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b26637954e7c67d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-seark-pdf-programs.ts:390"}, "properties": {"repobilityId": "a8a18e090d5a43f6", "scanner": "scanner-primary", "fingerprint": "b26637954e7c67d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b045b2128cf922b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-asu-jonesboro.ts:213"}, "properties": {"repobilityId": "f18a9a3e24202b95", "scanner": "scanner-primary", "fingerprint": "b045b2128cf922b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc5405fc1205e8f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-programs.ts:56"}, "properties": {"repobilityId": "e6fd4b480ec6c804", "scanner": "scanner-primary", "fingerprint": "bc5405fc1205e8f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-31d6198c2112a772", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-transfer-acalog-harvest.ts:220"}, "properties": {"repobilityId": "672919219174fb35", "scanner": "scanner-primary", "fingerprint": "31d6198c2112a772", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a900987dc4da884", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-ua-powerbi.ts:433"}, "properties": {"repobilityId": "b7a3efc355b8681f", "scanner": "scanner-primary", "fingerprint": "2a900987dc4da884", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b561da065ef551d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc.ts:311"}, "properties": {"repobilityId": "2d7d3647544408fb", "scanner": "scanner-primary", "fingerprint": "4b561da065ef551d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15775c99c2f33b84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ar/scrape-npc-prereqs.ts:48"}, "properties": {"repobilityId": "e6b1eb3d09666137", "scanner": "scanner-primary", "fingerprint": "15775c99c2f33b84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79e5c48a38e09661", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-colleague.ts:42"}, "properties": {"repobilityId": "9d74a8ce0e167417", "scanner": "scanner-primary", "fingerprint": "79e5c48a38e09661", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10fcb02622a39913", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-westmoreland.ts:289"}, "properties": {"repobilityId": "0f2a3b6a5e7424c2", "scanner": "scanner-primary", "fingerprint": "10fcb02622a39913", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e9b91c756c26aee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-transfer.ts:182"}, "properties": {"repobilityId": "3eb58162aae6dcfb", "scanner": "scanner-primary", "fingerprint": "8e9b91c756c26aee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8f4d96a5d1ef48a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-catalog-prereqs.ts:204"}, "properties": {"repobilityId": "4bfddf8d37479d29", "scanner": "scanner-primary", "fingerprint": "d8f4d96a5d1ef48a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffb9ec1bb41087e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-programs.ts:31"}, "properties": {"repobilityId": "c77264bb564c90d8", "scanner": "scanner-primary", "fingerprint": "ffb9ec1bb41087e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1646202349d52f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-northampton.ts:177"}, "properties": {"repobilityId": "e551dc5f36883a34", "scanner": "scanner-primary", "fingerprint": "b1646202349d52f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59a45fab9b7a87f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pa/scrape-pitt-tes.ts:394"}, "properties": {"repobilityId": "d07e653b9cc1bbfc", "scanner": "scanner-primary", "fingerprint": "59a45fab9b7a87f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95b351ff55dfa75e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cayuga.ts:175"}, "properties": {"repobilityId": "86525ef9b4f89c99", "scanner": "scanner-primary", "fingerprint": "95b351ff55dfa75e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8bb40097a6082bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-nassau-prereqs.ts:58"}, "properties": {"repobilityId": "473f3662ebbda7b4", "scanner": "scanner-primary", "fingerprint": "e8bb40097a6082bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc99f3fe09e0c26a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-herkimer.ts:113"}, "properties": {"repobilityId": "d45b3a14624ee4bf", "scanner": "scanner-primary", "fingerprint": "cc99f3fe09e0c26a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-171bbb49e873a6a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-programs.ts:142"}, "properties": {"repobilityId": "aa0d4f6db9eedc56", "scanner": "scanner-primary", "fingerprint": "171bbb49e873a6a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-441f0ef04c188e6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-other-programs.ts:104"}, "properties": {"repobilityId": "1c54a4781daf3ce3", "scanner": "scanner-primary", "fingerprint": "441f0ef04c188e6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee315e6b67f7ccd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-acalog-prereqs.ts:139"}, "properties": {"repobilityId": "ef7718b8b713d5f9", "scanner": "scanner-primary", "fingerprint": "ee315e6b67f7ccd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-19e2a1502fb29d0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-cuny.ts:599"}, "properties": {"repobilityId": "68879a9173f2fb79", "scanner": "scanner-primary", "fingerprint": "19e2a1502fb29d0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd6201a1ac9b8260", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-step.ts:269"}, "properties": {"repobilityId": "970d526354539dcb", "scanner": "scanner-primary", "fingerprint": "dd6201a1ac9b8260", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-253a0636a04d9b28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-mvcc-programs.ts:69"}, "properties": {"repobilityId": "03cad83a9626162c", "scanner": "scanner-primary", "fingerprint": "253a0636a04d9b28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b24e8f3605517d71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-suny-colleague.ts:34"}, "properties": {"repobilityId": "0027bea81aa79bf7", "scanner": "scanner-primary", "fingerprint": "b24e8f3605517d71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03766f98a1d1263f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-catalog-prereqs.ts:349"}, "properties": {"repobilityId": "559355712839a4b2", "scanner": "scanner-primary", "fingerprint": "03766f98a1d1263f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-150a5610de013309", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-programs.ts:52"}, "properties": {"repobilityId": "4092e845688b2092", "scanner": "scanner-primary", "fingerprint": "150a5610de013309", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d6dc9bb6601049c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-transfer-trex.ts:416"}, "properties": {"repobilityId": "4675c86d380a8a75", "scanner": "scanner-primary", "fingerprint": "6d6dc9bb6601049c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26ebea8a4e63e44a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ny/scrape-fit-prereqs.ts:66"}, "properties": {"repobilityId": "118993b73792091e", "scanner": "scanner-primary", "fingerprint": "26ebea8a4e63e44a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66795ab1e58c01a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-jones.ts:174"}, "properties": {"repobilityId": "08fab21eeea87802", "scanner": "scanner-primary", "fingerprint": "66795ab1e58c01a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b91ee644219a43a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-hinds.ts:123"}, "properties": {"repobilityId": "f3e2b09c37ef39ac", "scanner": "scanner-primary", "fingerprint": "b91ee644219a43a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-992df90129097e66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-prcc-bookstore.ts:189"}, "properties": {"repobilityId": "db80bd708c4eeedd", "scanner": "scanner-primary", "fingerprint": "992df90129097e66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-737cbf8711aba39a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-banner8.ts:39"}, "properties": {"repobilityId": "c91536ff1a25408b", "scanner": "scanner-primary", "fingerprint": "737cbf8711aba39a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e60bad71600806d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-mgccc.ts:190"}, "properties": {"repobilityId": "9042488ed9310c68", "scanner": "scanner-primary", "fingerprint": "e60bad71600806d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98ec12f52bcb3f02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-coahoma.ts:175"}, "properties": {"repobilityId": "223d2f69ce34f222", "scanner": "scanner-primary", "fingerprint": "98ec12f52bcb3f02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-caa81a15027423fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-catalog-prereqs.ts:153"}, "properties": {"repobilityId": "e32f9d52822272ab", "scanner": "scanner-primary", "fingerprint": "caa81a15027423fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c07f6683b09e77d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-programs.ts:66"}, "properties": {"repobilityId": "b7118ba6cdb4b058", "scanner": "scanner-primary", "fingerprint": "c07f6683b09e77d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59fa907a34904f77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-itawamba.ts:142"}, "properties": {"repobilityId": "6fafffecb9911926", "scanner": "scanner-primary", "fingerprint": "59fa907a34904f77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ec5570c2030fca4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-athena.ts:346"}, "properties": {"repobilityId": "77aaad1978af324a", "scanner": "scanner-primary", "fingerprint": "5ec5570c2030fca4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0325f82587e7126a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ms/scrape-transfer-olemiss.ts:95"}, "properties": {"repobilityId": "b6b78a2001e55ef3", "scanner": "scanner-primary", "fingerprint": "0325f82587e7126a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12e20a83a026af14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-misc-programs.ts:56"}, "properties": {"repobilityId": "f6966f2f218a3337", "scanner": "scanner-primary", "fingerprint": "12e20a83a026af14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05834646c0821314", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts:115"}, "properties": {"repobilityId": "e0588d4d3f513d2c", "scanner": "scanner-primary", "fingerprint": "05834646c0821314", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-698f5825d96b395d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-easternflorida.ts:279"}, "properties": {"repobilityId": "650b562af941e7c8", "scanner": "scanner-primary", "fingerprint": "698f5825d96b395d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f72f9b785e7edaf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-palmbeachstate.ts:267"}, "properties": {"repobilityId": "5ae19d77259adb95", "scanner": "scanner-primary", "fingerprint": "f72f9b785e7edaf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bb342621a4ddba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-scns-titles.ts:70"}, "properties": {"repobilityId": "d76a3326fb74cb17", "scanner": "scanner-primary", "fingerprint": "9bb342621a4ddba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-657e93f90111db0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-scns-flatfile.ts:161"}, "properties": {"repobilityId": "a8fa43f4dc7251e1", "scanner": "scanner-primary", "fingerprint": "657e93f90111db0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0f0d823bb5cf5c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/discover-catalogs.ts:123"}, "properties": {"repobilityId": "f6cff00b50f1bd90", "scanner": "scanner-primary", "fingerprint": "c0f0d823bb5cf5c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1439ee02060943ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-coursedog.ts:41"}, "properties": {"repobilityId": "23aeaf9b5de1d166", "scanner": "scanner-primary", "fingerprint": "1439ee02060943ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cce5f35c98235313", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-tcc.ts:237"}, "properties": {"repobilityId": "a3084d20d747f274", "scanner": "scanner-primary", "fingerprint": "cce5f35c98235313", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5333dfbfd4050600", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-hccfl.ts:170"}, "properties": {"repobilityId": "c37df6658f745c95", "scanner": "scanner-primary", "fingerprint": "5333dfbfd4050600", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d85c0039989df51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-spcollege.ts:309"}, "properties": {"repobilityId": "9fb44f6227a10bfc", "scanner": "scanner-primary", "fingerprint": "1d85c0039989df51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6555423ea4d79e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-seminolestate.ts:234"}, "properties": {"repobilityId": "c4bb64c43689452a", "scanner": "scanner-primary", "fingerprint": "f6555423ea4d79e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9018ea6db34b79b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-mdc.ts:420"}, "properties": {"repobilityId": "52f9d18e7d0dcff9", "scanner": "scanner-primary", "fingerprint": "d9018ea6db34b79b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cad4a0c71345c5b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/patch-mdc-campus.ts:42"}, "properties": {"repobilityId": "06ca84f6e040faf7", "scanner": "scanner-primary", "fingerprint": "cad4a0c71345c5b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc7dfa3838f615cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-banner-ssb.ts:240"}, "properties": {"repobilityId": "b9f71d14b11a8058", "scanner": "scanner-primary", "fingerprint": "bc7dfa3838f615cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5c9d254e677ee4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-acalog-programs.ts:50"}, "properties": {"repobilityId": "aa0c3c04170538ce", "scanner": "scanner-primary", "fingerprint": "c5c9d254e677ee4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-403803ae5fcb26ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-nfc.ts:184"}, "properties": {"repobilityId": "5031c105cf023603", "scanner": "scanner-primary", "fingerprint": "403803ae5fcb26ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70fc20f12744ccd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-daytonastate.ts:406"}, "properties": {"repobilityId": "9150095876f7f53b", "scanner": "scanner-primary", "fingerprint": "70fc20f12744ccd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3a2493a8963f7f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-cf.ts:231"}, "properties": {"repobilityId": "88cca25d7cbe94f5", "scanner": "scanner-primary", "fingerprint": "f3a2493a8963f7f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-163e1c6c3e06a79e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/enrich-courseleaf-titles.ts:81"}, "properties": {"repobilityId": "fd4dc88c39e7598f", "scanner": "scanner-primary", "fingerprint": "163e1c6c3e06a79e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca79f8dbbe8591a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-santafe.ts:293"}, "properties": {"repobilityId": "a7f314f2e866a5d1", "scanner": "scanner-primary", "fingerprint": "ca79f8dbbe8591a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b225334f886bcdac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fl/scrape-broward.ts:316"}, "properties": {"repobilityId": "131f1cdc178726b0", "scanner": "scanner-primary", "fingerprint": "b225334f886bcdac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ea11edc5bf6a9d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-banner8.ts:26"}, "properties": {"repobilityId": "19d561c6985e080d", "scanner": "scanner-primary", "fingerprint": "0ea11edc5bf6a9d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23c8df756015fb16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-transfer-ccn.ts:124"}, "properties": {"repobilityId": "b350ba414183e55b", "scanner": "scanner-primary", "fingerprint": "23c8df756015fb16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b44d05eac775b41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-highlands.ts:29"}, "properties": {"repobilityId": "4996eb68fa5c6607", "scanner": "scanner-primary", "fingerprint": "3b44d05eac775b41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22c53d13d4c4842e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-cdkc.ts:114"}, "properties": {"repobilityId": "53330db46ab2aa39", "scanner": "scanner-primary", "fingerprint": "22c53d13d4c4842e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae4eac8b3eb4dcf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-lbhc.ts:180"}, "properties": {"repobilityId": "3c472c76275eeeb1", "scanner": "scanner-primary", "fingerprint": "ae4eac8b3eb4dcf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ef54ee7b92e91dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:266"}, "properties": {"repobilityId": "90c99679610c3e86", "scanner": "scanner-primary", "fingerprint": "7ef54ee7b92e91dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b8e8793d6640044", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-fvcc.ts:189"}, "properties": {"repobilityId": "096857d5f7c48b81", "scanner": "scanner-primary", "fingerprint": "2b8e8793d6640044", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a02f8fe29badd39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mt/scrape-skc.ts:135"}, "properties": {"repobilityId": "f5a4580706f5465d", "scanner": "scanner-primary", "fingerprint": "9a02f8fe29badd39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71d03a930b8bcd16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-smartcatalogiq-programs.ts:193"}, "properties": {"repobilityId": "56fe0690ce015c27", "scanner": "scanner-primary", "fingerprint": "71d03a930b8bcd16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ebcb1112fb67699", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-cleancatalog-programs.ts:57"}, "properties": {"repobilityId": "f048d55bf5dd1f51", "scanner": "scanner-primary", "fingerprint": "0ebcb1112fb67699", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8eb64ca3b8283c48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-usg.ts:201"}, "properties": {"repobilityId": "713b2e1b1070e8ad", "scanner": "scanner-primary", "fingerprint": "8eb64ca3b8283c48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-540615e30289da9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-uga.ts:132"}, "properties": {"repobilityId": "2c0194bef444ab36", "scanner": "scanner-primary", "fingerprint": "540615e30289da9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeef920e1943d86b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gatech.ts:358"}, "properties": {"repobilityId": "abd2eda04bc2d631", "scanner": "scanner-primary", "fingerprint": "aeef920e1943d86b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25a5a50623cf81a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-banner-ssb.ts:252"}, "properties": {"repobilityId": "ab30fd53ef6cf852", "scanner": "scanner-primary", "fingerprint": "25a5a50623cf81a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ebdd195b48b95327", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-programs.ts:48"}, "properties": {"repobilityId": "c225c078993e0d49", "scanner": "scanner-primary", "fingerprint": "ebdd195b48b95327", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d332aa83f3a076eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-nimble-cms-programs.ts:86"}, "properties": {"repobilityId": "c3b8b29147803030", "scanner": "scanner-primary", "fingerprint": "d332aa83f3a076eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-920c09cb66417298", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-transfer-gsu.ts:146"}, "properties": {"repobilityId": "b650aa3c7beef4f6", "scanner": "scanner-primary", "fingerprint": "920c09cb66417298", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d80c4d31fc5d909", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts:387"}, "properties": {"repobilityId": "913e1d1f6488e371", "scanner": "scanner-primary", "fingerprint": "6d80c4d31fc5d909", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bfa45c7143461e5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-banner8.ts:298"}, "properties": {"repobilityId": "a2baedf0e5a18f90", "scanner": "scanner-primary", "fingerprint": "bfa45c7143461e5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ede4e090d7c6c66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer.ts:215"}, "properties": {"repobilityId": "6e22342222967849", "scanner": "scanner-primary", "fingerprint": "2ede4e090d7c6c66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0169a997eb28e9c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-transfer-keene.ts:203"}, "properties": {"repobilityId": "363450155ebe7706", "scanner": "scanner-primary", "fingerprint": "0169a997eb28e9c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe8b4a5099e6532e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-catalog-prereqs.ts:198"}, "properties": {"repobilityId": "8ebf763349d74fcd", "scanner": "scanner-primary", "fingerprint": "fe8b4a5099e6532e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9d1335e40767fb0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nh/scrape-programs.ts:56"}, "properties": {"repobilityId": "c383f1b42de7e6cb", "scanner": "scanner-primary", "fingerprint": "d9d1335e40767fb0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1886732b74688f2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-colleague.ts:36"}, "properties": {"repobilityId": "53274e70d006c0ea", "scanner": "scanner-primary", "fingerprint": "1886732b74688f2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eca7f9623faa71d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-banner8.ts:30"}, "properties": {"repobilityId": "70c701cada2100cb", "scanner": "scanner-primary", "fingerprint": "0eca7f9623faa71d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1714701eb4778d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-ords.ts:88"}, "properties": {"repobilityId": "8465659d94dabce7", "scanner": "scanner-primary", "fingerprint": "b1714701eb4778d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d9f6dfc6614151c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-transfer-osu.ts:91"}, "properties": {"repobilityId": "5300377c647420e0", "scanner": "scanner-primary", "fingerprint": "d9f6dfc6614151c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5eb9c681898e4cd1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/oh/scrape-programs.ts:28"}, "properties": {"repobilityId": "c2252dadcdbcf36f", "scanner": "scanner-primary", "fingerprint": "5eb9c681898e4cd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-183df670095fcf15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-lctcs-banner-ssb.ts:58"}, "properties": {"repobilityId": "e5f84e71e9c5458b", "scanner": "scanner-primary", "fingerprint": "183df670095fcf15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee8a565ab2f86a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-coursedog.ts:47"}, "properties": {"repobilityId": "0a4f27edb876b218", "scanner": "scanner-primary", "fingerprint": "ee8a565ab2f86a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9b4642973021bdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-programs.ts:23"}, "properties": {"repobilityId": "bacddf9b26c918ef", "scanner": "scanner-primary", "fingerprint": "b9b4642973021bdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc6121cd51762222", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/la/scrape-regents-matrix.ts:118"}, "properties": {"repobilityId": "3f065a2cbffedf09", "scanner": "scanner-primary", "fingerprint": "cc6121cd51762222", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6d1084310df868c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-colleague.ts:202"}, "properties": {"repobilityId": "67c8b9e5140f3072", "scanner": "scanner-primary", "fingerprint": "c6d1084310df868c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec29a24c80df3088", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-transfer-mitransfer.ts:192"}, "properties": {"repobilityId": "b55893aad201f02c", "scanner": "scanner-primary", "fingerprint": "ec29a24c80df3088", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e00b82ae2b25b653", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-misc-programs.ts:56"}, "properties": {"repobilityId": "46b41e21f9ae60c8", "scanner": "scanner-primary", "fingerprint": "e00b82ae2b25b653", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd8852e14057522d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts:115"}, "properties": {"repobilityId": "c954ef060542bad1", "scanner": "scanner-primary", "fingerprint": "dd8852e14057522d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6819ac211b593960", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/discover-catalogs.ts:118"}, "properties": {"repobilityId": "a4335c4477faf2e8", "scanner": "scanner-primary", "fingerprint": "6819ac211b593960", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-741cd24dda90d8b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-banner-ssb.ts:221"}, "properties": {"repobilityId": "d4cd54db3b9b5f5f", "scanner": "scanner-primary", "fingerprint": "741cd24dda90d8b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47ea20ff6fa69ecf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mi/scrape-acalog-programs.ts:50"}, "properties": {"repobilityId": "351bf1f81a4001c7", "scanner": "scanner-primary", "fingerprint": "47ea20ff6fa69ecf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbd7ec9fd9cac7dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-colleague.ts:31"}, "properties": {"repobilityId": "015b6b5c42abf3ac", "scanner": "scanner-primary", "fingerprint": "fbd7ec9fd9cac7dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-168e223e80a37cec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-maricopa.ts:271"}, "properties": {"repobilityId": "f4a163ad8026f7e3", "scanner": "scanner-primary", "fingerprint": "168e223e80a37cec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e0bdf07b6112f3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-jenzabar-cmc.ts:244"}, "properties": {"repobilityId": "ffece1f36ea9f238", "scanner": "scanner-primary", "fingerprint": "9e0bdf07b6112f3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7c314f771ecea83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-transfer-aztransfer.ts:269"}, "properties": {"repobilityId": "c15ab284eb2579e6", "scanner": "scanner-primary", "fingerprint": "c7c314f771ecea83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea86dafa9d9f8d18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-banner-ssb.ts:36"}, "properties": {"repobilityId": "909a85c0e244b1b0", "scanner": "scanner-primary", "fingerprint": "ea86dafa9d9f8d18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8b13eb4ec66f6ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-dine.ts:449"}, "properties": {"repobilityId": "72e8ec789a93f676", "scanner": "scanner-primary", "fingerprint": "f8b13eb4ec66f6ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-550c2dbf0a6089fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/az/scrape-programs.ts:54"}, "properties": {"repobilityId": "c04a573b775f0d2b", "scanner": "scanner-primary", "fingerprint": "550c2dbf0a6089fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84a4702c89e238c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-ccc.ts:272"}, "properties": {"repobilityId": "39333bac51485b44", "scanner": "scanner-primary", "fingerprint": "84a4702c89e238c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb1d4f545d7044c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-colleague.ts:31"}, "properties": {"repobilityId": "09d03b0a5c49841a", "scanner": "scanner-primary", "fingerprint": "fb1d4f545d7044c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2798f5f62e8ab822", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-misc-programs.ts:56"}, "properties": {"repobilityId": "ea795f4d42dab9a0", "scanner": "scanner-primary", "fingerprint": "2798f5f62e8ab822", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-438d87cba1d656dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-niu.ts:89"}, "properties": {"repobilityId": "e49ce7c47c19b91c", "scanner": "scanner-primary", "fingerprint": "438d87cba1d656dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-463f9b4fc9e9d6fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-smartcatalogiq-programs.ts:115"}, "properties": {"repobilityId": "cd72f9ef8b84c17c", "scanner": "scanner-primary", "fingerprint": "463f9b4fc9e9d6fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b519daf98e10ea9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-iecc.ts:61"}, "properties": {"repobilityId": "2db5ee0acbcad978", "scanner": "scanner-primary", "fingerprint": "2b519daf98e10ea9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac5a45beb12638b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/discover-catalogs.ts:118"}, "properties": {"repobilityId": "d56380fb089fe5f7", "scanner": "scanner-primary", "fingerprint": "ac5a45beb12638b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9f75532e4de8cc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-transfer-siu.ts:229"}, "properties": {"repobilityId": "a6e4930e78af8ee9", "scanner": "scanner-primary", "fingerprint": "b9f75532e4de8cc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44fee265da1b21e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/il/scrape-acalog-programs.ts:50"}, "properties": {"repobilityId": "82cd2be5d2f42301", "scanner": "scanner-primary", "fingerprint": "44fee265da1b21e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fe642b0df2840f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/sweep-stale-terms.ts:211"}, "properties": {"repobilityId": "889dd09ed4a48d8b", "scanner": "scanner-primary", "fingerprint": "0fe642b0df2840f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-279f76e4a11f08be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-colleague.ts:405"}, "properties": {"repobilityId": "8072b3f450c5f29a", "scanner": "scanner-primary", "fingerprint": "279f76e4a11f08be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7693658dfcc4c526", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/supabase-import.ts:156"}, "properties": {"repobilityId": "a5480ba734069c01", "scanner": "scanner-primary", "fingerprint": "7693658dfcc4c526", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-daa2140158df2476", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/http-retry.ts:84"}, "properties": {"repobilityId": "f2736b69510b78fd", "scanner": "scanner-primary", "fingerprint": "daa2140158df2476", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63ad86d335b689a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-college.ts:875"}, "properties": {"repobilityId": "88c9ae0f1a545394", "scanner": "scanner-primary", "fingerprint": "63ad86d335b689a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e664530ee6ef55e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-programs.ts:512"}, "properties": {"repobilityId": "50b66cfcccf09858", "scanner": "scanner-primary", "fingerprint": "1e664530ee6ef55e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52124ddda760eaec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-ctnet-multisource.ts:159"}, "properties": {"repobilityId": "7606ca4582a4a5fa", "scanner": "scanner-primary", "fingerprint": "52124ddda760eaec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1911e05293af773", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/lib/bootstrap-state.ts:261"}, "properties": {"repobilityId": "0918cac9e2a06ef7", "scanner": "scanner-primary", "fingerprint": "e1911e05293af773", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-d64c260a7c7c072e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bootstrap-state.ts:414"}, "properties": {"repobilityId": "5c1befdfff9717d4", "scanner": "scanner-primary", "fingerprint": "d64c260a7c7c072e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d8495adb0a06c7a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-colleges.ts:315"}, "properties": {"repobilityId": "c6e41471eecdced2", "scanner": "scanner-primary", "fingerprint": "d8495adb0a06c7a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-441743ab2f6946d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-catalog.ts:57"}, "properties": {"repobilityId": "29957e961970e5fd", "scanner": "scanner-primary", "fingerprint": "441743ab2f6946d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-884d21bdb4f074c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/state-health-rollup.ts:362"}, "properties": {"repobilityId": "800707c00d92a175", "scanner": "scanner-primary", "fingerprint": "884d21bdb4f074c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8110b521dac1e35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-cleancatalog-programs.ts:416"}, "properties": {"repobilityId": "f50328ea2c77682d", "scanner": "scanner-primary", "fingerprint": "b8110b521dac1e35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca3856bec8b97fb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-collegetransfer.ts:145"}, "properties": {"repobilityId": "1f141ca2b8075a53", "scanner": "scanner-primary", "fingerprint": "ca3856bec8b97fb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9293518a43795a17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog-programs.ts:537"}, "properties": {"repobilityId": "e830ccc640451cf0", "scanner": "scanner-primary", "fingerprint": "9293518a43795a17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-493ba7b146dcef23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-coursedog.ts:422"}, "properties": {"repobilityId": "022654d87f2dc763", "scanner": "scanner-primary", "fingerprint": "493ba7b146dcef23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34c1599e88d82ac4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-prereq-regression.ts:89"}, "properties": {"repobilityId": "d75196c520b83b9c", "scanner": "scanner-primary", "fingerprint": "34c1599e88d82ac4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbec42e2f1df02bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper-matrix.ts:80"}, "properties": {"repobilityId": "31eb3305966860e7", "scanner": "scanner-primary", "fingerprint": "bbec42e2f1df02bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d372b801ccb5919", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discover-programs.ts:250"}, "properties": {"repobilityId": "b104e5a2b954d62c", "scanner": "scanner-primary", "fingerprint": "3d372b801ccb5919", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a78efbabd89ba1ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/coverage-expansion.ts:173"}, "properties": {"repobilityId": "01cdc062c46aae5a", "scanner": "scanner-primary", "fingerprint": "a78efbabd89ba1ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47a1381ee181fcc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/run-migration.ts:42"}, "properties": {"repobilityId": "e59094ffc62664a5", "scanner": "scanner-primary", "fingerprint": "47a1381ee181fcc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6404920e3b17e85c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/refingerprint-sweep.ts:195"}, "properties": {"repobilityId": "7b8649c745a05d74", "scanner": "scanner-primary", "fingerprint": "6404920e3b17e85c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7bcaecafdbab3097", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/resolve-terms.ts:326"}, "properties": {"repobilityId": "82a55bd8645cb036", "scanner": "scanner-primary", "fingerprint": "7bcaecafdbab3097", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e435f1a2118a0c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar-webforms.ts:378"}, "properties": {"repobilityId": "e7f51b2fb83ba03e", "scanner": "scanner-primary", "fingerprint": "6e435f1a2118a0c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54ac96654ed85f95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-jenzabar.ts:407"}, "properties": {"repobilityId": "a7267fdb2b4ca85d", "scanner": "scanner-primary", "fingerprint": "54ac96654ed85f95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f3c41c4fa377af0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-courseleaf-programs.ts:81"}, "properties": {"repobilityId": "f879dd0839f7d860", "scanner": "scanner-primary", "fingerprint": "3f3c41c4fa377af0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aac712e61af60ff4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-scrape-health.ts:397"}, "properties": {"repobilityId": "2f387cbccb2b8bc0", "scanner": "scanner-primary", "fingerprint": "aac712e61af60ff4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db9b7b2bad9483fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-ssb.ts:599"}, "properties": {"repobilityId": "a942cc11969e8a29", "scanner": "scanner-primary", "fingerprint": "db9b7b2bad9483fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70dc270f04d8fcd4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/articulation-portals.ts:32"}, "properties": {"repobilityId": "c41e03a8bc360902", "scanner": "scanner-primary", "fingerprint": "70dc270f04d8fcd4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18b6ccdde4c6f895", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-banner-8.ts:563"}, "properties": {"repobilityId": "144fdf211072dde3", "scanner": "scanner-primary", "fingerprint": "18b6ccdde4c6f895", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df170cb681d304c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-acalog-programs.ts:556"}, "properties": {"repobilityId": "b9a9253dbd8f0af4", "scanner": "scanner-primary", "fingerprint": "df170cb681d304c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5222a61c38745879", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fetch-zipcodes.ts:84"}, "properties": {"repobilityId": "d9a28bbdd9e5cae2", "scanner": "scanner-primary", "fingerprint": "5222a61c38745879", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e0d4d088b3d2bca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/backfill-state-health-history.ts:203"}, "properties": {"repobilityId": "a84817bb91f520c5", "scanner": "scanner-primary", "fingerprint": "2e0d4d088b3d2bca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-516aa6357ce0c820", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-config-urls.ts:167"}, "properties": {"repobilityId": "13bc88a5aa626ce0", "scanner": "scanner-primary", "fingerprint": "516aa6357ce0c820", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18b93a1be1430b69", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-nimble-cms-programs.ts:369"}, "properties": {"repobilityId": "1dd2be7751958f64", "scanner": "scanner-primary", "fingerprint": "18b93a1be1430b69", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7d0d2f7fb283249", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/fingerprint-state-sweep.ts:237"}, "properties": {"repobilityId": "3d5527422c99239d", "scanner": "scanner-primary", "fingerprint": "d7d0d2f7fb283249", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6cc9466f2dcabc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/colleague-terms.ts:275"}, "properties": {"repobilityId": "0cbb57a3ebcd9df2", "scanner": "scanner-primary", "fingerprint": "c6cc9466f2dcabc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68bd67c83745093c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/cluster-fingerprints.ts:662"}, "properties": {"repobilityId": "e2b1fd47ac131883", "scanner": "scanner-primary", "fingerprint": "68bd67c83745093c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfb9ff9200a44510", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/triage-scraper-health.ts:591"}, "properties": {"repobilityId": "1243ba3d9ce9fcc7", "scanner": "scanner-primary", "fingerprint": "cfb9ff9200a44510", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4452df3f98517389", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/aggregate-prereqs.ts:139"}, "properties": {"repobilityId": "ce68c60a3e8b73b5", "scanner": "scanner-primary", "fingerprint": "4452df3f98517389", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21e38f9e236dfd9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-diff.ts:302"}, "properties": {"repobilityId": "9e54b77f084c352a", "scanner": "scanner-primary", "fingerprint": "21e38f9e236dfd9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a7888bd95f33dee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/add-state.ts:284"}, "properties": {"repobilityId": "288e38c6b70d7594", "scanner": "scanner-primary", "fingerprint": "5a7888bd95f33dee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-216f0bd07052f0b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scrape-smartcatalogiq-prereqs.ts:216"}, "properties": {"repobilityId": "7a63347566a64f8d", "scanner": "scanner-primary", "fingerprint": "216f0bd07052f0b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9efea706c91deb7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-colleague.ts:239"}, "properties": {"repobilityId": "e5a787b14a25c268", "scanner": "scanner-primary", "fingerprint": "9efea706c91deb7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4e6440df9eb042d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-transfer.ts:566"}, "properties": {"repobilityId": "68436f0cf5e277e6", "scanner": "scanner-primary", "fingerprint": "f4e6440df9eb042d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aac65b8c755996c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-ocean.ts:189"}, "properties": {"repobilityId": "07e8abd383d96107", "scanner": "scanner-primary", "fingerprint": "aac65b8c755996c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f61349c3c3d23d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-banner-ssb.ts:215"}, "properties": {"repobilityId": "89d8fca91b45b155", "scanner": "scanner-primary", "fingerprint": "1f61349c3c3d23d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f97f879c39106b13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-salem.ts:162"}, "properties": {"repobilityId": "d4c0bb4bb44eb066", "scanner": "scanner-primary", "fingerprint": "f97f879c39106b13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e605f246d3ce1337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-programs.ts:32"}, "properties": {"repobilityId": "2642b6b8f70a44c3", "scanner": "scanner-primary", "fingerprint": "e605f246d3ce1337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdfd6f02a5faea3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nj/scrape-rcsj.ts:299"}, "properties": {"repobilityId": "745edf1152e97ada", "scanner": "scanner-primary", "fingerprint": "fdfd6f02a5faea3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c98dff93e4c5db5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague.ts:74"}, "properties": {"repobilityId": "b1dfcf41773b269c", "scanner": "scanner-primary", "fingerprint": "1c98dff93e4c5db5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb370426ca4f0b02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-cerritos.ts:617"}, "properties": {"repobilityId": "4f30365bfda68240", "scanner": "scanner-primary", "fingerprint": "fb370426ca4f0b02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ac3626f58591d48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-redwoods.ts:677"}, "properties": {"repobilityId": "a985cbda84f97e1c", "scanner": "scanner-primary", "fingerprint": "8ac3626f58591d48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5cbc3f6e3306bec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-rccd.ts:311"}, "properties": {"repobilityId": "79705cd0f231f72d", "scanner": "scanner-primary", "fingerprint": "c5cbc3f6e3306bec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-664c6f553de8302c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-template-programs.ts:149"}, "properties": {"repobilityId": "b4734fecebf1bbd3", "scanner": "scanner-primary", "fingerprint": "664c6f553de8302c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18c74da4309ecc05", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-lbcc.ts:424"}, "properties": {"repobilityId": "8beecf99dcf52c6f", "scanner": "scanner-primary", "fingerprint": "18c74da4309ecc05", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e9dc73daa40c84d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sdccd.ts:260"}, "properties": {"repobilityId": "1d4264cc5b666f5a", "scanner": "scanner-primary", "fingerprint": "4e9dc73daa40c84d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f8937bd08c38057", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-colleague-variants.ts:530"}, "properties": {"repobilityId": "0c1476017863e0e5", "scanner": "scanner-primary", "fingerprint": "5f8937bd08c38057", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83a0e61d07b385de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-ccsf.ts:361"}, "properties": {"repobilityId": "39a6c3ede5836b04", "scanner": "scanner-primary", "fingerprint": "83a0e61d07b385de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ab4aaaf88ed9ee0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-yosemite.ts:492"}, "properties": {"repobilityId": "2554f08d078288e7", "scanner": "scanner-primary", "fingerprint": "2ab4aaaf88ed9ee0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e46faf67294e59d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-smc.ts:301"}, "properties": {"repobilityId": "5670f302f74bee91", "scanner": "scanner-primary", "fingerprint": "8e46faf67294e59d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b03517f0a27b46a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-westhills.ts:72"}, "properties": {"repobilityId": "2f7f7ab57801e18f", "scanner": "scanner-primary", "fingerprint": "9b03517f0a27b46a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a00b8a4b75a7f807", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/gen-direct-matches.ts:29"}, "properties": {"repobilityId": "c353093f9afe8a1d", "scanner": "scanner-primary", "fingerprint": "a00b8a4b75a7f807", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec2b3d733273ab6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-laccd.ts:621"}, "properties": {"repobilityId": "2372e402cc542c2c", "scanner": "scanner-primary", "fingerprint": "ec2b3d733273ab6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f304c6bf979587f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-4cd.ts:252"}, "properties": {"repobilityId": "cea9139dee08fa91", "scanner": "scanner-primary", "fingerprint": "0f304c6bf979587f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a288b446c341967", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-peralta.ts:239"}, "properties": {"repobilityId": "54e56725d53740b5", "scanner": "scanner-primary", "fingerprint": "7a288b446c341967", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98a104a801fa974c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-canyons.ts:664"}, "properties": {"repobilityId": "ebbfba018ee077e5", "scanner": "scanner-primary", "fingerprint": "98a104a801fa974c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7626357fd5c8f350", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-banner-cluster.ts:203"}, "properties": {"repobilityId": "1b5851dffd26a5b6", "scanner": "scanner-primary", "fingerprint": "7626357fd5c8f350", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac8e938d043aefd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-imperial.ts:429"}, "properties": {"repobilityId": "4e1efb8c4db24003", "scanner": "scanner-primary", "fingerprint": "ac8e938d043aefd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f06b754d11662ae3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-socccd.ts:455"}, "properties": {"repobilityId": "9debad283d65cf12", "scanner": "scanner-primary", "fingerprint": "f06b754d11662ae3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4d91a0a9a2e409e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-foothill.ts:244"}, "properties": {"repobilityId": "99cfb738bd201044", "scanner": "scanner-primary", "fingerprint": "a4d91a0a9a2e409e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c2912f69d40f54f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/normalize-unknown-modes.ts:62"}, "properties": {"repobilityId": "1f1ef43e87551b43", "scanner": "scanner-primary", "fingerprint": "5c2912f69d40f54f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-befff18318223a83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/explore-assist-articulation.ts:115"}, "properties": {"repobilityId": "952faefe259d8231", "scanner": "scanner-primary", "fingerprint": "befff18318223a83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eef1aa9eaba6781f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-losrios.ts:484"}, "properties": {"repobilityId": "237139b083f7e532", "scanner": "scanner-primary", "fingerprint": "eef1aa9eaba6781f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd2c9ef67fa5439d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-transfer-assist.ts:213"}, "properties": {"repobilityId": "041c3ddcd9eb5b2c", "scanner": "scanner-primary", "fingerprint": "bd2c9ef67fa5439d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-891a4b06633fcb4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-wvm.ts:167"}, "properties": {"repobilityId": "8cef203d371b864a", "scanner": "scanner-primary", "fingerprint": "891a4b06633fcb4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ded6d1d58eec2f6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-delta.ts:343"}, "properties": {"repobilityId": "9693d5b66fb12a68", "scanner": "scanner-primary", "fingerprint": "ded6d1d58eec2f6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7d74e66b9a7e1148", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbccd.ts:459"}, "properties": {"repobilityId": "170e9d25180e5d3e", "scanner": "scanner-primary", "fingerprint": "7d74e66b9a7e1148", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-987e2e043b23899e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-marin.ts:448"}, "properties": {"repobilityId": "7ff5ffbf6089cd56", "scanner": "scanner-primary", "fingerprint": "987e2e043b23899e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0ab421574b0c6b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-assist-receivers.ts:274"}, "properties": {"repobilityId": "493e4b5ef3a75555", "scanner": "scanner-primary", "fingerprint": "e0ab421574b0c6b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6d00184d2b934cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-sbcc.ts:700"}, "properties": {"repobilityId": "8da1ea2747a0f562", "scanner": "scanner-primary", "fingerprint": "b6d00184d2b934cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3168d196d2fea8d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ca/scrape-deanza.ts:267"}, "properties": {"repobilityId": "c3544cd90fc68b6c", "scanner": "scanner-primary", "fingerprint": "3168d196d2fea8d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d479b43333c97583", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs-acalog.ts:39"}, "properties": {"repobilityId": "208673924203669d", "scanner": "scanner-primary", "fingerprint": "d479b43333c97583", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-303eb57ad9b01681", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-transfers.ts:265"}, "properties": {"repobilityId": "d48d247db4750711", "scanner": "scanner-primary", "fingerprint": "303eb57ad9b01681", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed0e41feb6551910", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-jenzabar.ts:152"}, "properties": {"repobilityId": "48fb2fe4a8ee8239", "scanner": "scanner-primary", "fingerprint": "ed0e41feb6551910", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d8c20a80a451d21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-catalog-prereqs.ts:90"}, "properties": {"repobilityId": "78a367af909ede52", "scanner": "scanner-primary", "fingerprint": "8d8c20a80a451d21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9532e74de595e3ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-mn-eservices.ts:262"}, "properties": {"repobilityId": "aeb1ce2e1546ab7a", "scanner": "scanner-primary", "fingerprint": "9532e74de595e3ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-13ae16d40ccea2f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mn/scrape-programs.ts:23"}, "properties": {"repobilityId": "331458084ba716b3", "scanner": "scanner-primary", "fingerprint": "13ae16d40ccea2f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf0b56a9e01829fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-ilisagvik.ts:261"}, "properties": {"repobilityId": "7592fe1b75ed0c25", "scanner": "scanner-primary", "fingerprint": "cf0b56a9e01829fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bfbb67c46b6088e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-catalog-prereqs.ts:110"}, "properties": {"repobilityId": "a101f6c476e4b407", "scanner": "scanner-primary", "fingerprint": "5bfbb67c46b6088e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b974bed9a016e9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ak/scrape-programs.ts:64"}, "properties": {"repobilityId": "aa241747dce62018", "scanner": "scanner-primary", "fingerprint": "4b974bed9a016e9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbbef79a6a45eb90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-colleague.ts:33"}, "properties": {"repobilityId": "f17a7f8f8cf94c54", "scanner": "scanner-primary", "fingerprint": "fbbef79a6a45eb90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-349ee84e5e3e6d83", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-cccs-banner8.ts:54"}, "properties": {"repobilityId": "8903b4bfd2541e19", "scanner": "scanner-primary", "fingerprint": "349ee84e5e3e6d83", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea66c5f4823be447", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-prereqs.ts:183"}, "properties": {"repobilityId": "2ae5a04748bd2cef", "scanner": "scanner-primary", "fingerprint": "ea66c5f4823be447", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da1674a7fb75f99b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-du-transfer.ts:183"}, "properties": {"repobilityId": "93ec2d1b3fabb555", "scanner": "scanner-primary", "fingerprint": "da1674a7fb75f99b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e40a98592b16481", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-aims-workday.ts:267"}, "properties": {"repobilityId": "ae54d8b5d39ad9aa", "scanner": "scanner-primary", "fingerprint": "7e40a98592b16481", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6249c0632aa31811", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/scrape-programs.ts:75"}, "properties": {"repobilityId": "ae1e946bd15ad03a", "scanner": "scanner-primary", "fingerprint": "6249c0632aa31811", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-174a50f7cd11a244", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/co/build-transfers.ts:45"}, "properties": {"repobilityId": "486f341d361e72d5", "scanner": "scanner-primary", "fingerprint": "174a50f7cd11a244", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f43d8ed5c4e9fdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ecsu.ts:306"}, "properties": {"repobilityId": "e5429985ff593004", "scanner": "scanner-primary", "fingerprint": "3f43d8ed5c4e9fdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1e684673e27dd72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-wcsu.ts:148"}, "properties": {"repobilityId": "436bce880a2979bb", "scanner": "scanner-primary", "fingerprint": "a1e684673e27dd72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3517e5f69b8d8bc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-uconn.ts:254"}, "properties": {"repobilityId": "ce5ca65ba076b359", "scanner": "scanner-primary", "fingerprint": "3517e5f69b8d8bc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-985165d1e5bbae7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-banner.ts:174"}, "properties": {"repobilityId": "d98c7cd371203930", "scanner": "scanner-primary", "fingerprint": "985165d1e5bbae7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32a97ed81283ea3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-ccsu.ts:300"}, "properties": {"repobilityId": "d3785f943e29fbe8", "scanner": "scanner-primary", "fingerprint": "32a97ed81283ea3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d23dc59e8f05dd3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-all.ts:89"}, "properties": {"repobilityId": "7589489485adef91", "scanner": "scanner-primary", "fingerprint": "d23dc59e8f05dd3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44478310ee64d6e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-transfer-scsu.ts:141"}, "properties": {"repobilityId": "358cd554d4880be7", "scanner": "scanner-primary", "fingerprint": "44478310ee64d6e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c39ddba78aac628", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-catalog-prereqs.ts:215"}, "properties": {"repobilityId": "37e36e23afea4d7d", "scanner": "scanner-primary", "fingerprint": "2c39ddba78aac628", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1000a2803e3d50c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ct/scrape-programs.ts:32"}, "properties": {"repobilityId": "ea29c0c694ef9fcb", "scanner": "scanner-primary", "fingerprint": "1000a2803e3d50c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04730951437a2980", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-transfer.ts:143"}, "properties": {"repobilityId": "4ca3621aac55aef8", "scanner": "scanner-primary", "fingerprint": "04730951437a2980", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e79c35d99d88560d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-banner.ts:181"}, "properties": {"repobilityId": "2870f73ea552cb0c", "scanner": "scanner-primary", "fingerprint": "e79c35d99d88560d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cdd05843c11fc975", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dc/scrape-programs.ts:115"}, "properties": {"repobilityId": "85b3facb3b93f7c8", "scanner": "scanner-primary", "fingerprint": "cdd05843c11fc975", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d20bd36a2a5c3c48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-transfer.ts:232"}, "properties": {"repobilityId": "e89b5fd82030f237", "scanner": "scanner-primary", "fingerprint": "d20bd36a2a5c3c48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de114a5ef8288929", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ut/scrape-programs.ts:23"}, "properties": {"repobilityId": "d44c8e10086262c2", "scanner": "scanner-primary", "fingerprint": "de114a5ef8288929", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbd60f51464ae1a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-transfer-uhdad.ts:136"}, "properties": {"repobilityId": "10cfee13153f0e70", "scanner": "scanner-primary", "fingerprint": "bbd60f51464ae1a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75c61fa389049906", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-uhcc.ts:78"}, "properties": {"repobilityId": "b79519f1421dccbe", "scanner": "scanner-primary", "fingerprint": "75c61fa389049906", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50289d4f66402366", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/hi/scrape-programs.ts:40"}, "properties": {"repobilityId": "d7384ed9acc228b7", "scanner": "scanner-primary", "fingerprint": "50289d4f66402366", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-67a7673b62bbeb84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer.ts:242"}, "properties": {"repobilityId": "3bde050f02386f4d", "scanner": "scanner-primary", "fingerprint": "67a7673b62bbeb84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f9cd497f1f9be20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-catalog-prereqs.ts:315"}, "properties": {"repobilityId": "36a5c045d26e5a23", "scanner": "scanner-primary", "fingerprint": "5f9cd497f1f9be20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b26162c1ef6c28d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-mccs.ts:404"}, "properties": {"repobilityId": "7040814f19839226", "scanner": "scanner-primary", "fingerprint": "2b26162c1ef6c28d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6da986cabfebbf4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/me/scrape-transfer-mainestreet.ts:159"}, "properties": {"repobilityId": "0e7d061ad4c9a60a", "scanner": "scanner-primary", "fingerprint": "b6da986cabfebbf4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a9ef323d8594564", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-sipi-pdf.ts:277"}, "properties": {"repobilityId": "156703be429b17e6", "scanner": "scanner-primary", "fingerprint": "3a9ef323d8594564", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef9d87862dc46c54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-colleague.ts:33"}, "properties": {"repobilityId": "150b7837cc90caf8", "scanner": "scanner-primary", "fingerprint": "ef9d87862dc46c54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2612a9a3909b1e61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-banner8.ts:23"}, "properties": {"repobilityId": "8f90e4ec0e0bada9", "scanner": "scanner-primary", "fingerprint": "2612a9a3909b1e61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2524b7cb5c5af1fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-campusnexus.ts:379"}, "properties": {"repobilityId": "3856e85956a0a3bd", "scanner": "scanner-primary", "fingerprint": "2524b7cb5c5af1fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb543cb8eadef13d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-programs.ts:29"}, "properties": {"repobilityId": "0a6aa96712702964", "scanner": "scanner-primary", "fingerprint": "eb543cb8eadef13d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9252fbfd4fb87e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nm/scrape-transfer-ccns.ts:133"}, "properties": {"repobilityId": "3e6bd4846c88d19e", "scanner": "scanner-primary", "fingerprint": "a9252fbfd4fb87e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-239d33b697fb8709", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-catalog-prereqs.ts:155"}, "properties": {"repobilityId": "3da5b7091faab99c", "scanner": "scanner-primary", "fingerprint": "239d33b697fb8709", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb0a4f5413a005b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-wvup.ts:307"}, "properties": {"repobilityId": "868b09d03d97305a", "scanner": "scanner-primary", "fingerprint": "bb0a4f5413a005b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-450e82219adccfa6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-marshall.ts:158"}, "properties": {"repobilityId": "5678a76b3c54ab04", "scanner": "scanner-primary", "fingerprint": "450e82219adccfa6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c46d84dddaa6125", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-eastern-wv.ts:276"}, "properties": {"repobilityId": "892d50a396204fa6", "scanner": "scanner-primary", "fingerprint": "0c46d84dddaa6125", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc67130386d85563", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-mountwest.ts:23"}, "properties": {"repobilityId": "1eea11e9a305ecfa", "scanner": "scanner-primary", "fingerprint": "cc67130386d85563", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d13ae92c7c38d575", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wv/scrape-transfer-wvu.ts:57"}, "properties": {"repobilityId": "a9de3ec84dcb2315", "scanner": "scanner-primary", "fingerprint": "d13ae92c7c38d575", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73b5286519b92cf5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-colleague.ts:242"}, "properties": {"repobilityId": "8d3d9445a249fe3a", "scanner": "scanner-primary", "fingerprint": "73b5286519b92cf5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bb7d724da007bc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-misc-programs.ts:56"}, "properties": {"repobilityId": "c44461369c69aeec", "scanner": "scanner-primary", "fingerprint": "3bb7d724da007bc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f52fa3ae0582d0ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-ncstate.ts:46"}, "properties": {"repobilityId": "100777f0c45a6505", "scanner": "scanner-primary", "fingerprint": "f52fa3ae0582d0ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dc5cad534c7aba7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-catawba.ts:42"}, "properties": {"repobilityId": "9d3c4bda3580c478", "scanner": "scanner-primary", "fingerprint": "7dc5cad534c7aba7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e92783d80519f2f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-hpu.ts:45"}, "properties": {"repobilityId": "58f5c300a0f51981", "scanner": "scanner-primary", "fingerprint": "e92783d80519f2f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-853883576d8a69d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts:115"}, "properties": {"repobilityId": "1182f143fe6d03d0", "scanner": "scanner-primary", "fingerprint": "853883576d8a69d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3c18507c7a2b065", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-colleague-subdomains.ts:286"}, "properties": {"repobilityId": "0a6deaac11e77bc5", "scanner": "scanner-primary", "fingerprint": "d3c18507c7a2b065", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be87cbfca9141030", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-uncg.ts:43"}, "properties": {"repobilityId": "bdc4a4ef1a67bc28", "scanner": "scanner-primary", "fingerprint": "be87cbfca9141030", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03ad5ee92e2fe6c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-southeastern.ts:123"}, "properties": {"repobilityId": "77c24813b129aafa", "scanner": "scanner-primary", "fingerprint": "03ad5ee92e2fe6c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8043961de2efeb27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-registration-systems.ts:126"}, "properties": {"repobilityId": "6417e1b42dd67599", "scanner": "scanner-primary", "fingerprint": "8043961de2efeb27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-584ea477dd2d24fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/discover-catalogs.ts:118"}, "properties": {"repobilityId": "c1c51158adf88070", "scanner": "scanner-primary", "fingerprint": "584ea477dd2d24fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db99a3b16ae2a75c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-tri-county.ts:197"}, "properties": {"repobilityId": "60d46b5f085d84ef", "scanner": "scanner-primary", "fingerprint": "db99a3b16ae2a75c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5e10573d17005b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-wingate.ts:41"}, "properties": {"repobilityId": "e515ebe9e1ce8077", "scanner": "scanner-primary", "fingerprint": "f5e10573d17005b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de2ef5c7a3f75a23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cleveland.ts:125"}, "properties": {"repobilityId": "4ac9c44d1d6f9951", "scanner": "scanner-primary", "fingerprint": "de2ef5c7a3f75a23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cae3e98391c39b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/_discover-cns-api.ts:15"}, "properties": {"repobilityId": "09e8c143db5038af", "scanner": "scanner-primary", "fingerprint": "5cae3e98391c39b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-987f8347e509af65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-mayland.ts:115"}, "properties": {"repobilityId": "2e749920d4ebd981", "scanner": "scanner-primary", "fingerprint": "987f8347e509af65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ffc19a6003e1c410", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-sandhills.ts:91"}, "properties": {"repobilityId": "f6c59c2ed55bfcb9", "scanner": "scanner-primary", "fingerprint": "ffc19a6003e1c410", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42bbf7973daffdd7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-martin.ts:57"}, "properties": {"repobilityId": "c267b40bab9f66ae", "scanner": "scanner-primary", "fingerprint": "42bbf7973daffdd7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d74ca9ed1d99b66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-albemarle.ts:139"}, "properties": {"repobilityId": "2b7b5fabc657129f", "scanner": "scanner-primary", "fingerprint": "9d74ca9ed1d99b66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af4aafb88c4f306d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-acalog-programs.ts:50"}, "properties": {"repobilityId": "506b89dfc967457d", "scanner": "scanner-primary", "fingerprint": "af4aafb88c4f306d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b56fbe38d63a5f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-elon.ts:218"}, "properties": {"repobilityId": "79e69c6dda1d92cf", "scanner": "scanner-primary", "fingerprint": "3b56fbe38d63a5f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ff05a46de3c134c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-pamlico.ts:67"}, "properties": {"repobilityId": "796f7efaba197cd0", "scanner": "scanner-primary", "fingerprint": "5ff05a46de3c134c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-291769fb421c21dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-transfer-cns.ts:183"}, "properties": {"repobilityId": "42677349fac66058", "scanner": "scanner-primary", "fingerprint": "291769fb421c21dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-545fc93f7bb664ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nc/scrape-cape-fear.ts:95"}, "properties": {"repobilityId": "28e4ece57b8ad279", "scanner": "scanner-primary", "fingerprint": "545fc93f7bb664ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3477cb2d548fd6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-transfer-usd.ts:265"}, "properties": {"repobilityId": "62f97f19f1a96c67", "scanner": "scanner-primary", "fingerprint": "d3477cb2d548fd6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7d1f1b9deef70c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-programs.ts:38"}, "properties": {"repobilityId": "26f336f0d38afbc7", "scanner": "scanner-primary", "fingerprint": "d7d1f1b9deef70c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-685e4e4a05a9ab1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-oglala-lakota.ts:281"}, "properties": {"repobilityId": "98bd8e810a874dc9", "scanner": "scanner-primary", "fingerprint": "685e4e4a05a9ab1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4aaa47bcbf564769", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/normalize-term-filenames.ts:70"}, "properties": {"repobilityId": "c2004e19ebaa008d", "scanner": "scanner-primary", "fingerprint": "4aaa47bcbf564769", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-206f5e135c44acc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sd/scrape-southeast-tech.ts:180"}, "properties": {"repobilityId": "75c3f0946fca2e3c", "scanner": "scanner-primary", "fingerprint": "206f5e135c44acc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47cb37f0e2c8b42d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-colleague.ts:199"}, "properties": {"repobilityId": "05d5a04e00b5624b", "scanner": "scanner-primary", "fingerprint": "47cb37f0e2c8b42d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53402bee1f107c98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-universities.ts:245"}, "properties": {"repobilityId": "57ddcdcf629da96c", "scanner": "scanner-primary", "fingerprint": "53402bee1f107c98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc62cf12b384bbdc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/discover-sc-systems.ts:203"}, "properties": {"repobilityId": "8eb27532f676f680", "scanner": "scanner-primary", "fingerprint": "dc62cf12b384bbdc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84904648e93c1553", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner8.ts:313"}, "properties": {"repobilityId": "a778a05c04388906", "scanner": "scanner-primary", "fingerprint": "84904648e93c1553", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb87cb419b848f9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-northeastern-pdf.ts:258"}, "properties": {"repobilityId": "8ba4d84bf8239cda", "scanner": "scanner-primary", "fingerprint": "cb87cb419b848f9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca98d56f8febe0af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-cygnet.ts:89"}, "properties": {"repobilityId": "b35e4fefe5a294b4", "scanner": "scanner-primary", "fingerprint": "ca98d56f8febe0af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f73a578838bbc90a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-banner.ts:251"}, "properties": {"repobilityId": "834fd9226011c46e", "scanner": "scanner-primary", "fingerprint": "f73a578838bbc90a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9362443288d64b4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-midlands.ts:182"}, "properties": {"repobilityId": "a4a9e3f85345cfbd", "scanner": "scanner-primary", "fingerprint": "9362443288d64b4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50cb7f85737c5e37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-transfer-clemson.ts:101"}, "properties": {"repobilityId": "3e6b0fe74d85216a", "scanner": "scanner-primary", "fingerprint": "50cb7f85737c5e37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-015fcaecac0f7a73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-programs.ts:50"}, "properties": {"repobilityId": "0ef2933177bcf718", "scanner": "scanner-primary", "fingerprint": "015fcaecac0f7a73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6720832470efe621", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sc/scrape-williamsburg-pdf.ts:270"}, "properties": {"repobilityId": "68bc287192f856c8", "scanner": "scanner-primary", "fingerprint": "6720832470efe621", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3e4badb2516e46d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-colleague.ts:30"}, "properties": {"repobilityId": "196031f472b16896", "scanner": "scanner-primary", "fingerprint": "c3e4badb2516e46d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b683b3ad161ff057", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-oregon-coast.ts:97"}, "properties": {"repobilityId": "60011a15202ba4d0", "scanner": "scanner-primary", "fingerprint": "b683b3ad161ff057", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d71f3b5287990bbb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-tvcc.ts:101"}, "properties": {"repobilityId": "3b9ec0e067027305", "scanner": "scanner-primary", "fingerprint": "d71f3b5287990bbb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b6f89e7c55121ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-osu.ts:159"}, "properties": {"repobilityId": "059a1d269ce32e56", "scanner": "scanner-primary", "fingerprint": "3b6f89e7c55121ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b23fabe6520d05f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-programs.ts:27"}, "properties": {"repobilityId": "1244208cccb209fb", "scanner": "scanner-primary", "fingerprint": "2b23fabe6520d05f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b275b4c8e6590ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-klamath.ts:169"}, "properties": {"repobilityId": "90391ca91a54d8e1", "scanner": "scanner-primary", "fingerprint": "9b275b4c8e6590ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12dd04a89d03c425", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-transfer-eou.ts:111"}, "properties": {"repobilityId": "d8adbd1b4b9f753b", "scanner": "scanner-primary", "fingerprint": "12dd04a89d03c425", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33e1a34519f4f97d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/or/scrape-columbia-gorge.ts:208"}, "properties": {"repobilityId": "eb0ae0a6f7b1e0aa", "scanner": "scanner-primary", "fingerprint": "33e1a34519f4f97d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e056466bc5d3c080", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ok/scrape-transfer.ts:175"}, "properties": {"repobilityId": "46293d1fe75c5af8", "scanner": "scanner-primary", "fingerprint": "e056466bc5d3c080", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-791624f9945e80b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner8.ts:98"}, "properties": {"repobilityId": "496269f60577d790", "scanner": "scanner-primary", "fingerprint": "791624f9945e80b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b3bc09e5c571f704", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-programs.ts:24"}, "properties": {"repobilityId": "24393c5649d0cfdf", "scanner": "scanner-primary", "fingerprint": "b3bc09e5c571f704", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43d2b64b7e08562d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-transfer-stars.ts:164"}, "properties": {"repobilityId": "6e3dad98adc83c19", "scanner": "scanner-primary", "fingerprint": "43d2b64b7e08562d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-adcdf72ab7d463ce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/al/scrape-accs-banner-ssb9.ts:70"}, "properties": {"repobilityId": "567479d9037d5a4f", "scanner": "scanner-primary", "fingerprint": "adcdf72ab7d463ce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92283a064e999bc4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-colleague.ts:30"}, "properties": {"repobilityId": "4e790ef73df30c50", "scanner": "scanner-primary", "fingerprint": "92283a064e999bc4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2949593132644b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-swtc.ts:278"}, "properties": {"repobilityId": "d699d375679cd139", "scanner": "scanner-primary", "fingerprint": "b2949593132644b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbff180a96d28860", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-cvtc.ts:316"}, "properties": {"repobilityId": "5842e3229e14cbb8", "scanner": "scanner-primary", "fingerprint": "fbff180a96d28860", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-884c0f1782312650", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-ntc.ts:214"}, "properties": {"repobilityId": "97b055a44e960418", "scanner": "scanner-primary", "fingerprint": "884c0f1782312650", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-805465fc38f8943b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-transfer-uwm.ts:193"}, "properties": {"repobilityId": "013a347095687a4a", "scanner": "scanner-primary", "fingerprint": "805465fc38f8943b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-782d97dc2da3377b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wi/scrape-programs.ts:22"}, "properties": {"repobilityId": "9e3d6dfcc64cdc3b", "scanner": "scanner-primary", "fingerprint": "782d97dc2da3377b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f4e336f2ccf56bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-nv-transfers.ts:215"}, "properties": {"repobilityId": "2fb24beb545eb88f", "scanner": "scanner-primary", "fingerprint": "0f4e336f2ccf56bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-137bfc51b16ae18f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-catalog-prereqs.ts:124"}, "properties": {"repobilityId": "83e7f340386cccc4", "scanner": "scanner-primary", "fingerprint": "137bfc51b16ae18f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e75cb7a6b4a1d152", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-programs.ts:42"}, "properties": {"repobilityId": "c13bd43281cf0757", "scanner": "scanner-primary", "fingerprint": "e75cb7a6b4a1d152", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3cc771ed8ec10621", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nv/scrape-peoplesoft.ts:557"}, "properties": {"repobilityId": "8eba5bec9390a123", "scanner": "scanner-primary", "fingerprint": "3cc771ed8ec10621", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3ff766e2cd353095", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-colleague.ts:174"}, "properties": {"repobilityId": "c7345af1e20c8b15", "scanner": "scanner-primary", "fingerprint": "3ff766e2cd353095", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee89ccc16cac9954", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-transfer.ts:139"}, "properties": {"repobilityId": "385cfbd20ed7c3ca", "scanner": "scanner-primary", "fingerprint": "ee89ccc16cac9954", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dfa297bc296df748", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-catalog-prereqs.ts:215"}, "properties": {"repobilityId": "f85253d4f729dc3e", "scanner": "scanner-primary", "fingerprint": "dfa297bc296df748", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b53f8995a53198b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/vt/scrape-programs.ts:31"}, "properties": {"repobilityId": "e1f5a79e02a312cc", "scanner": "scanner-primary", "fingerprint": "b53f8995a53198b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce713a694d9af33d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-colleague.ts:49"}, "properties": {"repobilityId": "0997695b8b17ee4e", "scanner": "scanner-primary", "fingerprint": "ce713a694d9af33d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55c511a73b8f7d5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-programs.ts:23"}, "properties": {"repobilityId": "9e9ccf46b1b55f75", "scanner": "scanner-primary", "fingerprint": "55c511a73b8f7d5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5d9100438d5f8e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wy/scrape-northwest-college.ts:143"}, "properties": {"repobilityId": "51b4234ace53ebfd", "scanner": "scanner-primary", "fingerprint": "c5d9100438d5f8e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-632859f010ef6c11", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-banner8.ts:367"}, "properties": {"repobilityId": "1076e2781fced533", "scanner": "scanner-primary", "fingerprint": "632859f010ef6c11", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6c1a38c66437a0c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-transfer.ts:448"}, "properties": {"repobilityId": "421e7e9dc1f82aa5", "scanner": "scanner-primary", "fingerprint": "6c1a38c66437a0c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0db935d0db266c40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-catalog-prereqs.ts:235"}, "properties": {"repobilityId": "240895d36f078116", "scanner": "scanner-primary", "fingerprint": "0db935d0db266c40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-135efdc64c80da55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ri/scrape-programs.ts:28"}, "properties": {"repobilityId": "6498f2e3cb7dfb35", "scanner": "scanner-primary", "fingerprint": "135efdc64c80da55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f730d45a4c783ffc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner8.ts:368"}, "properties": {"repobilityId": "80997480bc32bd83", "scanner": "scanner-primary", "fingerprint": "f730d45a4c783ffc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48d106a3b7956a41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-collegetransfer.ts:52"}, "properties": {"repobilityId": "8c33e0084ba1d953", "scanner": "scanner-primary", "fingerprint": "48d106a3b7956a41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d38d31bdbfa48c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-banner-ssb.ts:289"}, "properties": {"repobilityId": "6d1ce2a805df84e0", "scanner": "scanner-primary", "fingerprint": "2d38d31bdbfa48c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd17e495cadc811e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-catalog-prereqs.ts:265"}, "properties": {"repobilityId": "cb30e51c5156636c", "scanner": "scanner-primary", "fingerprint": "cd17e495cadc811e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41a5fb592f10b3fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-programs.ts:30"}, "properties": {"repobilityId": "b7242e38745e6095", "scanner": "scanner-primary", "fingerprint": "41a5fb592f10b3fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1bb0864208a8ea89", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/de/scrape-transfer-udel.ts:124"}, "properties": {"repobilityId": "87b431e367756032", "scanner": "scanner-primary", "fingerprint": "1bb0864208a8ea89", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25cace182c90ee04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-transfer-gerta.ts:202"}, "properties": {"repobilityId": "565c5869c2f94c51", "scanner": "scanner-primary", "fingerprint": "25cace182c90ee04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55a6f1a6ecf96c07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-ndus.ts:420"}, "properties": {"repobilityId": "1fa88e89610aec9c", "scanner": "scanner-primary", "fingerprint": "55a6f1a6ecf96c07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c14b3f25551e573", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-nd-programs.ts:78"}, "properties": {"repobilityId": "ed21a26b0957f175", "scanner": "scanner-primary", "fingerprint": "9c14b3f25551e573", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5d06a053b06185a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nd/scrape-catalog-prereqs.ts:197"}, "properties": {"repobilityId": "3446e8868a3f22f1", "scanner": "scanner-primary", "fingerprint": "e5d06a053b06185a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd2d8c444aa3ba22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-colleague.ts:195"}, "properties": {"repobilityId": "3ba01b8fa843f988", "scanner": "scanner-primary", "fingerprint": "cd2d8c444aa3ba22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71b74be63e12a0b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-smartcatalogiq-programs.ts:67"}, "properties": {"repobilityId": "d6528d5471d9b0fd", "scanner": "scanner-primary", "fingerprint": "71b74be63e12a0b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1e299b967362259", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-masstransfer.ts:264"}, "properties": {"repobilityId": "07c058a912f63576", "scanner": "scanner-primary", "fingerprint": "f1e299b967362259", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b945fa3c764a642", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner8.ts:325"}, "properties": {"repobilityId": "1c57bed47d43854e", "scanner": "scanner-primary", "fingerprint": "7b945fa3c764a642", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-edb378664c0af351", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-cleancatalog-programs.ts:65"}, "properties": {"repobilityId": "9ec62d58ca677910", "scanner": "scanner-primary", "fingerprint": "edb378664c0af351", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b9e9190a788efe8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-coursedog-programs.ts:44"}, "properties": {"repobilityId": "3e332df15940d8af", "scanner": "scanner-primary", "fingerprint": "7b9e9190a788efe8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d8a3ea748e39932", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-massasoit-programs.ts:246"}, "properties": {"repobilityId": "4ba8a35bd9827bd2", "scanner": "scanner-primary", "fingerprint": "8d8a3ea748e39932", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f34a6875b68c6a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-courseleaf-programs.ts:53"}, "properties": {"repobilityId": "550e68bff61a2ede", "scanner": "scanner-primary", "fingerprint": "8f34a6875b68c6a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac53050c34ec012b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-banner-ssb.ts:187"}, "properties": {"repobilityId": "1d4029ef1a95f888", "scanner": "scanner-primary", "fingerprint": "ac53050c34ec012b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9956feb63b0ff0a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-programs.ts:91"}, "properties": {"repobilityId": "41fa4cfd984533ba", "scanner": "scanner-primary", "fingerprint": "9956feb63b0ff0a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c33325a6cde524ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:155"}, "properties": {"repobilityId": "f03ad22032422423", "scanner": "scanner-primary", "fingerprint": "c33325a6cde524ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cdc1e42674e985cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-rcc-programs.ts:236"}, "properties": {"repobilityId": "3d0c6f60efdc4d68", "scanner": "scanner-primary", "fingerprint": "cdc1e42674e985cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a674852228cf0e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:373"}, "properties": {"repobilityId": "e991a41d8c025013", "scanner": "scanner-primary", "fingerprint": "8a674852228cf0e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc69172d8ce21864", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ma/scrape-catalog-prereqs-middlesex.ts:214"}, "properties": {"repobilityId": "1c8e63733d76c909", "scanner": "scanner-primary", "fingerprint": "fc69172d8ce21864", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64423b4cad646705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-banner-ssb.ts:279"}, "properties": {"repobilityId": "6a0765f12356bb15", "scanner": "scanner-primary", "fingerprint": "64423b4cad646705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42de0d9f5ecc6764", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:477"}, "properties": {"repobilityId": "1c155b0bbcff0461", "scanner": "scanner-primary", "fingerprint": "42de0d9f5ecc6764", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52f2563326e13313", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-catalog-prereqs.ts:252"}, "properties": {"repobilityId": "02de536fcd176882", "scanner": "scanner-primary", "fingerprint": "52f2563326e13313", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e44a42bc20ca8c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/scrape-programs.ts:136"}, "properties": {"repobilityId": "0b03d3fa1297aa8f", "scanner": "scanner-primary", "fingerprint": "1e44a42bc20ca8c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d9db63cebe0cc9b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utk.ts:353"}, "properties": {"repobilityId": "756eddd47ddb8d90", "scanner": "scanner-primary", "fingerprint": "0d9db63cebe0cc9b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02a7a69d4069ae36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-mtsu.ts:210"}, "properties": {"repobilityId": "f6160ad8b2bd167e", "scanner": "scanner-primary", "fingerprint": "02a7a69d4069ae36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75d8a7a535e79030", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-ttu.ts:122"}, "properties": {"repobilityId": "2d4933bca83e4a0f", "scanner": "scanner-primary", "fingerprint": "75d8a7a535e79030", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d45b4e22741ed6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-all.ts:71"}, "properties": {"repobilityId": "4af130cae528a036", "scanner": "scanner-primary", "fingerprint": "8d45b4e22741ed6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93e6d7227e46dd78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-apsu.ts:302"}, "properties": {"repobilityId": "92d05f75a8c37152", "scanner": "scanner-primary", "fingerprint": "93e6d7227e46dd78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6483fb12f6c22b77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tn/transfer/scrape-utm.ts:82"}, "properties": {"repobilityId": "68eca495b2764107", "scanner": "scanner-primary", "fingerprint": "6483fb12f6c22b77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21823704f79b7d2b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/fixup-tccns-and-dates.ts:94"}, "properties": {"repobilityId": "db890c1787bf61fb", "scanner": "scanner-primary", "fingerprint": "21823704f79b7d2b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02f9a7f09df0e8de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-colleague.ts:59"}, "properties": {"repobilityId": "705b850e44c7eb5e", "scanner": "scanner-primary", "fingerprint": "02f9a7f09df0e8de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9cbb3073fd4f9a42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-netcc.ts:330"}, "properties": {"repobilityId": "ecd956e62b0ea0d4", "scanner": "scanner-primary", "fingerprint": "9cbb3073fd4f9a42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fefba25966d988ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-clarendon.ts:226"}, "properties": {"repobilityId": "80f58121807a4f0d", "scanner": "scanner-primary", "fingerprint": "fefba25966d988ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2756f5c1b9ca11b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-misc-programs.ts:56"}, "properties": {"repobilityId": "e2703f112e98eae3", "scanner": "scanner-primary", "fingerprint": "d2756f5c1b9ca11b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0868e0d7bdad751", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts:115"}, "properties": {"repobilityId": "c61ef80448fec681", "scanner": "scanner-primary", "fingerprint": "b0868e0d7bdad751", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf1517d3f2368a5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-banner8.ts:36"}, "properties": {"repobilityId": "1e4804ce6744e6e2", "scanner": "scanner-primary", "fingerprint": "bf1517d3f2368a5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84c8c3014e0b32a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-alamo.ts:90"}, "properties": {"repobilityId": "5e2101090cafc829", "scanner": "scanner-primary", "fingerprint": "84c8c3014e0b32a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b409af72bc493f63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-austin.ts:569"}, "properties": {"repobilityId": "fbf63c9e4c521336", "scanner": "scanner-primary", "fingerprint": "b409af72bc493f63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44ab25e966e6ea1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-hccs.ts:277"}, "properties": {"repobilityId": "001667dea05afe5c", "scanner": "scanner-primary", "fingerprint": "44ab25e966e6ea1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4c36be5b5fe4c63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/discover-catalogs.ts:118"}, "properties": {"repobilityId": "d92053ab520b63bc", "scanner": "scanner-primary", "fingerprint": "c4c36be5b5fe4c63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a91a3a50776de8b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-cisco.ts:264"}, "properties": {"repobilityId": "f673da7c8784a501", "scanner": "scanner-primary", "fingerprint": "a91a3a50776de8b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0e6180034964506", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-collin.ts:221"}, "properties": {"repobilityId": "2b5b2d86ef8695b3", "scanner": "scanner-primary", "fingerprint": "b0e6180034964506", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5feb3c739f1eedc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-courseleaf-prereqs.ts:158"}, "properties": {"repobilityId": "9e7c043874c10b88", "scanner": "scanner-primary", "fingerprint": "5feb3c739f1eedc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a4f17acab3f0ba5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-grayson.ts:309"}, "properties": {"repobilityId": "b3e1c111cd09c3c8", "scanner": "scanner-primary", "fingerprint": "4a4f17acab3f0ba5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1fbbac98f49a158d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-prereqs.ts:114"}, "properties": {"repobilityId": "b11468aa202b5920", "scanner": "scanner-primary", "fingerprint": "1fbbac98f49a158d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d873de7c86b728c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-acalog-programs.ts:50"}, "properties": {"repobilityId": "42eacd53c0c5b2cc", "scanner": "scanner-primary", "fingerprint": "8d873de7c86b728c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7127e04405096d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-transfer-tccns.ts:98"}, "properties": {"repobilityId": "9dc32cb698aec42b", "scanner": "scanner-primary", "fingerprint": "b7127e04405096d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f216cfd8e341641", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-dallas.ts:406"}, "properties": {"repobilityId": "f61d8edd0f8e07d9", "scanner": "scanner-primary", "fingerprint": "6f216cfd8e341641", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44554df658b914e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-central-texas.ts:172"}, "properties": {"repobilityId": "79586b9a6fd4cb07", "scanner": "scanner-primary", "fingerprint": "44554df658b914e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce697c8b9363ea20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-howard.ts:222"}, "properties": {"repobilityId": "398d3feb1e600c20", "scanner": "scanner-primary", "fingerprint": "ce697c8b9363ea20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4144f441a5bc76b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-lsc.ts:553"}, "properties": {"repobilityId": "1d265fefdd8c5f9b", "scanner": "scanner-primary", "fingerprint": "4144f441a5bc76b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1896cdc8cc0e4458", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-kilgore.ts:363"}, "properties": {"repobilityId": "692b8d1fe5e03484", "scanner": "scanner-primary", "fingerprint": "1896cdc8cc0e4458", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-339780695cbe1f85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-brazosport.ts:178"}, "properties": {"repobilityId": "575372b432c1f860", "scanner": "scanner-primary", "fingerprint": "339780695cbe1f85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6480850ed6e6605", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tx/scrape-frank-phillips.ts:291"}, "properties": {"repobilityId": "c1e75c707ba4dd11", "scanner": "scanner-primary", "fingerprint": "c6480850ed6e6605", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3bc434229c260bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colleague.ts:35"}, "properties": {"repobilityId": "27e464a8be6b139c", "scanner": "scanner-primary", "fingerprint": "d3bc434229c260bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03b1823141a33420", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-emporia.ts:83"}, "properties": {"repobilityId": "4cbf073125e3208e", "scanner": "scanner-primary", "fingerprint": "03b1823141a33420", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-889ae47d19b95a4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer.ts:244"}, "properties": {"repobilityId": "9652b093424edb40", "scanner": "scanner-primary", "fingerprint": "889ae47d19b95a4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cdea4e727fa6c19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-allen.ts:256"}, "properties": {"repobilityId": "7039bd31dd9f6143", "scanner": "scanner-primary", "fingerprint": "5cdea4e727fa6c19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1d904a1604c9044", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-manhattan-tech.ts:140"}, "properties": {"repobilityId": "ba6f3081ebf4f678", "scanner": "scanner-primary", "fingerprint": "a1d904a1604c9044", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9f88c5a9f5552d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-transfer-ku.ts:66"}, "properties": {"repobilityId": "6742eca1333c8dae", "scanner": "scanner-primary", "fingerprint": "b9f88c5a9f5552d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a4dc58a5a3c0483", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:157"}, "properties": {"repobilityId": "a0eddc5aca5bfde3", "scanner": "scanner-primary", "fingerprint": "7a4dc58a5a3c0483", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7cce06fbdb0c170", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-hutchinson.ts:232"}, "properties": {"repobilityId": "72a84f83a19ed54f", "scanner": "scanner-primary", "fingerprint": "a7cce06fbdb0c170", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef9de8cfe8a03b88", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-programs.ts:24"}, "properties": {"repobilityId": "aa902205f51e9f93", "scanner": "scanner-primary", "fingerprint": "ef9de8cfe8a03b88", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9042a99f5d402bd1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-salina.ts:193"}, "properties": {"repobilityId": "a3b466ebf789dc1d", "scanner": "scanner-primary", "fingerprint": "9042a99f5d402bd1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9253f8e5243ebaf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ks/scrape-colby.ts:220"}, "properties": {"repobilityId": "080e79f5a39cd8d2", "scanner": "scanner-primary", "fingerprint": "a9253f8e5243ebaf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2f2505e10c64be1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vwu.ts:48"}, "properties": {"repobilityId": "80a3a6d161e2a2d2", "scanner": "scanner-primary", "fingerprint": "b2f2505e10c64be1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a36ce08ada21584", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-camp-pdf-programs.ts:248"}, "properties": {"repobilityId": "76ea741fe820ca93", "scanner": "scanner-primary", "fingerprint": "0a36ce08ada21584", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6000dbe1b015ec08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vhcc-pdf-programs.ts:268"}, "properties": {"repobilityId": "4209120821fc610a", "scanner": "scanner-primary", "fingerprint": "6000dbe1b015ec08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd711d40a8098635", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vcu.ts:58"}, "properties": {"repobilityId": "d474ed59ef04f56f", "scanner": "scanner-primary", "fingerprint": "cd711d40a8098635", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d721f1cd6c126a0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-uva.ts:47"}, "properties": {"repobilityId": "dd166080245744f2", "scanner": "scanner-primary", "fingerprint": "d721f1cd6c126a0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1716f112a538b5ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-odu.ts:47"}, "properties": {"repobilityId": "3bc0ca3a7430814d", "scanner": "scanner-primary", "fingerprint": "1716f112a538b5ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86f571ceaa8b5abc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/_ps-summer-probe.ts:22"}, "properties": {"repobilityId": "d24637c7805b39fd", "scanner": "scanner-primary", "fingerprint": "86f571ceaa8b5abc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-672a2354b8627cf1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-equiv.ts:50"}, "properties": {"repobilityId": "c18a211e7ba094bf", "scanner": "scanner-primary", "fingerprint": "672a2354b8627cf1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-afff55da485ca154", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/discover-ps-responses.ts:72"}, "properties": {"repobilityId": "8d41ada290287b96", "scanner": "scanner-primary", "fingerprint": "afff55da485ca154", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc4ac9e13395f892", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-courseleaf-programs.ts:47"}, "properties": {"repobilityId": "de5c88f961df340b", "scanner": "scanner-primary", "fingerprint": "bc4ac9e13395f892", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a143e9c78bbc1de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-umw.ts:155"}, "properties": {"repobilityId": "e63c81a9004412ff", "scanner": "scanner-primary", "fingerprint": "0a143e9c78bbc1de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eff48d29d62bab62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-gmu.ts:53"}, "properties": {"repobilityId": "65b0060e413e0b86", "scanner": "scanner-primary", "fingerprint": "eff48d29d62bab62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-08c50bb9321e08bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-catalog-prereqs.ts:56"}, "properties": {"repobilityId": "e641b45f76007f72", "scanner": "scanner-primary", "fingerprint": "08c50bb9321e08bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ebbd365e7bf76e03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-transfer-vsu.ts:59"}, "properties": {"repobilityId": "54d48233962b1b67", "scanner": "scanner-primary", "fingerprint": "ebbd365e7bf76e03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6b27f9a3f4fae4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-programs.ts:212"}, "properties": {"repobilityId": "354f2478c8e1f94b", "scanner": "scanner-primary", "fingerprint": "c6b27f9a3f4fae4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd4a2b8dba7ec257", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/enrich-peoplesoft.ts:502"}, "properties": {"repobilityId": "7b167ac64c31ceb7", "scanner": "scanner-primary", "fingerprint": "bd4a2b8dba7ec257", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0caf69d6b9efc5ae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-vccs.ts:327"}, "properties": {"repobilityId": "00ea0b65323fe155", "scanner": "scanner-primary", "fingerprint": "0caf69d6b9efc5ae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb2941880cf99c90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/va/scrape-peoplesoft.ts:598"}, "properties": {"repobilityId": "54cbafbc1acb572e", "scanner": "scanner-primary", "fingerprint": "fb2941880cf99c90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-751ab0c6b98902c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-courses.ts:460"}, "properties": {"repobilityId": "8ea1d230b72fee30", "scanner": "scanner-primary", "fingerprint": "751ab0c6b98902c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8b11725ca0d5796", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-catalog-prereqs.ts:201"}, "properties": {"repobilityId": "9cb72fa4ebf1cf16", "scanner": "scanner-primary", "fingerprint": "a8b11725ca0d5796", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbe694aefdba7848", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-transfer-collegesource-tes.ts:453"}, "properties": {"repobilityId": "b74313b61d275158", "scanner": "scanner-primary", "fingerprint": "fbe694aefdba7848", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa0140a07dd19395", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ky/scrape-programs.ts:47"}, "properties": {"repobilityId": "73cf6e220fbf1765", "scanner": "scanner-primary", "fingerprint": "aa0140a07dd19395", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc8e862ea1690c37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-ivy-tech.ts:292"}, "properties": {"repobilityId": "296105966c778e28", "scanner": "scanner-primary", "fingerprint": "fc8e862ea1690c37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59748156d2cadee1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-programs.ts:33"}, "properties": {"repobilityId": "82835b1c31cdc502", "scanner": "scanner-primary", "fingerprint": "59748156d2cadee1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-852dfab6792a9ca6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-purdue.ts:208"}, "properties": {"repobilityId": "f828c07d3762c1f5", "scanner": "scanner-primary", "fingerprint": "852dfab6792a9ca6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-965cc0fbbf394e24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/scrape-transfer-iu.ts:180"}, "properties": {"repobilityId": "3316a1814198eb20", "scanner": "scanner-primary", "fingerprint": "965cc0fbbf394e24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c85879d5ad4b120a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/in/geocode-ivy-campuses.ts:110"}, "properties": {"repobilityId": "90391027fd3ff9ed", "scanner": "scanner-primary", "fingerprint": "c85879d5ad4b120a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-067d13359d425916", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/AnswerCard.tsx:432"}, "properties": {"repobilityId": "a1a668c7c737729f", "scanner": "scanner-primary", "fingerprint": "067d13359d425916", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-25d0ae3326a9a933", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/JsonLd.tsx:18"}, "properties": {"repobilityId": "fbf18bcbf2b0182e", "scanner": "scanner-primary", "fingerprint": "25d0ae3326a9a933", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e272ea933401327b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ProgramRequirements.tsx:312"}, "properties": {"repobilityId": "b64d28e8b519ea83", "scanner": "scanner-primary", "fingerprint": "e272ea933401327b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-770d4c41aea402b4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/Breadcrumbs.tsx:54"}, "properties": {"repobilityId": "34d053f7fe389664", "scanner": "scanner-primary", "fingerprint": "770d4c41aea402b4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd941426ccd82d3e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/Breadcrumbs.tsx:32"}, "properties": {"repobilityId": "9e90e2f011fac652", "scanner": "scanner-primary", "fingerprint": "fd941426ccd82d3e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3b9b542fa6073d79", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/CourseTable.tsx:275"}, "properties": {"repobilityId": "3403d045e3b36d28", "scanner": "scanner-primary", "fingerprint": "3b9b542fa6073d79", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99408a3a1ad1bc32", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 components/ChooseQuiz.tsx:58"}, "properties": {"repobilityId": "e98155f9840a19cd", "scanner": "scanner-primary", "fingerprint": "99408a3a1ad1bc32", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6646c0a49b80f892", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ScheduleBuilder.tsx:281"}, "properties": {"repobilityId": "96cca689fdc665bc", "scanner": "scanner-primary", "fingerprint": "6646c0a49b80f892", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b5a698a7ee77fc9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/WeeklyCalendar.tsx:147"}, "properties": {"repobilityId": "49285d6f433b6dcf", "scanner": "scanner-primary", "fingerprint": "b5a698a7ee77fc9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-433337c7be342967", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/schedule/ScheduleResults.tsx:613"}, "properties": {"repobilityId": "4c67160b38ea110f", "scanner": "scanner-primary", "fingerprint": "433337c7be342967", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f6377747000f27fd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/auth/UserMenu.tsx:137"}, "properties": {"repobilityId": "b5a928e704ceb177", "scanner": "scanner-primary", "fingerprint": "f6377747000f27fd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-efefd9f12ef8a15d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/page.tsx:215"}, "properties": {"repobilityId": "2a6638282026d4f9", "scanner": "scanner-primary", "fingerprint": "efefd9f12ef8a15d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bdda466d5941f68a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/page.tsx:100"}, "properties": {"repobilityId": "6779a4843a9d41ee", "scanner": "scanner-primary", "fingerprint": "bdda466d5941f68a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a26a52be61eeb0cb", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/layout.tsx:115"}, "properties": {"repobilityId": "6f16eb9b82a2dcd6", "scanner": "scanner-primary", "fingerprint": "a26a52be61eeb0cb", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d4fc8dd1f4486b81", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/page.tsx:71"}, "properties": {"repobilityId": "1f238bbf17f33cc8", "scanner": "scanner-primary", "fingerprint": "d4fc8dd1f4486b81", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-de4db010dd1c9eba", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/blog/[slug]/page.tsx:146"}, "properties": {"repobilityId": "c21e1247bf006285", "scanner": "scanner-primary", "fingerprint": "de4db010dd1c9eba", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-911087a7f70dae66", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/colleges/page.tsx:244"}, "properties": {"repobilityId": "2419ef304af61f17", "scanner": "scanner-primary", "fingerprint": "911087a7f70dae66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-703ccc84bb8f92aa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/colleges/page.tsx:162"}, "properties": {"repobilityId": "6b24635053727c5a", "scanner": "scanner-primary", "fingerprint": "703ccc84bb8f92aa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b00e4b938f67e50b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/account/AccountDashboard.tsx:662"}, "properties": {"repobilityId": "562e96874f305b2b", "scanner": "scanner-primary", "fingerprint": "b00e4b938f67e50b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-71ab3f7336bcf276", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/page.tsx:133"}, "properties": {"repobilityId": "14952a2ccebf1dd9", "scanner": "scanner-primary", "fingerprint": "71ab3f7336bcf276", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9777ac36c4b09fc5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/layout.tsx:71"}, "properties": {"repobilityId": "f854028c5b7cb0cd", "scanner": "scanner-primary", "fingerprint": "9777ac36c4b09fc5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-153f4171628b5617", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/about/page.tsx:92"}, "properties": {"repobilityId": "bed02e2c7dcbce4e", "scanner": "scanner-primary", "fingerprint": "153f4171628b5617", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-81a72a182c29c8f3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/colleges/page.tsx:80"}, "properties": {"repobilityId": "64df9a777b140284", "scanner": "scanner-primary", "fingerprint": "81a72a182c29c8f3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2749d4df5c3b1461", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/page.tsx:113"}, "properties": {"repobilityId": "083ff7fce46b547f", "scanner": "scanner-primary", "fingerprint": "2749d4df5c3b1461", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d6d0f3397a97dc28", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/TransferCoverageSection.tsx:79"}, "properties": {"repobilityId": "d118c3929727aa49", "scanner": "scanner-primary", "fingerprint": "d6d0f3397a97dc28", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14fd1abe4debbd02", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/transfer/to/[universitySlug]/page.tsx:239"}, "properties": {"repobilityId": "1908cfe83921f587", "scanner": "scanner-primary", "fingerprint": "14fd1abe4debbd02", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9dd72d5fbd8bfb40", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/transfer/compare/CompareTable.tsx:56"}, "properties": {"repobilityId": "5b3880071ebe7e2d", "scanner": "scanner-primary", "fingerprint": "9dd72d5fbd8bfb40", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f36097bc8cca6135", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/subject/[prefix]/page.tsx:299"}, "properties": {"repobilityId": "20e5f590216dfa33", "scanner": "scanner-primary", "fingerprint": "f36097bc8cca6135", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-faaa50f6d50eca66", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/programs/page.tsx:151"}, "properties": {"repobilityId": "106a7b091e57c946", "scanner": "scanner-primary", "fingerprint": "faaa50f6d50eca66", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-79edf6f75809847a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/online/page.tsx:110"}, "properties": {"repobilityId": "6805f48c2999d086", "scanner": "scanner-primary", "fingerprint": "79edf6f75809847a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6e0fa81cbabd8528", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/courses/page.tsx:258"}, "properties": {"repobilityId": "f584007ca6d641d8", "scanner": "scanner-primary", "fingerprint": "6e0fa81cbabd8528", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8fc58d17ab71a5b1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/page.tsx:278"}, "properties": {"repobilityId": "e02a5897c5835f3f", "scanner": "scanner-primary", "fingerprint": "8fc58d17ab71a5b1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-30a2939ed0619825", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:429"}, "properties": {"repobilityId": "c5eb97b82158cd65", "scanner": "scanner-primary", "fingerprint": "30a2939ed0619825", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bd953284b3af5d5e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/instructor/[slug]/page.tsx:284"}, "properties": {"repobilityId": "0e121f5881b8834e", "scanner": "scanner-primary", "fingerprint": "bd953284b3af5d5e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-82f67bd42c71e9c6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/programs/page.tsx:108"}, "properties": {"repobilityId": "e0be8d4ab5494830", "scanner": "scanner-primary", "fingerprint": "82f67bd42c71e9c6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-98a8a143588284f0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/college/[id]/courses/[prefix]/page.tsx:259"}, "properties": {"repobilityId": "7b90aac0ef226dc8", "scanner": "scanner-primary", "fingerprint": "98a8a143588284f0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7d5b7fa05970c195", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/[state]/college/[id]/program/[slug]/PlanClient.tsx:275"}, "properties": {"repobilityId": "bf9e01b17bfca699", "scanner": "scanner-primary", "fingerprint": "7d5b7fa05970c195", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-3ba712f468837bbf", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/course/[code]/page.tsx:451"}, "properties": {"repobilityId": "52c1c0ec5e303ab4", "scanner": "scanner-primary", "fingerprint": "3ba712f468837bbf", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4b2bd386a0117aa4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/plan/page.tsx:74"}, "properties": {"repobilityId": "8a18e62eb1aa8055", "scanner": "scanner-primary", "fingerprint": "4b2bd386a0117aa4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2d0c6f84994a5262", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/[state]/program/[slug]/page.tsx:287"}, "properties": {"repobilityId": "54a31c061e56e89d", "scanner": "scanner-primary", "fingerprint": "2d0c6f84994a5262", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bcf989df364ce1b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx:357"}, "properties": {"repobilityId": "1be43357e5f7b31d", "scanner": "scanner-primary", "fingerprint": "bcf989df364ce1b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d48532bb4fb96f9", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/programs/__tests__/planner.test.ts:146"}, "properties": {"repobilityId": "48d1c57b15f88f63", "scanner": "scanner-primary", "fingerprint": "8d48532bb4fb96f9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-54f3d8dad3ca46a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/ms/config.ts:11"}, "properties": {"repobilityId": "352c035d8befa7ac", "scanner": "scanner-primary", "fingerprint": "54f3d8dad3ca46a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8807ae9e9906cf5f", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/il/config.ts:11"}, "properties": {"repobilityId": "525345a3c20d6b2c", "scanner": "scanner-primary", "fingerprint": "8807ae9e9906cf5f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-32d91a9a9dd73374", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 lib/states/ky/config.ts:11"}, "properties": {"repobilityId": "de1ee20dca808b3f", "scanner": "scanner-primary", "fingerprint": "32d91a9a9dd73374", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0f63c0b7913e40bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-blog-mdx.ts:65"}, "properties": {"repobilityId": "7f4a1992db2003d9", "scanner": "scanner-primary", "fingerprint": "0f63c0b7913e40bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84ae5e5bebef8968", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-courses.ts:34"}, "properties": {"repobilityId": "86e65041f82a68ed", "scanner": "scanner-primary", "fingerprint": "84ae5e5bebef8968", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-559a6deb63b6220e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:116"}, "properties": {"repobilityId": "e4c3baa670338345", "scanner": "scanner-primary", "fingerprint": "559a6deb63b6220e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38745d70cd32eb0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scorecard-freshness.ts:92"}, "properties": {"repobilityId": "3b9a03f621f7488a", "scanner": "scanner-primary", "fingerprint": "38745d70cd32eb0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79eeb8a99db3acb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-term-hardcoding.ts:138"}, "properties": {"repobilityId": "8e4ef2bdb569eb03", "scanner": "scanner-primary", "fingerprint": "79eeb8a99db3acb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d59212c26eec6582", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-subject-vocab.ts:342"}, "properties": {"repobilityId": "ad8ab7e7fbad1a72", "scanner": "scanner-primary", "fingerprint": "d59212c26eec6582", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1db50e416964bbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-output.ts:55"}, "properties": {"repobilityId": "16f2e1d8dff25728", "scanner": "scanner-primary", "fingerprint": "a1db50e416964bbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62823fd91cce8cae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/scorecard-map.ts:263"}, "properties": {"repobilityId": "2f17d2f6443d05fd", "scanner": "scanner-primary", "fingerprint": "62823fd91cce8cae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59a448dbd12ed52c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/clean-cross-state-transfers.ts:37"}, "properties": {"repobilityId": "b73022ff9d7c10fc", "scanner": "scanner-primary", "fingerprint": "59a448dbd12ed52c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c84f7f018f4f4c27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard.ts:90"}, "properties": {"repobilityId": "1d414d29406a0fdd", "scanner": "scanner-primary", "fingerprint": "c84f7f018f4f4c27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6c890d68c079b0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/test-scorecard.ts:35"}, "properties": {"repobilityId": "e9de9faca432e1f7", "scanner": "scanner-primary", "fingerprint": "a6c890d68c079b0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e4ad1f66c9fc43e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-programs.ts:33"}, "properties": {"repobilityId": "ce7f687d504b7996", "scanner": "scanner-primary", "fingerprint": "2e4ad1f66c9fc43e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f1a1afbc36c55c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-data-integrity.ts:331"}, "properties": {"repobilityId": "6b02c878d07480a9", "scanner": "scanner-primary", "fingerprint": "7f1a1afbc36c55c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ab8b9db0d478bd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/reapply-program-matcher.ts:80"}, "properties": {"repobilityId": "455b8139bdb66c9e", "scanner": "scanner-primary", "fingerprint": "4ab8b9db0d478bd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbc61134719a8274", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-scraper-coverage.ts:102"}, "properties": {"repobilityId": "57d68d4166d0bf2d", "scanner": "scanner-primary", "fingerprint": "cbc61134719a8274", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ccde05c62a57f66f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/notify.ts:63"}, "properties": {"repobilityId": "96dd7558bd1c89da", "scanner": "scanner-primary", "fingerprint": "ccde05c62a57f66f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2004170b9a2e210d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/check-registry-integrity.ts:122"}, "properties": {"repobilityId": "5a66e6ed3582ad02", "scanner": "scanner-primary", "fingerprint": "2004170b9a2e210d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8eeee1e63456425", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-transfers.ts:33"}, "properties": {"repobilityId": "6da9521acdbe34a7", "scanner": "scanner-primary", "fingerprint": "f8eeee1e63456425", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1421f7c06afe6d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-transfer-universities-cache.ts:68"}, "properties": {"repobilityId": "d28e2349d1984bee", "scanner": "scanner-primary", "fingerprint": "e1421f7c06afe6d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4fe4013fe566e5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/build-benchmarks.ts:126"}, "properties": {"repobilityId": "5cd7042ad7b90f37", "scanner": "scanner-primary", "fingerprint": "d4fe4013fe566e5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a2408cdd9365c80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/eval-search-intent.ts:73"}, "properties": {"repobilityId": "1016963e2d187881", "scanner": "scanner-primary", "fingerprint": "2a2408cdd9365c80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e284d71fa20c0c61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/import-assist-articulation.ts:48"}, "properties": {"repobilityId": "dadb7c599ea6a36a", "scanner": "scanner-primary", "fingerprint": "e284d71fa20c0c61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-279bab6d701c80d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ingest-scorecard-programs.ts:65"}, "properties": {"repobilityId": "2513806a47b01432", "scanner": "scanner-primary", "fingerprint": "279bab6d701c80d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6791e21f8a367257", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/bench-transfer-lookup.ts:50"}, "properties": {"repobilityId": "c1ee1fddff19b705", "scanner": "scanner-primary", "fingerprint": "6791e21f8a367257", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5783409214cc74db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:198"}, "properties": {"repobilityId": "0fa3ab7311fc6da7", "scanner": "scanner-primary", "fingerprint": "5783409214cc74db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6ba998a6014057a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:382"}, "properties": {"repobilityId": "c79946eec65d9c55", "scanner": "scanner-primary", "fingerprint": "b6ba998a6014057a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbf96b39cd5e2f8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner8.ts:372"}, "properties": {"repobilityId": "b184753ae8f4cdb7", "scanner": "scanner-primary", "fingerprint": "bbf96b39cd5e2f8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91d35f31b61a9dfa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:162"}, "properties": {"repobilityId": "6edc208c1d589821", "scanner": "scanner-primary", "fingerprint": "91d35f31b61a9dfa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f2928ce36c9628e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-jenzabar.ts:130"}, "properties": {"repobilityId": "e6d69caa1aadf5a3", "scanner": "scanner-primary", "fingerprint": "3f2928ce36c9628e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ffebe3102f07a76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:223"}, "properties": {"repobilityId": "d02a92952a415bd6", "scanner": "scanner-primary", "fingerprint": "1ffebe3102f07a76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb1514de1408eff9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-programs.ts:46"}, "properties": {"repobilityId": "cf56a8e441b9b203", "scanner": "scanner-primary", "fingerprint": "cb1514de1408eff9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4cbf2ed092e32781", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-colleague.ts:47"}, "properties": {"repobilityId": "1e100cc33bc75813", "scanner": "scanner-primary", "fingerprint": "4cbf2ed092e32781", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5633286c85f441c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts:115"}, "properties": {"repobilityId": "32abf9692baccbc8", "scanner": "scanner-primary", "fingerprint": "5633286c85f441c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2daf5abe44f9368", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-jenzabar.ts:264"}, "properties": {"repobilityId": "1670cd92ae527645", "scanner": "scanner-primary", "fingerprint": "d2daf5abe44f9368", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6cb382231f5a2940", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:406"}, "properties": {"repobilityId": "679023e16ce286ca", "scanner": "scanner-primary", "fingerprint": "6cb382231f5a2940", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ff22973f722fe65f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts:254"}, "properties": {"repobilityId": "e267a1d4b1cdb1e8", "scanner": "scanner-primary", "fingerprint": "ff22973f722fe65f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f605fe6466c30911", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ia/scrape-colleague.ts:37"}, "properties": {"repobilityId": "a9ee9c41ac41c225", "scanner": "scanner-primary", "fingerprint": "f605fe6466c30911", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9db4839f8927fba4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:326"}, "properties": {"repobilityId": "5944b6fab01b60d5", "scanner": "scanner-primary", "fingerprint": "9db4839f8927fba4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8be57e6cfd7ace80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:367"}, "properties": {"repobilityId": "71b346577d955ffc", "scanner": "scanner-primary", "fingerprint": "8be57e6cfd7ace80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e137f83f76f187dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:347"}, "properties": {"repobilityId": "f051f09d37f061fd", "scanner": "scanner-primary", "fingerprint": "e137f83f76f187dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49e875a09d891448", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-eacc.ts:325"}, "properties": {"repobilityId": "bcfc2075382e4059", "scanner": "scanner-primary", "fingerprint": "49e875a09d891448", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ad6c54cf3e83a78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:166"}, "properties": {"repobilityId": "8771d3af6de5fb8b", "scanner": "scanner-primary", "fingerprint": "5ad6c54cf3e83a78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d57db6fb9ff7429e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:390"}, "properties": {"repobilityId": "5077b0b754929df5", "scanner": "scanner-primary", "fingerprint": "d57db6fb9ff7429e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee37dbf6c9dc0a75", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:213"}, "properties": {"repobilityId": "59b06934fc6e0dd1", "scanner": "scanner-primary", "fingerprint": "ee37dbf6c9dc0a75", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a0485d2112fb8d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-programs.ts:56"}, "properties": {"repobilityId": "9f553a30e6264ac6", "scanner": "scanner-primary", "fingerprint": "5a0485d2112fb8d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a49d5faac454d05", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:220"}, "properties": {"repobilityId": "f81f66bed6edcebb", "scanner": "scanner-primary", "fingerprint": "3a49d5faac454d05", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1440b941f2671c37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:433"}, "properties": {"repobilityId": "c6d6d4dd0dbe9258", "scanner": "scanner-primary", "fingerprint": "1440b941f2671c37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce9a68533081e2cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:311"}, "properties": {"repobilityId": "f1e077b43d900ccc", "scanner": "scanner-primary", "fingerprint": "ce9a68533081e2cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a28900f81db16eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-colleague.ts:42"}, "properties": {"repobilityId": "a861c3f120a90e85", "scanner": "scanner-primary", "fingerprint": "3a28900f81db16eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83a821b83034982d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:289"}, "properties": {"repobilityId": "de523c681c8e3b17", "scanner": "scanner-primary", "fingerprint": "83a821b83034982d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e484d5f7499b5a1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:182"}, "properties": {"repobilityId": "b1d07ac27c595904", "scanner": "scanner-primary", "fingerprint": "e484d5f7499b5a1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-267bbdb1cea96ff9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-catalog-prereqs.ts:204"}, "properties": {"repobilityId": "4aec936eb125a941", "scanner": "scanner-primary", "fingerprint": "267bbdb1cea96ff9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f0fb6b9a258e0ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.ts:177"}, "properties": {"repobilityId": "3820f44be9df9fe8", "scanner": "scanner-primary", "fingerprint": "5f0fb6b9a258e0ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1070fb08d0f34f13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:394"}, "properties": {"repobilityId": "a9ab042aab39b6a5", "scanner": "scanner-primary", "fingerprint": "1070fb08d0f34f13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd59f991391f4abf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts:175"}, "properties": {"repobilityId": "f4f78aa62874f3b5", "scanner": "scanner-primary", "fingerprint": "cd59f991391f4abf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c25701505018de2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:113"}, "properties": {"repobilityId": "cd79f6f9a42b3f8a", "scanner": "scanner-primary", "fingerprint": "c25701505018de2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25caa07ca3951418", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-programs.ts:142"}, "properties": {"repobilityId": "4d8fb537c9295638", "scanner": "scanner-primary", "fingerprint": "25caa07ca3951418", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec4d6f8f4b17d44c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-other-programs.ts:86"}, "properties": {"repobilityId": "4e12b4f179094317", "scanner": "scanner-primary", "fingerprint": "ec4d6f8f4b17d44c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f48146a990c42a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.ts:139"}, "properties": {"repobilityId": "b7f2baff8630d30a", "scanner": "scanner-primary", "fingerprint": "5f48146a990c42a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69a87eef3051c98f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:599"}, "properties": {"repobilityId": "49badce7ffc5ff05", "scanner": "scanner-primary", "fingerprint": "69a87eef3051c98f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84613b6cf0ebbbc6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-step.ts:269"}, "properties": {"repobilityId": "ee693c4d90ffcac1", "scanner": "scanner-primary", "fingerprint": "84613b6cf0ebbbc6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8787c269b347ea4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-colleague.ts:34"}, "properties": {"repobilityId": "bfbdbb4d2409cdae", "scanner": "scanner-primary", "fingerprint": "8787c269b347ea4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-529c653148f80786", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:335"}, "properties": {"repobilityId": "607c127ec480d502", "scanner": "scanner-primary", "fingerprint": "529c653148f80786", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2cfe85503233106", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-programs.ts:52"}, "properties": {"repobilityId": "420fdd2e9438c3f1", "scanner": "scanner-primary", "fingerprint": "d2cfe85503233106", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a1e5343e3601a90", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:416"}, "properties": {"repobilityId": "a33458d66cf363d1", "scanner": "scanner-primary", "fingerprint": "5a1e5343e3601a90", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac80eae7c5a404ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-banner8.ts:31"}, "properties": {"repobilityId": "3a34097c2a4aa9d0", "scanner": "scanner-primary", "fingerprint": "ac80eae7c5a404ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e5a55b046d47de0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:153"}, "properties": {"repobilityId": "339564f55942917b", "scanner": "scanner-primary", "fingerprint": "1e5a55b046d47de0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23bc25e2754804d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-programs.ts:66"}, "properties": {"repobilityId": "9bbf7c4f20227201", "scanner": "scanner-primary", "fingerprint": "23bc25e2754804d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cf09023d87dbf22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-transfer-olemiss.ts:95"}, "properties": {"repobilityId": "8b70e81d0c22bf0c", "scanner": "scanner-primary", "fingerprint": "5cf09023d87dbf22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e05697fc71474553", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:279"}, "properties": {"repobilityId": "f1d18b1cc207fb0e", "scanner": "scanner-primary", "fingerprint": "e05697fc71474553", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85415392dfa3d9c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:161"}, "properties": {"repobilityId": "ae0adebf168d7de8", "scanner": "scanner-primary", "fingerprint": "85415392dfa3d9c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2bf37833825a6dc1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-coursedog.ts:41"}, "properties": {"repobilityId": "7c09a0ba3653a6df", "scanner": "scanner-primary", "fingerprint": "2bf37833825a6dc1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a7e9efffd77d1fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:309"}, "properties": {"repobilityId": "0ce245d1f9f89469", "scanner": "scanner-primary", "fingerprint": "6a7e9efffd77d1fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b80129c61d2745b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts:420"}, "properties": {"repobilityId": "7a4dad61d3f8b252", "scanner": "scanner-primary", "fingerprint": "3b80129c61d2745b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f96df2445590f8b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/patch-mdc-campus.ts:42"}, "properties": {"repobilityId": "e3c3090951bc74d0", "scanner": "scanner-primary", "fingerprint": "f96df2445590f8b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a873d63be3d27d6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:240"}, "properties": {"repobilityId": "ddadf4f95ca7c76a", "scanner": "scanner-primary", "fingerprint": "a873d63be3d27d6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5565b72b22a0c1be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:316"}, "properties": {"repobilityId": "508492d2e401e6b6", "scanner": "scanner-primary", "fingerprint": "5565b72b22a0c1be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fe6dd99e8b0a262", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-banner8.ts:26"}, "properties": {"repobilityId": "fe9cea6c1c8e02c7", "scanner": "scanner-primary", "fingerprint": "3fe6dd99e8b0a262", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7b44aafb21daa40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-transfer-ccn.ts:124"}, "properties": {"repobilityId": "ab44c4df66076058", "scanner": "scanner-primary", "fingerprint": "b7b44aafb21daa40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf2532bab7a07a42", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-cdkc.ts:114"}, "properties": {"repobilityId": "4afd6041e966ca56", "scanner": "scanner-primary", "fingerprint": "bf2532bab7a07a42", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66e50c6a42533a8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts:135"}, "properties": {"repobilityId": "875866885791e354", "scanner": "scanner-primary", "fingerprint": "66e50c6a42533a8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15f5787bb3f517e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:193"}, "properties": {"repobilityId": "ba6c68b92f38c015", "scanner": "scanner-primary", "fingerprint": "15f5787bb3f517e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba924bf05f1f5e8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-cleancatalog-programs.ts:57"}, "properties": {"repobilityId": "f70fac63fc7d27fc", "scanner": "scanner-primary", "fingerprint": "ba924bf05f1f5e8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1af37d5fe4e2df5e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-usg.ts:201"}, "properties": {"repobilityId": "1835f8bbb3d95a33", "scanner": "scanner-primary", "fingerprint": "1af37d5fe4e2df5e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ad59d28ec6288d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:132"}, "properties": {"repobilityId": "86c9919e8177742b", "scanner": "scanner-primary", "fingerprint": "5ad59d28ec6288d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05930e627460d668", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:358"}, "properties": {"repobilityId": "796a0e4e493919ea", "scanner": "scanner-primary", "fingerprint": "05930e627460d668", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e8162e1a2ec8171", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:252"}, "properties": {"repobilityId": "70941593fb1ae221", "scanner": "scanner-primary", "fingerprint": "3e8162e1a2ec8171", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cc0a0b696681fb72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-programs.ts:48"}, "properties": {"repobilityId": "8dd985250cbf0ac0", "scanner": "scanner-primary", "fingerprint": "cc0a0b696681fb72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ba09042ba088caa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-nimble-cms-programs.ts:86"}, "properties": {"repobilityId": "6ac177fcb8ee8929", "scanner": "scanner-primary", "fingerprint": "2ba09042ba088caa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c42becb6367ca329", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:146"}, "properties": {"repobilityId": "b900fcd1688c1abe", "scanner": "scanner-primary", "fingerprint": "c42becb6367ca329", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-626a6e0b55ff591f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:387"}, "properties": {"repobilityId": "b084fa723d85afda", "scanner": "scanner-primary", "fingerprint": "626a6e0b55ff591f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8158980a87b1f601", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:298"}, "properties": {"repobilityId": "7f581964fb1741fe", "scanner": "scanner-primary", "fingerprint": "8158980a87b1f601", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d367c907ef9247b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:215"}, "properties": {"repobilityId": "d2db93510d90d3f8", "scanner": "scanner-primary", "fingerprint": "2d367c907ef9247b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7dc07caf96a0eaeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:203"}, "properties": {"repobilityId": "efa26ef0473ddd59", "scanner": "scanner-primary", "fingerprint": "7dc07caf96a0eaeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e68c9bee8d88cd1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-catalog-prereqs.ts:198"}, "properties": {"repobilityId": "43295db7ce4f5df1", "scanner": "scanner-primary", "fingerprint": "e68c9bee8d88cd1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6f27d3a2b16e519", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-programs.ts:56"}, "properties": {"repobilityId": "22282d784afc4632", "scanner": "scanner-primary", "fingerprint": "f6f27d3a2b16e519", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21b3f5d9332f8840", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-colleague.ts:36"}, "properties": {"repobilityId": "8e781a8a4b74f9f7", "scanner": "scanner-primary", "fingerprint": "21b3f5d9332f8840", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa80bd87ed6b7c22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-banner8.ts:30"}, "properties": {"repobilityId": "4a206c4189431221", "scanner": "scanner-primary", "fingerprint": "aa80bd87ed6b7c22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-10fc6607309df694", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.ts:91"}, "properties": {"repobilityId": "57e9e30d9c5a86e1", "scanner": "scanner-primary", "fingerprint": "10fc6607309df694", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-752553ec86677c5c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-lctcs-banner-ssb.ts:58"}, "properties": {"repobilityId": "a3ade9bc46be8876", "scanner": "scanner-primary", "fingerprint": "752553ec86677c5c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e66cdabcb6c48fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-coursedog.ts:47"}, "properties": {"repobilityId": "2ba424c355cfb5a3", "scanner": "scanner-primary", "fingerprint": "4e66cdabcb6c48fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-948848f0393996b4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts:23"}, "properties": {"repobilityId": "081f05a9dff322ab", "scanner": "scanner-primary", "fingerprint": "948848f0393996b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b9c9d6383d19448", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:118"}, "properties": {"repobilityId": "0ff4deb130a1c959", "scanner": "scanner-primary", "fingerprint": "5b9c9d6383d19448", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd159109ce2ebf32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:202"}, "properties": {"repobilityId": "191a538f94aa447a", "scanner": "scanner-primary", "fingerprint": "dd159109ce2ebf32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3674e40e0e91a3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts:192"}, "properties": {"repobilityId": "df4b12ee7f293279", "scanner": "scanner-primary", "fingerprint": "d3674e40e0e91a3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34e3fda1cdc96706", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:221"}, "properties": {"repobilityId": "15a0f12e8367a36e", "scanner": "scanner-primary", "fingerprint": "34e3fda1cdc96706", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8716b9a2e16c260f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-colleague.ts:31"}, "properties": {"repobilityId": "17bff752a324cebd", "scanner": "scanner-primary", "fingerprint": "8716b9a2e16c260f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b496c811b98113b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:271"}, "properties": {"repobilityId": "6858e0bf2f2f003a", "scanner": "scanner-primary", "fingerprint": "b496c811b98113b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f25de505f7df7f7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:244"}, "properties": {"repobilityId": "196277f81c9082ea", "scanner": "scanner-primary", "fingerprint": "f25de505f7df7f7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84a9541ca5fd927a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:269"}, "properties": {"repobilityId": "402f6a3a2e467689", "scanner": "scanner-primary", "fingerprint": "84a9541ca5fd927a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75a8139ed823c877", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-banner-ssb.ts:36"}, "properties": {"repobilityId": "5646b9a6f63fbd2f", "scanner": "scanner-primary", "fingerprint": "75a8139ed823c877", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f5dd2284132e45f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:449"}, "properties": {"repobilityId": "5eeb723f8a259be4", "scanner": "scanner-primary", "fingerprint": "f5dd2284132e45f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b83c860c68b78cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-programs.ts:37"}, "properties": {"repobilityId": "94ebc16171515e98", "scanner": "scanner-primary", "fingerprint": "7b83c860c68b78cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c96b0d19b64d8341", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:272"}, "properties": {"repobilityId": "4b835e44c58e6c71", "scanner": "scanner-primary", "fingerprint": "c96b0d19b64d8341", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61be029d042c7f44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-colleague.ts:31"}, "properties": {"repobilityId": "d982188ecb2ac4eb", "scanner": "scanner-primary", "fingerprint": "61be029d042c7f44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d993e1cee38ef8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts:89"}, "properties": {"repobilityId": "40323d431340315f", "scanner": "scanner-primary", "fingerprint": "9d993e1cee38ef8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-311b79b5b6ac6d2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-iecc.ts:61"}, "properties": {"repobilityId": "f686bafbfe721102", "scanner": "scanner-primary", "fingerprint": "311b79b5b6ac6d2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52f41b73ef078991", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:229"}, "properties": {"repobilityId": "224e6b730b3c1a1e", "scanner": "scanner-primary", "fingerprint": "52f41b73ef078991", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cca92f96ea4735f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/sweep-stale-terms.ts:211"}, "properties": {"repobilityId": "83459016b59485cf", "scanner": "scanner-primary", "fingerprint": "cca92f96ea4735f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1c64294d120a439", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:389"}, "properties": {"repobilityId": "537d954981fd70b7", "scanner": "scanner-primary", "fingerprint": "e1c64294d120a439", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc6721857e7fdb29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts:154"}, "properties": {"repobilityId": "d67cd5f85ce5ca1b", "scanner": "scanner-primary", "fingerprint": "dc6721857e7fdb29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43a039cdfc7df27a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/http-retry.ts:84"}, "properties": {"repobilityId": "2e73cb6a7c54590b", "scanner": "scanner-primary", "fingerprint": "43a039cdfc7df27a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76a4665fedd9000b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:875"}, "properties": {"repobilityId": "c4677c62aaffc390", "scanner": "scanner-primary", "fingerprint": "76a4665fedd9000b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3160dedd09be41ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:493"}, "properties": {"repobilityId": "493250a5257acfd6", "scanner": "scanner-primary", "fingerprint": "3160dedd09be41ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e45600b34bef125", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:261"}, "properties": {"repobilityId": "9fa8cedbc7861fa3", "scanner": "scanner-primary", "fingerprint": "4e45600b34bef125", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e357a616ee57d007", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/bootstrap-state.ts:414"}, "properties": {"repobilityId": "af0ab888880e4586", "scanner": "scanner-primary", "fingerprint": "e357a616ee57d007", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a65f6547a4abdc64", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:315"}, "properties": {"repobilityId": "38acb81c0c631807", "scanner": "scanner-primary", "fingerprint": "a65f6547a4abdc64", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a207a59f1756fc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-catalog.ts:50"}, "properties": {"repobilityId": "3ef39b4058ffe390", "scanner": "scanner-primary", "fingerprint": "3a207a59f1756fc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17cb2ca8c6fab70a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:362"}, "properties": {"repobilityId": "df8d46085dc525cc", "scanner": "scanner-primary", "fingerprint": "17cb2ca8c6fab70a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73730ca0cfae1c0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:407"}, "properties": {"repobilityId": "3dca94029f6fa8ab", "scanner": "scanner-primary", "fingerprint": "73730ca0cfae1c0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f9c5263c442914b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:145"}, "properties": {"repobilityId": "27df6c365861a436", "scanner": "scanner-primary", "fingerprint": "4f9c5263c442914b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0dcd0ad3df94063a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:424"}, "properties": {"repobilityId": "3bdc2ce1a0658520", "scanner": "scanner-primary", "fingerprint": "0dcd0ad3df94063a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3bc3ee895df61c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:422"}, "properties": {"repobilityId": "d5537817792df4bb", "scanner": "scanner-primary", "fingerprint": "f3bc3ee895df61c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8fa7c2079e6ac6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts:89"}, "properties": {"repobilityId": "1a6dc43de62fec1b", "scanner": "scanner-primary", "fingerprint": "a8fa7c2079e6ac6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17fdaa4f05a99c6a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scraper-matrix.ts:80"}, "properties": {"repobilityId": "7a633cebde9873ea", "scanner": "scanner-primary", "fingerprint": "17fdaa4f05a99c6a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cd8143681d811bff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:250"}, "properties": {"repobilityId": "34ae803beab2fab1", "scanner": "scanner-primary", "fingerprint": "cd8143681d811bff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e9ad525e5ca13e26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/coverage-expansion.ts:173"}, "properties": {"repobilityId": "ce6e1f3e19773a5e", "scanner": "scanner-primary", "fingerprint": "e9ad525e5ca13e26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a8a2b53437a7ff4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/run-migration.ts:42"}, "properties": {"repobilityId": "8771cc95c09237ce", "scanner": "scanner-primary", "fingerprint": "6a8a2b53437a7ff4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f84fb2a5fc211d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/refingerprint-sweep.ts:195"}, "properties": {"repobilityId": "20602a072c8733c7", "scanner": "scanner-primary", "fingerprint": "2f84fb2a5fc211d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-161b02b03767195f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:326"}, "properties": {"repobilityId": "f565e71d8ebc375b", "scanner": "scanner-primary", "fingerprint": "161b02b03767195f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85d8550c5951a011", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts:378"}, "properties": {"repobilityId": "6d546b978da44d56", "scanner": "scanner-primary", "fingerprint": "85d8550c5951a011", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1a99cf6d4afd2e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts:407"}, "properties": {"repobilityId": "e7fbaf6c0d955ae7", "scanner": "scanner-primary", "fingerprint": "e1a99cf6d4afd2e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95f10b5419686e41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:445"}, "properties": {"repobilityId": "7eae4c683b0a4c4d", "scanner": "scanner-primary", "fingerprint": "95f10b5419686e41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50c851495930efbd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:397"}, "properties": {"repobilityId": "c2bc433836d919ec", "scanner": "scanner-primary", "fingerprint": "50c851495930efbd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-791d3280426a941b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:589"}, "properties": {"repobilityId": "0e8ca3e86d001fd3", "scanner": "scanner-primary", "fingerprint": "791d3280426a941b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3b5299fa2262e49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts:32"}, "properties": {"repobilityId": "3c4abb75c61d1f79", "scanner": "scanner-primary", "fingerprint": "d3b5299fa2262e49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04070cf9c8a8b982", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:515"}, "properties": {"repobilityId": "fc791891c131c3ee", "scanner": "scanner-primary", "fingerprint": "04070cf9c8a8b982", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9723fd493aa80f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:523"}, "properties": {"repobilityId": "a2b7d2927b649dd8", "scanner": "scanner-primary", "fingerprint": "b9723fd493aa80f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bddeaf971d5eaba0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:84"}, "properties": {"repobilityId": "c8778e2416c2f151", "scanner": "scanner-primary", "fingerprint": "bddeaf971d5eaba0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ababb5bde0abceda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:203"}, "properties": {"repobilityId": "d8b4f7285234b9a2", "scanner": "scanner-primary", "fingerprint": "ababb5bde0abceda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd79daf3bbc1f8e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:167"}, "properties": {"repobilityId": "fb2b7cd11bd43608", "scanner": "scanner-primary", "fingerprint": "bd79daf3bbc1f8e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-37aa58b616bacaa1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-nimble-cms-programs.ts:369"}, "properties": {"repobilityId": "78d4a158907e48e4", "scanner": "scanner-primary", "fingerprint": "37aa58b616bacaa1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52eb307e18518c37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/fingerprint-state-sweep.ts:237"}, "properties": {"repobilityId": "00a14be97257d2e4", "scanner": "scanner-primary", "fingerprint": "52eb307e18518c37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a604db39594ee86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:275"}, "properties": {"repobilityId": "2c413793541e899f", "scanner": "scanner-primary", "fingerprint": "2a604db39594ee86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a35378e26491ae39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:662"}, "properties": {"repobilityId": "ce0595fe499ac56e", "scanner": "scanner-primary", "fingerprint": "a35378e26491ae39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-513b592d1c253a55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/triage-scraper-health.ts:591"}, "properties": {"repobilityId": "ad201463b0be6476", "scanner": "scanner-primary", "fingerprint": "513b592d1c253a55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25e160f7932d6250", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts:192"}, "properties": {"repobilityId": "3a951193b1fe4c75", "scanner": "scanner-primary", "fingerprint": "25e160f7932d6250", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01170e7c3e55b467", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:152"}, "properties": {"repobilityId": "e812de059bc64964", "scanner": "scanner-primary", "fingerprint": "01170e7c3e55b467", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be0503e40b100c3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/lib/add-state.ts:284"}, "properties": {"repobilityId": "66395638ba9917bc", "scanner": "scanner-primary", "fingerprint": "be0503e40b100c3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a90d31ddb0ea89cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:202"}, "properties": {"repobilityId": "c60477268ca4dca2", "scanner": "scanner-primary", "fingerprint": "a90d31ddb0ea89cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ebc3bfa8605dbed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:550"}, "properties": {"repobilityId": "21102d13104b54ee", "scanner": "scanner-primary", "fingerprint": "4ebc3bfa8605dbed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d1a85a9630fa279", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:215"}, "properties": {"repobilityId": "4ecf89bf055b2751", "scanner": "scanner-primary", "fingerprint": "3d1a85a9630fa279", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6101ff387178574", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-programs.ts:32"}, "properties": {"repobilityId": "1e93c993bf42df44", "scanner": "scanner-primary", "fingerprint": "b6101ff387178574", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0c6e536b5286ea26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-rcsj.ts:299"}, "properties": {"repobilityId": "af04a6725a938fb9", "scanner": "scanner-primary", "fingerprint": "0c6e536b5286ea26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc14f43ff467f33c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-colleague.ts:38"}, "properties": {"repobilityId": "6090d4cf753827fe", "scanner": "scanner-primary", "fingerprint": "dc14f43ff467f33c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a814e6baf8da9146", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:260"}, "properties": {"repobilityId": "0d6c0d09d87d8578", "scanner": "scanner-primary", "fingerprint": "a814e6baf8da9146", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-906e3fcf2b3957f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:621"}, "properties": {"repobilityId": "939def347335d7d0", "scanner": "scanner-primary", "fingerprint": "906e3fcf2b3957f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f9364b77f05dd94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:252"}, "properties": {"repobilityId": "79459677f8936e11", "scanner": "scanner-primary", "fingerprint": "2f9364b77f05dd94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75e1b923edaab9ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-peralta.ts:239"}, "properties": {"repobilityId": "292ce736f61a0f98", "scanner": "scanner-primary", "fingerprint": "75e1b923edaab9ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09fb0110b923fa26", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts:244"}, "properties": {"repobilityId": "e4ba4fee945f7f06", "scanner": "scanner-primary", "fingerprint": "09fb0110b923fa26", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf1a36dbeac6dc3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts:115"}, "properties": {"repobilityId": "00a61a523d02ecc9", "scanner": "scanner-primary", "fingerprint": "cf1a36dbeac6dc3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04679504db9e6230", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:484"}, "properties": {"repobilityId": "02f536f382f0cbf3", "scanner": "scanner-primary", "fingerprint": "04679504db9e6230", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c42f30ed9fbc5526", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:213"}, "properties": {"repobilityId": "7f81e3050e4dbd88", "scanner": "scanner-primary", "fingerprint": "c42f30ed9fbc5526", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6496961d7ddfa785", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:270"}, "properties": {"repobilityId": "1b877f068919d6e0", "scanner": "scanner-primary", "fingerprint": "6496961d7ddfa785", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2d8e1603e64205b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-deanza.ts:267"}, "properties": {"repobilityId": "afc851b850248b66", "scanner": "scanner-primary", "fingerprint": "a2d8e1603e64205b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fb48da0e38146b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs-acalog.ts:39"}, "properties": {"repobilityId": "7e30934c6db6df35", "scanner": "scanner-primary", "fingerprint": "3fb48da0e38146b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-319e48994600a9cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-transfers.ts:265"}, "properties": {"repobilityId": "ac39f1d75bcdd3f3", "scanner": "scanner-primary", "fingerprint": "319e48994600a9cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4cd252d81f88016", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:90"}, "properties": {"repobilityId": "7a9d23fc752ae3cf", "scanner": "scanner-primary", "fingerprint": "c4cd252d81f88016", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15a757c97648edc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-mn-eservices.ts:262"}, "properties": {"repobilityId": "1bc4224d6953ad2a", "scanner": "scanner-primary", "fingerprint": "15a757c97648edc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c2dc825cb6dcf4d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-programs.ts:23"}, "properties": {"repobilityId": "42d56fb7d4ad8503", "scanner": "scanner-primary", "fingerprint": "2c2dc825cb6dcf4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d13b6da4c7fb291f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-colleague.ts:33"}, "properties": {"repobilityId": "abfe0fe8f89294ec", "scanner": "scanner-primary", "fingerprint": "d13b6da4c7fb291f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a5adc72ebe21d01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-cccs-banner8.ts:54"}, "properties": {"repobilityId": "6b4f06f9a1219247", "scanner": "scanner-primary", "fingerprint": "4a5adc72ebe21d01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09b1e1521333da3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/co/scrape-programs.ts:23"}, "properties": {"repobilityId": "37c78b8f09208e25", "scanner": "scanner-primary", "fingerprint": "09b1e1521333da3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-151e7c974b465b86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ecsu.ts:306"}, "properties": {"repobilityId": "4b09edbc4dc69621", "scanner": "scanner-primary", "fingerprint": "151e7c974b465b86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a92faf29ba057359", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.ts:148"}, "properties": {"repobilityId": "271eaee15df13906", "scanner": "scanner-primary", "fingerprint": "a92faf29ba057359", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f8079d45d988a65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-uconn.ts:254"}, "properties": {"repobilityId": "966c145dc28b4d59", "scanner": "scanner-primary", "fingerprint": "5f8079d45d988a65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2523a1259a960128", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:174"}, "properties": {"repobilityId": "1898036c46951c5e", "scanner": "scanner-primary", "fingerprint": "2523a1259a960128", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2752ffda7306c690", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-ccsu.ts:300"}, "properties": {"repobilityId": "d2500c458b950f96", "scanner": "scanner-primary", "fingerprint": "2752ffda7306c690", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5df58a2004cb3407", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts:89"}, "properties": {"repobilityId": "9cab081560ba906f", "scanner": "scanner-primary", "fingerprint": "5df58a2004cb3407", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-627e90144a921017", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-scsu.ts:141"}, "properties": {"repobilityId": "8267b64621080a13", "scanner": "scanner-primary", "fingerprint": "627e90144a921017", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1771871e07c2ebf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-catalog-prereqs.ts:215"}, "properties": {"repobilityId": "e08d6d2140241494", "scanner": "scanner-primary", "fingerprint": "b1771871e07c2ebf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d882debb3db74cf1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-programs.ts:32"}, "properties": {"repobilityId": "8364b7fd062e3706", "scanner": "scanner-primary", "fingerprint": "d882debb3db74cf1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-923f30509a123d93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:143"}, "properties": {"repobilityId": "ce7c420b75733e69", "scanner": "scanner-primary", "fingerprint": "923f30509a123d93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1121f0a130360df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:181"}, "properties": {"repobilityId": "60b9d171e7e70444", "scanner": "scanner-primary", "fingerprint": "e1121f0a130360df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-420ea5b4e14fbc01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts:23"}, "properties": {"repobilityId": "b76b0003e30c1118", "scanner": "scanner-primary", "fingerprint": "420ea5b4e14fbc01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a83c6cae9e9c9fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:136"}, "properties": {"repobilityId": "5deb8468541c1818", "scanner": "scanner-primary", "fingerprint": "6a83c6cae9e9c9fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f02adcd8209051a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/hi/scrape-uhcc.ts:78"}, "properties": {"repobilityId": "1410afedded30f35", "scanner": "scanner-primary", "fingerprint": "0f02adcd8209051a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4eafcd6ef0812557", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:242"}, "properties": {"repobilityId": "e8327ba1dbd0a106", "scanner": "scanner-primary", "fingerprint": "4eafcd6ef0812557", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8fd20f09b27c220", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:315"}, "properties": {"repobilityId": "caedc5d59ad5fb4b", "scanner": "scanner-primary", "fingerprint": "b8fd20f09b27c220", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-045f5f068a33566b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.ts:404"}, "properties": {"repobilityId": "d4ceb4c3667f13ae", "scanner": "scanner-primary", "fingerprint": "045f5f068a33566b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-034ad846594cb667", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer-mainestreet.ts:159"}, "properties": {"repobilityId": "5913c7cc23f854b0", "scanner": "scanner-primary", "fingerprint": "034ad846594cb667", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f4aedfb4f936deee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:277"}, "properties": {"repobilityId": "bff86965c84b2abb", "scanner": "scanner-primary", "fingerprint": "f4aedfb4f936deee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5613cbc1568d20a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-banner8.ts:23"}, "properties": {"repobilityId": "474fc46c0a8bad7c", "scanner": "scanner-primary", "fingerprint": "b5613cbc1568d20a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-830b1b714db5471a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-campusnexus.ts:379"}, "properties": {"repobilityId": "8c88236ed00605c6", "scanner": "scanner-primary", "fingerprint": "830b1b714db5471a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-703d4907dd43b0b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-programs.ts:23"}, "properties": {"repobilityId": "5f17c94958db3103", "scanner": "scanner-primary", "fingerprint": "703d4907dd43b0b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e82586b436f6ce21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-transfer-ccns.ts:133"}, "properties": {"repobilityId": "bd9803002ca660a5", "scanner": "scanner-primary", "fingerprint": "e82586b436f6ce21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e192092ee8161fa2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-transfer-marshall.ts:158"}, "properties": {"repobilityId": "e58078d15ae671be", "scanner": "scanner-primary", "fingerprint": "e192092ee8161fa2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e18950486b3d9049", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:276"}, "properties": {"repobilityId": "6be5c9224c0bbb38", "scanner": "scanner-primary", "fingerprint": "e18950486b3d9049", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2103d4f15a3e8c40", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-colleague.ts:242"}, "properties": {"repobilityId": "06fbff066029b4ce", "scanner": "scanner-primary", "fingerprint": "2103d4f15a3e8c40", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc27c3cea195e9b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts:45"}, "properties": {"repobilityId": "58078780f92baa5f", "scanner": "scanner-primary", "fingerprint": "dc27c3cea195e9b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8a91b4e5d941644", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.ts:41"}, "properties": {"repobilityId": "6d447f498e0f07d1", "scanner": "scanner-primary", "fingerprint": "e8a91b4e5d941644", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a6ac19c4e983930", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:44"}, "properties": {"repobilityId": "7e43be33e7ceb6fe", "scanner": "scanner-primary", "fingerprint": "0a6ac19c4e983930", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1feb0bb14934f506", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-colleague-subdomains.ts:286"}, "properties": {"repobilityId": "06d7833662d3d6fd", "scanner": "scanner-primary", "fingerprint": "1feb0bb14934f506", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b70dc00d454b569", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.ts:42"}, "properties": {"repobilityId": "a6fbaf7632eb1d5e", "scanner": "scanner-primary", "fingerprint": "7b70dc00d454b569", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e334f37109bb867", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:123"}, "properties": {"repobilityId": "85bb8929425596ff", "scanner": "scanner-primary", "fingerprint": "9e334f37109bb867", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75f4985694f7e35f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/discover-registration-systems.ts:126"}, "properties": {"repobilityId": "bc58282c4dd4bb10", "scanner": "scanner-primary", "fingerprint": "75f4985694f7e35f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a0855ed831e0ad2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:197"}, "properties": {"repobilityId": "2989949a7f67560e", "scanner": "scanner-primary", "fingerprint": "3a0855ed831e0ad2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20249fc400dbc237", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:40"}, "properties": {"repobilityId": "40905b084c65949b", "scanner": "scanner-primary", "fingerprint": "20249fc400dbc237", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d912cd6eea18de4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:125"}, "properties": {"repobilityId": "279d7612bb7974b0", "scanner": "scanner-primary", "fingerprint": "3d912cd6eea18de4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2edcd522ea03d7a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/_discover-cns-api.ts:15"}, "properties": {"repobilityId": "3bb599286a1c94a0", "scanner": "scanner-primary", "fingerprint": "2edcd522ea03d7a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a1415c2998d201d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts:115"}, "properties": {"repobilityId": "f2f8f12acf92dcbe", "scanner": "scanner-primary", "fingerprint": "2a1415c2998d201d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e98463d99533664a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.ts:91"}, "properties": {"repobilityId": "b4dfece373cbe6a5", "scanner": "scanner-primary", "fingerprint": "e98463d99533664a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-203726761c6cc691", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:57"}, "properties": {"repobilityId": "639cd55982ce4d87", "scanner": "scanner-primary", "fingerprint": "203726761c6cc691", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5b5f79c5b5be13f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.ts:139"}, "properties": {"repobilityId": "193c13bb9c6f1431", "scanner": "scanner-primary", "fingerprint": "e5b5f79c5b5be13f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3436dca8fadce595", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:217"}, "properties": {"repobilityId": "ae9593074b168f66", "scanner": "scanner-primary", "fingerprint": "3436dca8fadce595", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e4bda40630610cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:67"}, "properties": {"repobilityId": "16a12105c8b265af", "scanner": "scanner-primary", "fingerprint": "2e4bda40630610cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-75d83a01ecea05eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:182"}, "properties": {"repobilityId": "fc76ffa919460ff5", "scanner": "scanner-primary", "fingerprint": "75d83a01ecea05eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e59dbcbc5c6c9ed8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:95"}, "properties": {"repobilityId": "cef081533b05839c", "scanner": "scanner-primary", "fingerprint": "e59dbcbc5c6c9ed8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-950cabbc6b0b6960", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:265"}, "properties": {"repobilityId": "81be23a1350c4d5e", "scanner": "scanner-primary", "fingerprint": "950cabbc6b0b6960", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d546d890c036a4fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-programs.ts:38"}, "properties": {"repobilityId": "33ab92744c3598bc", "scanner": "scanner-primary", "fingerprint": "d546d890c036a4fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c506c9e2c58f120", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:281"}, "properties": {"repobilityId": "43b7adc1ba5cedc0", "scanner": "scanner-primary", "fingerprint": "4c506c9e2c58f120", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ade2b3cb6e7b98ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-southeast-tech.ts:175"}, "properties": {"repobilityId": "38cd5f639b56b826", "scanner": "scanner-primary", "fingerprint": "ade2b3cb6e7b98ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-062f84a5aedba69d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-colleague.ts:199"}, "properties": {"repobilityId": "d72d148c7eee34c9", "scanner": "scanner-primary", "fingerprint": "062f84a5aedba69d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27407fb2bed3ec8a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-universities.ts:245"}, "properties": {"repobilityId": "e7f31d4123d492fe", "scanner": "scanner-primary", "fingerprint": "27407fb2bed3ec8a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ba6e7d8ec52c741", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/discover-sc-systems.ts:203"}, "properties": {"repobilityId": "d75e444adf9adc65", "scanner": "scanner-primary", "fingerprint": "9ba6e7d8ec52c741", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a3e07be1cdc7099", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:313"}, "properties": {"repobilityId": "8bb07ffb4208d4a4", "scanner": "scanner-primary", "fingerprint": "4a3e07be1cdc7099", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b563c1df26b03d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:258"}, "properties": {"repobilityId": "6aa930063246bb83", "scanner": "scanner-primary", "fingerprint": "6b563c1df26b03d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-65c200d607295b18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:89"}, "properties": {"repobilityId": "98583201f3552726", "scanner": "scanner-primary", "fingerprint": "65c200d607295b18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3556ad31c75b3fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:251"}, "properties": {"repobilityId": "25d8fe618be3bddf", "scanner": "scanner-primary", "fingerprint": "f3556ad31c75b3fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a024a0bfe78447d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-midlands.ts:182"}, "properties": {"repobilityId": "94643a1a7c262c96", "scanner": "scanner-primary", "fingerprint": "a024a0bfe78447d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef706d2ff5ff4050", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:101"}, "properties": {"repobilityId": "b70896e8604de565", "scanner": "scanner-primary", "fingerprint": "ef706d2ff5ff4050", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-020caa302a5ce484", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-programs.ts:50"}, "properties": {"repobilityId": "5892386db03d62f1", "scanner": "scanner-primary", "fingerprint": "020caa302a5ce484", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f47206bbd03be92c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:270"}, "properties": {"repobilityId": "7658cb60a669e7f2", "scanner": "scanner-primary", "fingerprint": "f47206bbd03be92c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-388847cd5e0bc442", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-colleague.ts:30"}, "properties": {"repobilityId": "ba9873cd9c7094c5", "scanner": "scanner-primary", "fingerprint": "388847cd5e0bc442", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9dbeb5556ea6ff20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:97"}, "properties": {"repobilityId": "4a96059f0489a2e4", "scanner": "scanner-primary", "fingerprint": "9dbeb5556ea6ff20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8599d3339246583f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:101"}, "properties": {"repobilityId": "588d1a955a8cf1d8", "scanner": "scanner-primary", "fingerprint": "8599d3339246583f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43bce17bdcd3840e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:159"}, "properties": {"repobilityId": "84a3431ed65422cf", "scanner": "scanner-primary", "fingerprint": "43bce17bdcd3840e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2a5d52f390c1c70c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-klamath.ts:169"}, "properties": {"repobilityId": "cf9620aabe89135f", "scanner": "scanner-primary", "fingerprint": "2a5d52f390c1c70c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f8aef26e3dc56bc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:208"}, "properties": {"repobilityId": "dff208bcf941f926", "scanner": "scanner-primary", "fingerprint": "6f8aef26e3dc56bc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34c477fb6cb89cb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ok/scrape-transfer-ocep.ts:34"}, "properties": {"repobilityId": "305ff8e38d0629dd", "scanner": "scanner-primary", "fingerprint": "34c477fb6cb89cb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8b98ecb08e7c3d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:95"}, "properties": {"repobilityId": "41dff73a8b5e9066", "scanner": "scanner-primary", "fingerprint": "e8b98ecb08e7c3d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9efd6c5952439e27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:164"}, "properties": {"repobilityId": "649957823b7e4550", "scanner": "scanner-primary", "fingerprint": "9efd6c5952439e27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b55be7b2e15bb8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner-ssb9.ts:66"}, "properties": {"repobilityId": "0ddf3a60382e2f37", "scanner": "scanner-primary", "fingerprint": "2b55be7b2e15bb8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2339562bf799d3a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-nv-transfers.ts:215"}, "properties": {"repobilityId": "48366ad97a1d975a", "scanner": "scanner-primary", "fingerprint": "d2339562bf799d3a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d631e1614e04c130", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-catalog-prereqs.ts:124"}, "properties": {"repobilityId": "16b5917a7074b345", "scanner": "scanner-primary", "fingerprint": "d631e1614e04c130", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4477cd50dcd0230", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-programs.ts:42"}, "properties": {"repobilityId": "3db61e55006a6f65", "scanner": "scanner-primary", "fingerprint": "e4477cd50dcd0230", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1629ad9e3f85226d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nv/scrape-peoplesoft.ts:557"}, "properties": {"repobilityId": "0d9e67ecab1631e8", "scanner": "scanner-primary", "fingerprint": "1629ad9e3f85226d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-34dc666aa4903d04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:174"}, "properties": {"repobilityId": "9634a3d1c9f4d304", "scanner": "scanner-primary", "fingerprint": "34dc666aa4903d04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4691e7a475a2cea3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.ts:139"}, "properties": {"repobilityId": "eecd8f449e1d517a", "scanner": "scanner-primary", "fingerprint": "4691e7a475a2cea3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a268610f6c684316", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-catalog-prereqs.ts:215"}, "properties": {"repobilityId": "600b57ea54c062f5", "scanner": "scanner-primary", "fingerprint": "a268610f6c684316", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e324051f3350731", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-programs.ts:31"}, "properties": {"repobilityId": "7a59011076f124d0", "scanner": "scanner-primary", "fingerprint": "2e324051f3350731", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a433bd479acdf2d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-colleague.ts:49"}, "properties": {"repobilityId": "af601545b8b75800", "scanner": "scanner-primary", "fingerprint": "a433bd479acdf2d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-116e9fe9deea93a7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-programs.ts:23"}, "properties": {"repobilityId": "62b3a35da6e97441", "scanner": "scanner-primary", "fingerprint": "116e9fe9deea93a7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe35bf43cb1f14be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts:143"}, "properties": {"repobilityId": "e289c103622338b8", "scanner": "scanner-primary", "fingerprint": "fe35bf43cb1f14be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-422b51be795fd6cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:367"}, "properties": {"repobilityId": "311c7aeec35bf36f", "scanner": "scanner-primary", "fingerprint": "422b51be795fd6cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bca87a03f47c2abe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:425"}, "properties": {"repobilityId": "46b855127bc278c4", "scanner": "scanner-primary", "fingerprint": "bca87a03f47c2abe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a059e027a6749698", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-catalog-prereqs.ts:235"}, "properties": {"repobilityId": "b11ab2ef9fd02a6c", "scanner": "scanner-primary", "fingerprint": "a059e027a6749698", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-020052dac268bdf0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-programs.ts:28"}, "properties": {"repobilityId": "484d464797684a9c", "scanner": "scanner-primary", "fingerprint": "020052dac268bdf0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2355648bdc06811d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:368"}, "properties": {"repobilityId": "91a9f64ea60e45aa", "scanner": "scanner-primary", "fingerprint": "2355648bdc06811d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99d3ddc5e40397df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-collegetransfer.ts:52"}, "properties": {"repobilityId": "587205f99811f038", "scanner": "scanner-primary", "fingerprint": "99d3ddc5e40397df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f772a6682950518", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:289"}, "properties": {"repobilityId": "97416afd4f253978", "scanner": "scanner-primary", "fingerprint": "2f772a6682950518", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7798c60e6adc9ce2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-catalog-prereqs.ts:265"}, "properties": {"repobilityId": "e93ba72188a0f084", "scanner": "scanner-primary", "fingerprint": "7798c60e6adc9ce2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce0d0d2e46764b43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-programs.ts:30"}, "properties": {"repobilityId": "51fc368aec9fcb4c", "scanner": "scanner-primary", "fingerprint": "ce0d0d2e46764b43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3dca50b2a0d4ab3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:124"}, "properties": {"repobilityId": "96c2dcde762664fa", "scanner": "scanner-primary", "fingerprint": "f3dca50b2a0d4ab3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a344fd84213d7c76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:202"}, "properties": {"repobilityId": "eca07acce5fdfa04", "scanner": "scanner-primary", "fingerprint": "a344fd84213d7c76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a3a80d334f8069b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-ndus.ts:406"}, "properties": {"repobilityId": "0997a914d958bcf1", "scanner": "scanner-primary", "fingerprint": "9a3a80d334f8069b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f053ae01cc53a394", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-nd-programs.ts:78"}, "properties": {"repobilityId": "df3c3c55db09babb", "scanner": "scanner-primary", "fingerprint": "f053ae01cc53a394", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e67ed518d46d175d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/nd/scrape-catalog-prereqs.ts:197"}, "properties": {"repobilityId": "2381eb8e5d921266", "scanner": "scanner-primary", "fingerprint": "e67ed518d46d175d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa287e7a90b17c8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts:195"}, "properties": {"repobilityId": "a1dd29fe678e1acf", "scanner": "scanner-primary", "fingerprint": "fa287e7a90b17c8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-820ac9951eda463a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-smartcatalogiq-programs.ts:67"}, "properties": {"repobilityId": "34528a1fd8cf2149", "scanner": "scanner-primary", "fingerprint": "820ac9951eda463a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-119e4f3bb19dbe25", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:264"}, "properties": {"repobilityId": "315c252d0ea37ef6", "scanner": "scanner-primary", "fingerprint": "119e4f3bb19dbe25", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6da5b1f7a7ed615e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:325"}, "properties": {"repobilityId": "7a6fb2d40262b192", "scanner": "scanner-primary", "fingerprint": "6da5b1f7a7ed615e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-98214a071ddee891", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts:65"}, "properties": {"repobilityId": "56f3e59790654292", "scanner": "scanner-primary", "fingerprint": "98214a071ddee891", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5899ef124d399fa0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-coursedog-programs.ts:44"}, "properties": {"repobilityId": "eb2b9426bf3978e6", "scanner": "scanner-primary", "fingerprint": "5899ef124d399fa0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c394538dc0b123ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:246"}, "properties": {"repobilityId": "a99f7de95cf6ff61", "scanner": "scanner-primary", "fingerprint": "c394538dc0b123ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35a228a998e4df7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-courseleaf-programs.ts:53"}, "properties": {"repobilityId": "925d3412e1c371f7", "scanner": "scanner-primary", "fingerprint": "35a228a998e4df7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40fafeaac19697c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:187"}, "properties": {"repobilityId": "64e7121ca99d47f3", "scanner": "scanner-primary", "fingerprint": "40fafeaac19697c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-151b633417c4bb49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-programs.ts:91"}, "properties": {"repobilityId": "57473acc53c1a9dc", "scanner": "scanner-primary", "fingerprint": "151b633417c4bb49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cb740b2c65cd216", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:155"}, "properties": {"repobilityId": "bc9df4b588142e67", "scanner": "scanner-primary", "fingerprint": "0cb740b2c65cd216", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bc50257eea0ac82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:236"}, "properties": {"repobilityId": "4142da2e39f1971e", "scanner": "scanner-primary", "fingerprint": "4bc50257eea0ac82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-051255d6052391eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:373"}, "properties": {"repobilityId": "872f1786257d25ac", "scanner": "scanner-primary", "fingerprint": "051255d6052391eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae8d70db774b428b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts:214"}, "properties": {"repobilityId": "d3b4f2cb0d4204e5", "scanner": "scanner-primary", "fingerprint": "ae8d70db774b428b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f38c4763ad14bb8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:279"}, "properties": {"repobilityId": "3b5b504a89e0f04f", "scanner": "scanner-primary", "fingerprint": "f38c4763ad14bb8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a51392e4f4a8769", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:477"}, "properties": {"repobilityId": "052a501a617faeb0", "scanner": "scanner-primary", "fingerprint": "0a51392e4f4a8769", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92916d1b83c582ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-catalog-prereqs.ts:252"}, "properties": {"repobilityId": "7861505c45113240", "scanner": "scanner-primary", "fingerprint": "92916d1b83c582ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-70755ff0966bd0ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-programs.ts:136"}, "properties": {"repobilityId": "e2224c8a576d90a4", "scanner": "scanner-primary", "fingerprint": "70755ff0966bd0ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02b6165faad45517", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:353"}, "properties": {"repobilityId": "e91420e6ac29805a", "scanner": "scanner-primary", "fingerprint": "02b6165faad45517", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7d02927f9eecb31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-mtsu.ts:210"}, "properties": {"repobilityId": "f96e8c1e3693519a", "scanner": "scanner-primary", "fingerprint": "e7d02927f9eecb31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee2d9ade6ff5a71e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:122"}, "properties": {"repobilityId": "8999ff37b9534d5e", "scanner": "scanner-primary", "fingerprint": "ee2d9ade6ff5a71e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4a167e579a8a322", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:71"}, "properties": {"repobilityId": "cdb0ef3959d2d222", "scanner": "scanner-primary", "fingerprint": "c4a167e579a8a322", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a668faf594b1d9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:302"}, "properties": {"repobilityId": "6424454d80a6a9dc", "scanner": "scanner-primary", "fingerprint": "8a668faf594b1d9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33aae74cb92b4c27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:82"}, "properties": {"repobilityId": "4a7b080908d434f0", "scanner": "scanner-primary", "fingerprint": "33aae74cb92b4c27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4029afcd491fdba1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-colleague.ts:50"}, "properties": {"repobilityId": "79441c2f77ab8832", "scanner": "scanner-primary", "fingerprint": "4029afcd491fdba1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8272ded9492e80de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:226"}, "properties": {"repobilityId": "82beaac4d00230d6", "scanner": "scanner-primary", "fingerprint": "8272ded9492e80de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bed6faef74c72b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:90"}, "properties": {"repobilityId": "e9ff97567e953303", "scanner": "scanner-primary", "fingerprint": "6bed6faef74c72b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5883e62ddec45393", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:277"}, "properties": {"repobilityId": "b6cc085fb143b0e8", "scanner": "scanner-primary", "fingerprint": "5883e62ddec45393", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c716592a841ad993", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:221"}, "properties": {"repobilityId": "72f5bfe11713114e", "scanner": "scanner-primary", "fingerprint": "c716592a841ad993", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36b013a0bd4612fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-courseleaf-prereqs.ts:158"}, "properties": {"repobilityId": "953797ff42542669", "scanner": "scanner-primary", "fingerprint": "36b013a0bd4612fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5559311432c847e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:114"}, "properties": {"repobilityId": "c7dcd319c5cee1b1", "scanner": "scanner-primary", "fingerprint": "c5559311432c847e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-62b2858cc7f83615", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:98"}, "properties": {"repobilityId": "84844003944712a0", "scanner": "scanner-primary", "fingerprint": "62b2858cc7f83615", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5356c385bf7071e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-howard.ts:222"}, "properties": {"repobilityId": "f3873c51b31dad59", "scanner": "scanner-primary", "fingerprint": "c5356c385bf7071e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aab82fba1a62d8d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts:537"}, "properties": {"repobilityId": "00be8eb714de5ee3", "scanner": "scanner-primary", "fingerprint": "aab82fba1a62d8d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f64a7e7aa9e683a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:363"}, "properties": {"repobilityId": "56603f21d85edfbb", "scanner": "scanner-primary", "fingerprint": "f64a7e7aa9e683a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7da6addc4d4212d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:48"}, "properties": {"repobilityId": "8642709a256c6f63", "scanner": "scanner-primary", "fingerprint": "e7da6addc4d4212d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a95f1bdcd1ee768", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:248"}, "properties": {"repobilityId": "62dd5a3d4238f80b", "scanner": "scanner-primary", "fingerprint": "1a95f1bdcd1ee768", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68444ba51ef10291", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:268"}, "properties": {"repobilityId": "b4a5a5cc5b039b9c", "scanner": "scanner-primary", "fingerprint": "68444ba51ef10291", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d191b62a4fadde0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.ts:58"}, "properties": {"repobilityId": "47ca92436ece2a8d", "scanner": "scanner-primary", "fingerprint": "9d191b62a4fadde0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33c165c2dce4e653", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:47"}, "properties": {"repobilityId": "16e5b7a3b8edd03b", "scanner": "scanner-primary", "fingerprint": "33c165c2dce4e653", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d40ab8d35fabae02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:47"}, "properties": {"repobilityId": "dab4e39125fce713", "scanner": "scanner-primary", "fingerprint": "d40ab8d35fabae02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7378a5d4868dac0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/_ps-summer-probe.ts:22"}, "properties": {"repobilityId": "f6288967606f1017", "scanner": "scanner-primary", "fingerprint": "d7378a5d4868dac0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d7716dba00659d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts:50"}, "properties": {"repobilityId": "a9b2d5c48b2833eb", "scanner": "scanner-primary", "fingerprint": "2d7716dba00659d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4edc4aa9b41a7c1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/discover-ps-responses.ts:72"}, "properties": {"repobilityId": "fb61d2c40b3b884f", "scanner": "scanner-primary", "fingerprint": "4edc4aa9b41a7c1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49bf80497551f213", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-courseleaf-programs.ts:47"}, "properties": {"repobilityId": "64fad3cf2a74c104", "scanner": "scanner-primary", "fingerprint": "49bf80497551f213", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9e32e6f753dda29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-umw.ts:155"}, "properties": {"repobilityId": "a5c5e4304d62478a", "scanner": "scanner-primary", "fingerprint": "c9e32e6f753dda29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8a1c4a2eb70785c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts:53"}, "properties": {"repobilityId": "4f883b84ba01288d", "scanner": "scanner-primary", "fingerprint": "a8a1c4a2eb70785c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb0ce2e8137a0070", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:56"}, "properties": {"repobilityId": "c186183b3888e1e5", "scanner": "scanner-primary", "fingerprint": "eb0ce2e8137a0070", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c665d8e8ce0b1ad7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.ts:59"}, "properties": {"repobilityId": "a8c22b822a05e1cc", "scanner": "scanner-primary", "fingerprint": "c665d8e8ce0b1ad7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7470f4b6ad9d7dea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-programs.ts:212"}, "properties": {"repobilityId": "abe678f570508173", "scanner": "scanner-primary", "fingerprint": "7470f4b6ad9d7dea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0be82031ad7f07ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:502"}, "properties": {"repobilityId": "442465089ce0c94a", "scanner": "scanner-primary", "fingerprint": "0be82031ad7f07ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6772fe52e0e6610", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vccs.ts:327"}, "properties": {"repobilityId": "7b01b04c8c5628c7", "scanner": "scanner-primary", "fingerprint": "f6772fe52e0e6610", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64e954c233b08d94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:598"}, "properties": {"repobilityId": "26ac36d05e72c6f1", "scanner": "scanner-primary", "fingerprint": "64e954c233b08d94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-be06b7d29e8773c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:460"}, "properties": {"repobilityId": "594987c5d5d1305b", "scanner": "scanner-primary", "fingerprint": "be06b7d29e8773c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e27ba8c1811ee96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-catalog-prereqs.ts:201"}, "properties": {"repobilityId": "b1d644fc11a40806", "scanner": "scanner-primary", "fingerprint": "0e27ba8c1811ee96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e938a202999582c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:453"}, "properties": {"repobilityId": "888e9108807aa0c8", "scanner": "scanner-primary", "fingerprint": "e938a202999582c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-282d440be2decdeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:47"}, "properties": {"repobilityId": "5b5db93ded84156e", "scanner": "scanner-primary", "fingerprint": "282d440be2decdeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-665fb198dd3629c1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/PrereqFlowChart.tsx:181"}, "properties": {"repobilityId": "44f4efcab1a91cd4", "scanner": "scanner-primary", "fingerprint": "665fb198dd3629c1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d3e8969d00a29490", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/AnswerCard.tsx:432"}, "properties": {"repobilityId": "79c8c432cd8d404f", "scanner": "scanner-primary", "fingerprint": "d3e8969d00a29490", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-545a637c5287cc14", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/JsonLd.tsx:18"}, "properties": {"repobilityId": "d644726dbe41532a", "scanner": "scanner-primary", "fingerprint": "545a637c5287cc14", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b206f14ed328e120", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ProgramRequirements.tsx:219"}, "properties": {"repobilityId": "089eaad793da4f72", "scanner": "scanner-primary", "fingerprint": "b206f14ed328e120", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8847439a3e51272c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:54"}, "properties": {"repobilityId": "e9717fde1e3bc5a8", "scanner": "scanner-primary", "fingerprint": "8847439a3e51272c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-38f5dbb92581220a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32"}, "properties": {"repobilityId": "1be4b158b8fd7711", "scanner": "scanner-primary", "fingerprint": "38f5dbb92581220a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6e9388e865ac8ef6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/CourseTable.tsx:285"}, "properties": {"repobilityId": "57fe6a58c174dda5", "scanner": "scanner-primary", "fingerprint": "6e9388e865ac8ef6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85973a6f94c7addd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/ScheduleBuilder.tsx:281"}, "properties": {"repobilityId": "3d55dfcb3fdb8247", "scanner": "scanner-primary", "fingerprint": "85973a6f94c7addd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3f3e456a67ee09a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/WeeklyCalendar.tsx:147"}, "properties": {"repobilityId": "4b4618eb4078a62e", "scanner": "scanner-primary", "fingerprint": "3f3e456a67ee09a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b552b19987da9e26", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/schedule/ScheduleResults.tsx:611"}, "properties": {"repobilityId": "03dfb4c8145c7f9b", "scanner": "scanner-primary", "fingerprint": "b552b19987da9e26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a71b5ab260ff2a6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/components/auth/UserMenu.tsx:137"}, "properties": {"repobilityId": "72df726011de7523", "scanner": "scanner-primary", "fingerprint": "8a71b5ab260ff2a6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5679b99dabcca918", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/page.tsx:284"}, "properties": {"repobilityId": "7b296f507050fc32", "scanner": "scanner-primary", "fingerprint": "5679b99dabcca918", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-85843fc445d70cab", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/page.tsx:98"}, "properties": {"repobilityId": "1ab8d49ec85befff", "scanner": "scanner-primary", "fingerprint": "85843fc445d70cab", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-15e632c5ccac3024", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/page.tsx:71"}, "properties": {"repobilityId": "8248649b72cb891b", "scanner": "scanner-primary", "fingerprint": "15e632c5ccac3024", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4d24240bd44a02fa", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146"}, "properties": {"repobilityId": "d923835c80e6c483", "scanner": "scanner-primary", "fingerprint": "4d24240bd44a02fa", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8bcb27d095ba5b3c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:244"}, "properties": {"repobilityId": "50b8a67f0d5f0b0e", "scanner": "scanner-primary", "fingerprint": "8bcb27d095ba5b3c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5acc0ae33e50d071", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/colleges/page.tsx:162"}, "properties": {"repobilityId": "bcd0826f437e8070", "scanner": "scanner-primary", "fingerprint": "5acc0ae33e50d071", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f2fbf89767e20b8f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/account/AccountDashboard.tsx:613"}, "properties": {"repobilityId": "b304661ec9adf8c5", "scanner": "scanner-primary", "fingerprint": "f2fbf89767e20b8f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e0312d5a5eae31ef", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/page.tsx:108"}, "properties": {"repobilityId": "9d7830333db11a7e", "scanner": "scanner-primary", "fingerprint": "e0312d5a5eae31ef", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-abd8e5efcc429c82", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/layout.tsx:59"}, "properties": {"repobilityId": "9aa82e30daeb94b3", "scanner": "scanner-primary", "fingerprint": "abd8e5efcc429c82", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2c81b356ec52ce55", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88"}, "properties": {"repobilityId": "afcf621c190b95e2", "scanner": "scanner-primary", "fingerprint": "2c81b356ec52ce55", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1a318ee1be1cded0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80"}, "properties": {"repobilityId": "6c1d846d3caf4a05", "scanner": "scanner-primary", "fingerprint": "1a318ee1be1cded0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2e046b2b214f7d41", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111"}, "properties": {"repobilityId": "f76e35e05efb566c", "scanner": "scanner-primary", "fingerprint": "2e046b2b214f7d41", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b98eace91b11fc19", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:258"}, "properties": {"repobilityId": "e42812bfba4b8448", "scanner": "scanner-primary", "fingerprint": "b98eace91b11fc19", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-408c4be21af00313", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/compare/CompareTable.tsx:56"}, "properties": {"repobilityId": "af8fbabaf4d6f160", "scanner": "scanner-primary", "fingerprint": "408c4be21af00313", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-57cb7da6f0931851", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:293"}, "properties": {"repobilityId": "2d67dec6e073b9f5", "scanner": "scanner-primary", "fingerprint": "57cb7da6f0931851", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-61af6ed8d59d0ab3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142"}, "properties": {"repobilityId": "46887b03ff063232", "scanner": "scanner-primary", "fingerprint": "61af6ed8d59d0ab3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4eb89cd8106819d8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102"}, "properties": {"repobilityId": "6716ed699b853989", "scanner": "scanner-primary", "fingerprint": "4eb89cd8106819d8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0033a61a4e9d86b3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82"}, "properties": {"repobilityId": "e16a4f5cffc8c25c", "scanner": "scanner-primary", "fingerprint": "0033a61a4e9d86b3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b4238628955ef0e5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:265"}, "properties": {"repobilityId": "aee7c4fbcb4b6128", "scanner": "scanner-primary", "fingerprint": "b4238628955ef0e5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-51e4d3b197a31b98", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:433"}, "properties": {"repobilityId": "28c35a67d9e11bcd", "scanner": "scanner-primary", "fingerprint": "51e4d3b197a31b98", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-926ea60ff2fa7ecc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:286"}, "properties": {"repobilityId": "8a1feb6b2411b743", "scanner": "scanner-primary", "fingerprint": "926ea60ff2fa7ecc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cac235b153de18ec", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx:108"}, "properties": {"repobilityId": "e2e12321c4fe25a2", "scanner": "scanner-primary", "fingerprint": "cac235b153de18ec", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-87d9f9f5c253ccae", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:285"}, "properties": {"repobilityId": "a773721055122222", "scanner": "scanner-primary", "fingerprint": "87d9f9f5c253ccae", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-2d3ac5ccc8036fd2", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/program/[slug]/PlanClient.tsx:219"}, "properties": {"repobilityId": "569f8c0813205833", "scanner": "scanner-primary", "fingerprint": "2d3ac5ccc8036fd2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-7d8499a5fc9e21c1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:424"}, "properties": {"repobilityId": "e9b6d1a0d76b87c9", "scanner": "scanner-primary", "fingerprint": "7d8499a5fc9e21c1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3d07743dd75db4e7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:267"}, "properties": {"repobilityId": "b6a51b17d12eba33", "scanner": "scanner-primary", "fingerprint": "3d07743dd75db4e7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c2eb956948c77357", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoonClient.tsx:370"}, "properties": {"repobilityId": "24eb79e938324c5e", "scanner": "scanner-primary", "fingerprint": "c2eb956948c77357", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-729cc4e76b23fef2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ms/config.ts:11"}, "properties": {"repobilityId": "3796b6e0d0cc05a2", "scanner": "scanner-primary", "fingerprint": "729cc4e76b23fef2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f14673d8e05de908", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/il/config.ts:11"}, "properties": {"repobilityId": "0d1e273b642e5b34", "scanner": "scanner-primary", "fingerprint": "f14673d8e05de908", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5372dc371009871c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/co/config.ts:11"}, "properties": {"repobilityId": "bd5c29245d3180e0", "scanner": "scanner-primary", "fingerprint": "5372dc371009871c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ac0cc645c48867b6", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 .claude/worktrees/saved-plans/lib/states/ky/config.ts:11"}, "properties": {"repobilityId": "1815f6901bc5c988", "scanner": "scanner-primary", "fingerprint": "ac0cc645c48867b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-3b5e872f32207a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts:154"}, "properties": {"repobilityId": "8c5a406773127b8f", "scanner": "scanner-primary", "fingerprint": "3b5e872f32207a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15cba9f0a5fcb814", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/collect-audit-data.ts:769"}, "properties": {"repobilityId": "0892289ce3cd6e39", "scanner": "scanner-primary", "fingerprint": "15cba9f0a5fcb814", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a07d83ad7ef25a9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/grade-snapshot.test.ts:184"}, "properties": {"repobilityId": "02ab1a5834c6f47d", "scanner": "scanner-primary", "fingerprint": "a07d83ad7ef25a9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9bcc78ef08fbd55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 .claude/skills/state-audit/scripts/collect-audit-data.ts:791"}, "properties": {"repobilityId": "388e921024f6082b", "scanner": "scanner-primary", "fingerprint": "a9bcc78ef08fbd55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f6cd08fa8d1eb4b0", "level": "warning", "message": {"text": "Analyzer timeout: security.gitleaks"}, "properties": {"repobilityId": "err::timeout::security.gitleaks", "scanner": "scanner-primary", "fingerprint": "f6cd08fa8d1eb4b0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["analyzer-error", "timeout"]}}, {"ruleId": "scanner-c05ddac31c577df7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.app.html:434"}, "properties": {"repobilityId": "ede5466407cf9228", "scanner": "scanner-primary", "fingerprint": "c05ddac31c577df7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/journey.app.html"}, "region": {"startLine": 434}}}]}, {"ruleId": "scanner-527cae9a5bfccf51", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/journey.html:439"}, "properties": {"repobilityId": "d9f9f5361a123093", "scanner": "scanner-primary", "fingerprint": "527cae9a5bfccf51", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/journey.html"}, "region": {"startLine": 439}}}]}, {"ruleId": "scanner-d17114cd0c25bc94", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:162"}, "properties": {"repobilityId": "8d6baef18e995e3d", "scanner": "scanner-primary", "fingerprint": "d17114cd0c25bc94", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/compare-colleges.html"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-ba5e7bbea2065020", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in docs/prototypes/plan-to-outcome/concepts/compare-colleges.html:175"}, "properties": {"repobilityId": "8e211d00de3274e6", "scanner": "scanner-primary", "fingerprint": "ba5e7bbea2065020", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/compare-colleges.html"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-55075fdd3cd324ad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/courses.html:127"}, "properties": {"repobilityId": "3dd140a04b1c7c23", "scanner": "scanner-primary", "fingerprint": "55075fdd3cd324ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/courses.html"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-75433ee8ad63fb71", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/transfers.html:231"}, "properties": {"repobilityId": "96729a3a3314f175", "scanner": "scanner-primary", "fingerprint": "75433ee8ad63fb71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/transfers.html"}, "region": {"startLine": 231}}}]}, {"ruleId": "scanner-eea53d0ff82b5db0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/choose.html:150"}, "properties": {"repobilityId": "f1aaab0750742f95", "scanner": "scanner-primary", "fingerprint": "eea53d0ff82b5db0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/choose.html"}, "region": {"startLine": 150}}}]}, {"ruleId": "scanner-e597853a53d06a01", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/schedule.html:313"}, "properties": {"repobilityId": "7ea726de12f5b322", "scanner": "scanner-primary", "fingerprint": "e597853a53d06a01", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/schedule.html"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-f94a07c6b124361a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/program.html:224"}, "properties": {"repobilityId": "6a06400efcd16af6", "scanner": "scanner-primary", "fingerprint": "f94a07c6b124361a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/program.html"}, "region": {"startLine": 224}}}]}, {"ruleId": "scanner-dfaf996799187d0a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/prereqs.html:172"}, "properties": {"repobilityId": "f2d137c38fd5fb88", "scanner": "scanner-primary", "fingerprint": "dfaf996799187d0a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/prereqs.html"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-db3ff9ec0670e652", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/concept-nav.js:29"}, "properties": {"repobilityId": "7d8e29e764fedbd1", "scanner": "scanner-primary", "fingerprint": "db3ff9ec0670e652", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/concept-nav.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-c36084f01ee4b4ad", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/home-search.html:160"}, "properties": {"repobilityId": "d11418f81bb5b72a", "scanner": "scanner-primary", "fingerprint": "c36084f01ee4b4ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/home-search.html"}, "region": {"startLine": 160}}}]}, {"ruleId": "scanner-3de302c04d4a47ff", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/prototypes/plan-to-outcome/concepts/us-map.html:94"}, "properties": {"repobilityId": "a3675bc6fde0abc1", "scanner": "scanner-primary", "fingerprint": "3de302c04d4a47ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/prototypes/plan-to-outcome/concepts/us-map.html"}, "region": {"startLine": 94}}}]}, {"ruleId": "scanner-9e2abcce1054dfb4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ne/scrape-lptc.ts:19"}, "properties": {"repobilityId": "f0bdd73d06367b0c", "scanner": "scanner-primary", "fingerprint": "9e2abcce1054dfb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ne/scrape-lptc.ts"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-5c5192ad23bff6a5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-uaccm.ts:47"}, "properties": {"repobilityId": "c7b9321ea3a00019", "scanner": "scanner-primary", "fingerprint": "5c5192ad23bff6a5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ar/scrape-uaccm.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-57480df1608c31db", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-seark-pdf-programs.ts:40"}, "properties": {"repobilityId": "a9e74eaee99347e5", "scanner": "scanner-primary", "fingerprint": "57480df1608c31db", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ar/scrape-seark-pdf-programs.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-26425332a5cc08f6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ar/scrape-npc.ts:32"}, "properties": {"repobilityId": "416c8207e9caffd3", "scanner": "scanner-primary", "fingerprint": "26425332a5cc08f6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ar/scrape-npc.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-6bdc96c0bcc20ed2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ga/scrape-tcsg-pdf-programs.ts:34"}, "properties": {"repobilityId": "aaf4701b0dced85e", "scanner": "scanner-primary", "fingerprint": "6bdc96c0bcc20ed2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ga/scrape-tcsg-pdf-programs.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-0c55ec7d3e7badc4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/az/scrape-dine.ts:33"}, "properties": {"repobilityId": "2435b0f852d978f4", "scanner": "scanner-primary", "fingerprint": "0c55ec7d3e7badc4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/az/scrape-dine.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-cdaf23f53ad72e52", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/state-health-rollup.ts:32"}, "properties": {"repobilityId": "e96c53a8d976bb08", "scanner": "scanner-primary", "fingerprint": "cdaf23f53ad72e52", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/state-health-rollup.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-62a09f1bbedc33f3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/check-prereq-regression.ts:23"}, "properties": {"repobilityId": "f4a9ec60e674a180", "scanner": "scanner-primary", "fingerprint": "62a09f1bbedc33f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/check-prereq-regression.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-946594507ee5d8df", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/check-scrape-health.ts:40"}, "properties": {"repobilityId": "cb268ed87d12fd2c", "scanner": "scanner-primary", "fingerprint": "946594507ee5d8df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/check-scrape-health.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-e2e8a0e507f701b1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/fetch-zipcodes.ts:35"}, "properties": {"repobilityId": "f969899241c61504", "scanner": "scanner-primary", "fingerprint": "e2e8a0e507f701b1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/fetch-zipcodes.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-2fdeea4bc77c02e9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/backfill-state-health-history.ts:45"}, "properties": {"repobilityId": "71b3d1e331bcb81c", "scanner": "scanner-primary", "fingerprint": "2fdeea4bc77c02e9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/backfill-state-health-history.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-11e00c09ce4f389c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/scrape-diff.ts:29"}, "properties": {"repobilityId": "9f75c51d2047323a", "scanner": "scanner-primary", "fingerprint": "11e00c09ce4f389c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/scrape-diff.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-ab18664c74377614", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/add-state.ts:59"}, "properties": {"repobilityId": "b35b85cf55d8ca8e", "scanner": "scanner-primary", "fingerprint": "ab18664c74377614", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/add-state.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-e031d637ed3e9dba", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ct/scrape-transfer-all.ts:24"}, "properties": {"repobilityId": "de741f59989dc166", "scanner": "scanner-primary", "fingerprint": "e031d637ed3e9dba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ct/scrape-transfer-all.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-ce4e7afcda85a650", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/dc/scrape-programs.ts:41"}, "properties": {"repobilityId": "9340434d3cd4553b", "scanner": "scanner-primary", "fingerprint": "ce4e7afcda85a650", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dc/scrape-programs.ts"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-029d63c9306620ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/me/scrape-catalog-prereqs.ts:29"}, "properties": {"repobilityId": "2df47a568f04f46b", "scanner": "scanner-primary", "fingerprint": "029d63c9306620ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/me/scrape-catalog-prereqs.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-4425867aec4b2a45", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nm/scrape-sipi-pdf.ts:27"}, "properties": {"repobilityId": "013d754d3cc1c5c9", "scanner": "scanner-primary", "fingerprint": "4425867aec4b2a45", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nm/scrape-sipi-pdf.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-e4cb634649584308", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/wv/scrape-eastern-wv.ts:28"}, "properties": {"repobilityId": "b1d4e3180b638d0a", "scanner": "scanner-primary", "fingerprint": "e4cb634649584308", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/wv/scrape-eastern-wv.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-9ded89daa8105c43", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-tri-county.ts:15"}, "properties": {"repobilityId": "380f636184bf66b1", "scanner": "scanner-primary", "fingerprint": "9ded89daa8105c43", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nc/scrape-tri-county.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-d826acc723da2369", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-transfer-wingate.ts:17"}, "properties": {"repobilityId": "d3633e143f0f0778", "scanner": "scanner-primary", "fingerprint": "d826acc723da2369", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nc/scrape-transfer-wingate.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-135c0552f045d962", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-cleveland.ts:14"}, "properties": {"repobilityId": "7652a1c18644c481", "scanner": "scanner-primary", "fingerprint": "135c0552f045d962", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nc/scrape-cleveland.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-9afaa97925ca1dc7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-martin.ts:14"}, "properties": {"repobilityId": "ed9f3fec053fedc6", "scanner": "scanner-primary", "fingerprint": "9afaa97925ca1dc7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nc/scrape-martin.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-28eb6391a86aa558", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nc/scrape-pamlico.ts:13"}, "properties": {"repobilityId": "cbfe6a2c0315fb13", "scanner": "scanner-primary", "fingerprint": "28eb6391a86aa558", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nc/scrape-pamlico.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-488a1384090e43be", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sd/scrape-oglala-lakota.ts:21"}, "properties": {"repobilityId": "9760ba6a80539b7a", "scanner": "scanner-primary", "fingerprint": "488a1384090e43be", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sd/scrape-oglala-lakota.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-9f02109cc1333766", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sc/scrape-northeastern-pdf.ts:21"}, "properties": {"repobilityId": "537d1093c8ab7c2f", "scanner": "scanner-primary", "fingerprint": "9f02109cc1333766", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sc/scrape-northeastern-pdf.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-31c29fe8be0c0030", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sc/scrape-williamsburg-pdf.ts:24"}, "properties": {"repobilityId": "b77a05b34213519f", "scanner": "scanner-primary", "fingerprint": "31c29fe8be0c0030", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sc/scrape-williamsburg-pdf.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-4b4050c9c9634615", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/nd/scrape-transfer-gerta.ts:38"}, "properties": {"repobilityId": "d2faebfe349eb93e", "scanner": "scanner-primary", "fingerprint": "4b4050c9c9634615", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/nd/scrape-transfer-gerta.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-2a3e54b304d537d7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ma/scrape-massasoit-programs.ts:25"}, "properties": {"repobilityId": "9995a5b0d6244f7b", "scanner": "scanner-primary", "fingerprint": "2a3e54b304d537d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ma/scrape-massasoit-programs.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-04773b3cf927a875", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ma/scrape-qcc-pdf-programs.ts:34"}, "properties": {"repobilityId": "4986d90e7fbe9a71", "scanner": "scanner-primary", "fingerprint": "04773b3cf927a875", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ma/scrape-qcc-pdf-programs.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-0a87fe6547c1a2d3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/tn/scrape-jscc-pdf-programs.ts:24"}, "properties": {"repobilityId": "645d2ded28eaa070", "scanner": "scanner-primary", "fingerprint": "0a87fe6547c1a2d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tn/scrape-jscc-pdf-programs.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-8336f31d74b6c18c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-all.ts:20"}, "properties": {"repobilityId": "8c02fe99c36f0272", "scanner": "scanner-primary", "fingerprint": "8336f31d74b6c18c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tn/transfer/scrape-all.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-1c20ee90879d3073", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/tn/transfer/scrape-apsu.ts:26"}, "properties": {"repobilityId": "4731ea031915f1ac", "scanner": "scanner-primary", "fingerprint": "1c20ee90879d3073", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tn/transfer/scrape-apsu.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-55c6b03713f20cdd", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-hccs.ts:375"}, "properties": {"repobilityId": "d006944ca40955f1", "scanner": "scanner-primary", "fingerprint": "55c6b03713f20cdd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tx/scrape-hccs.ts"}, "region": {"startLine": 375}}}]}, {"ruleId": "scanner-3879bcb6e5585daf", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/tx/scrape-cisco.ts:129"}, "properties": {"repobilityId": "e74a4449ff11b379", "scanner": "scanner-primary", "fingerprint": "3879bcb6e5585daf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tx/scrape-cisco.ts"}, "region": {"startLine": 129}}}]}, {"ruleId": "scanner-0c2ac6868023eb68", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/tx/scrape-brazosport.ts:57"}, "properties": {"repobilityId": "eef8468f8bfdd0de", "scanner": "scanner-primary", "fingerprint": "0c2ac6868023eb68", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tx/scrape-brazosport.ts"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-9258a912f7daa5d7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/tx/scrape-frank-phillips.ts:27"}, "properties": {"repobilityId": "f2cafbeeff807614", "scanner": "scanner-primary", "fingerprint": "9258a912f7daa5d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tx/scrape-frank-phillips.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-ce030af76fa18798", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ks/scrape-colby.ts:26"}, "properties": {"repobilityId": "f873acdce5bb5339", "scanner": "scanner-primary", "fingerprint": "ce030af76fa18798", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ks/scrape-colby.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-482810e2c0c1be24", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/va/scrape-camp-pdf-programs.ts:31"}, "properties": {"repobilityId": "435803c9d77aba3b", "scanner": "scanner-primary", "fingerprint": "482810e2c0c1be24", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/va/scrape-camp-pdf-programs.ts"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-b8d52c5fbf6d597c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/va/scrape-vhcc-pdf-programs.ts:36"}, "properties": {"repobilityId": "963804e0db4f32a4", "scanner": "scanner-primary", "fingerprint": "b8d52c5fbf6d597c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/va/scrape-vhcc-pdf-programs.ts"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-65b6d8436bccccf4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/JsonLd.tsx:18"}, "properties": {"repobilityId": "46019c83bb7b6575", "scanner": "scanner-primary", "fingerprint": "65b6d8436bccccf4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/JsonLd.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-ed3fef987c87d940", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/Breadcrumbs.tsx:32"}, "properties": {"repobilityId": "49ff05c9628a3b70", "scanner": "scanner-primary", "fingerprint": "ed3fef987c87d940", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/Breadcrumbs.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-dc0c93dfdd4e608c", "level": "note", "message": {"text": "Insecure pattern 'document_write' in components/PrintInstructions.tsx:114"}, "properties": {"repobilityId": "809c714108c6be42", "scanner": "scanner-primary", "fingerprint": "dc0c93dfdd4e608c", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/PrintInstructions.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-5061249cbb5af2ba", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in components/ChooseQuiz.tsx:58"}, "properties": {"repobilityId": "298c17e8887d9032", "scanner": "scanner-primary", "fingerprint": "5061249cbb5af2ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/ChooseQuiz.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-0a95c829a187eadd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/page.tsx:100"}, "properties": {"repobilityId": "cfec9d1837258177", "scanner": "scanner-primary", "fingerprint": "0a95c829a187eadd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/page.tsx"}, "region": {"startLine": 100}}}]}, {"ruleId": "scanner-cbe5def1344fe023", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/layout.tsx:115"}, "properties": {"repobilityId": "69d4743587f721a0", "scanner": "scanner-primary", "fingerprint": "cbe5def1344fe023", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/layout.tsx"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-d7ccd89f9c53bb93", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/blog/page.tsx:71"}, "properties": {"repobilityId": "4b5bb7451f415d1c", "scanner": "scanner-primary", "fingerprint": "d7ccd89f9c53bb93", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/blog/page.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-bbabe9743e18a8c5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/blog/[slug]/page.tsx:146"}, "properties": {"repobilityId": "9c6991e1f0c5c6d8", "scanner": "scanner-primary", "fingerprint": "bbabe9743e18a8c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/blog/[slug]/page.tsx"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-6de40d4cf1b3c97c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/colleges/page.tsx:162"}, "properties": {"repobilityId": "b5bc1cb5593e4ece", "scanner": "scanner-primary", "fingerprint": "6de40d4cf1b3c97c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/colleges/page.tsx"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-93d0a5453e0a8ad8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/page.tsx:133"}, "properties": {"repobilityId": "fb7432c8bb803272", "scanner": "scanner-primary", "fingerprint": "93d0a5453e0a8ad8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/page.tsx"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-dc1b2c159c343ec3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/layout.tsx:71"}, "properties": {"repobilityId": "8611d189f438aa5a", "scanner": "scanner-primary", "fingerprint": "dc1b2c159c343ec3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/layout.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-416efa37f71041a2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/about/page.tsx:92"}, "properties": {"repobilityId": "12b269828a8dbd5e", "scanner": "scanner-primary", "fingerprint": "416efa37f71041a2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/about/page.tsx"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-f74e0199cde9c5aa", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/colleges/page.tsx:80"}, "properties": {"repobilityId": "b1e1c634eaa90dc1", "scanner": "scanner-primary", "fingerprint": "f74e0199cde9c5aa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/colleges/page.tsx"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-c3141d75341e326f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/page.tsx:113"}, "properties": {"repobilityId": "8ef90136441cc39a", "scanner": "scanner-primary", "fingerprint": "c3141d75341e326f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/transfer/page.tsx"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-ee6885b23d1ab91e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/transfer/to/[universitySlug]/page.tsx:239"}, "properties": {"repobilityId": "ae5a67b62c3f8e70", "scanner": "scanner-primary", "fingerprint": "ee6885b23d1ab91e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/transfer/to/[universitySlug]/page.tsx"}, "region": {"startLine": 239}}}]}, {"ruleId": "scanner-e44648ae71ffa1b7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/subject/[prefix]/page.tsx:299"}, "properties": {"repobilityId": "7fab68b4f3cbda5c", "scanner": "scanner-primary", "fingerprint": "e44648ae71ffa1b7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/subject/[prefix]/page.tsx"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-debeff16686edb51", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/programs/page.tsx:151"}, "properties": {"repobilityId": "2c65acfb3f1164ac", "scanner": "scanner-primary", "fingerprint": "debeff16686edb51", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/programs/page.tsx"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-07f5cee3f7798b8b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/online/page.tsx:110"}, "properties": {"repobilityId": "9fb52dd5dbfaca12", "scanner": "scanner-primary", "fingerprint": "07f5cee3f7798b8b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/online/page.tsx"}, "region": {"startLine": 110}}}]}, {"ruleId": "scanner-978cef1fd0b06204", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/courses/page.tsx:258"}, "properties": {"repobilityId": "011a29ce6943448d", "scanner": "scanner-primary", "fingerprint": "978cef1fd0b06204", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/courses/page.tsx"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-8c5c5b560bb4556b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/page.tsx:278"}, "properties": {"repobilityId": "88b1e5ef8da22f76", "scanner": "scanner-primary", "fingerprint": "8c5c5b560bb4556b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/college/[id]/page.tsx"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-1d4405bc4573d14e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/instructor/[slug]/page.tsx:284"}, "properties": {"repobilityId": "a9cb1388ffbc7c05", "scanner": "scanner-primary", "fingerprint": "1d4405bc4573d14e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/college/[id]/instructor/[slug]/page.tsx"}, "region": {"startLine": 284}}}]}, {"ruleId": "scanner-413acc5f1215bc19", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/programs/page.tsx:108"}, "properties": {"repobilityId": "f602b4f7ca83e0ec", "scanner": "scanner-primary", "fingerprint": "413acc5f1215bc19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/college/[id]/programs/page.tsx"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-16b3b01dce8213e8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/college/[id]/courses/[prefix]/page.tsx:259"}, "properties": {"repobilityId": "255ae67006fde375", "scanner": "scanner-primary", "fingerprint": "16b3b01dce8213e8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/college/[id]/courses/[prefix]/page.tsx"}, "region": {"startLine": 259}}}]}, {"ruleId": "scanner-8ce160a6b115e290", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/course/[code]/page.tsx:451"}, "properties": {"repobilityId": "ac06906f6c3837c8", "scanner": "scanner-primary", "fingerprint": "8ce160a6b115e290", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/course/[code]/page.tsx"}, "region": {"startLine": 451}}}]}, {"ruleId": "scanner-518a99f270e93c3e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/plan/page.tsx:74"}, "properties": {"repobilityId": "4ec3da746dd8168a", "scanner": "scanner-primary", "fingerprint": "518a99f270e93c3e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/plan/page.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-1b548fa3f5d4caca", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/[state]/program/[slug]/page.tsx:287"}, "properties": {"repobilityId": "551e25bc5d51db38", "scanner": "scanner-primary", "fingerprint": "1b548fa3f5d4caca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/[state]/program/[slug]/page.tsx"}, "region": {"startLine": 287}}}]}, {"ruleId": "scanner-cd98b234f6e30783", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts:47"}, "properties": {"repobilityId": "0e95ca6bf848545f", "scanner": "scanner-primary", "fingerprint": "cd98b234f6e30783", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ar/scrape-uaccm.ts"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-ff88442dc0c36dc8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:40"}, "properties": {"repobilityId": "dd8aa34c149637de", "scanner": "scanner-primary", "fingerprint": "ff88442dc0c36dc8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-c3424051a05f350d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:32"}, "properties": {"repobilityId": "396112f8d47f2ff4", "scanner": "scanner-primary", "fingerprint": "c3424051a05f350d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-ad215aee59c7c76e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:34"}, "properties": {"repobilityId": "7fbb38cd162478fb", "scanner": "scanner-primary", "fingerprint": "ad215aee59c7c76e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-e132dbf0a831aa56", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:33"}, "properties": {"repobilityId": "4ff32c9e8703a3b9", "scanner": "scanner-primary", "fingerprint": "e132dbf0a831aa56", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/az/scrape-dine.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-88edf586b30ad47b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts:32"}, "properties": {"repobilityId": "059528f510b60916", "scanner": "scanner-primary", "fingerprint": "88edf586b30ad47b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/state-health-rollup.ts"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-9c8545c827e9bb1c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts:23"}, "properties": {"repobilityId": "064f58e8f5b9a85f", "scanner": "scanner-primary", "fingerprint": "9c8545c827e9bb1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/check-prereq-regression.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-961c15fb3084d1c2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:40"}, "properties": {"repobilityId": "2b75f29eab68fe8a", "scanner": "scanner-primary", "fingerprint": "961c15fb3084d1c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-654c2935f62b7cdd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:35"}, "properties": {"repobilityId": "a69f5bcf567f3247", "scanner": "scanner-primary", "fingerprint": "654c2935f62b7cdd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-788115f7e5f3e3d7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts:45"}, "properties": {"repobilityId": "12f2f9d3ca0aeab9", "scanner": "scanner-primary", "fingerprint": "788115f7e5f3e3d7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/backfill-state-health-history.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-c33b104a630ada90", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts:21"}, "properties": {"repobilityId": "73e91a64a433754e", "scanner": "scanner-primary", "fingerprint": "c33b104a630ada90", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/scrape-diff.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-e438a424347bd081", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:59"}, "properties": {"repobilityId": "8a1804a6699dab16", "scanner": "scanner-primary", "fingerprint": "e438a424347bd081", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/lib/add-state.ts"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-94ea6a8bd1481d4c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts:24"}, "properties": {"repobilityId": "970dcade0a4044bb", "scanner": "scanner-primary", "fingerprint": "94ea6a8bd1481d4c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ct/scrape-transfer-all.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-e8c7bc6e4e8febbb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:29"}, "properties": {"repobilityId": "3eec3af6671df704", "scanner": "scanner-primary", "fingerprint": "e8c7bc6e4e8febbb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-50c96d01378b530e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:27"}, "properties": {"repobilityId": "08255f4b774df8e0", "scanner": "scanner-primary", "fingerprint": "50c96d01378b530e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-94b6a5b1c8f0eb27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:28"}, "properties": {"repobilityId": "787b793af786f6eb", "scanner": "scanner-primary", "fingerprint": "94b6a5b1c8f0eb27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-e3911440364530e7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:15"}, "properties": {"repobilityId": "2d039ca49d8ddcd6", "scanner": "scanner-primary", "fingerprint": "e3911440364530e7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-ece91843f671b851", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:17"}, "properties": {"repobilityId": "d92a1eafe5a7514f", "scanner": "scanner-primary", "fingerprint": "ece91843f671b851", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-7139c82fb1e152c8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:14"}, "properties": {"repobilityId": "e5f2fcc679cc45dc", "scanner": "scanner-primary", "fingerprint": "7139c82fb1e152c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-e685a175c9b80c47", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:14"}, "properties": {"repobilityId": "0a27760148b9fd6a", "scanner": "scanner-primary", "fingerprint": "e685a175c9b80c47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-46f576f67c118cb4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:13"}, "properties": {"repobilityId": "cde4076606726cd5", "scanner": "scanner-primary", "fingerprint": "46f576f67c118cb4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-4a7a916e0e97dabe", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts:21"}, "properties": {"repobilityId": "834d2d2d07c9388c", "scanner": "scanner-primary", "fingerprint": "4a7a916e0e97dabe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/sd/scrape-oglala-lakota.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-e2f291f514a03311", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:21"}, "properties": {"repobilityId": "67bae9756f5dabf1", "scanner": "scanner-primary", "fingerprint": "e2f291f514a03311", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-65b598137c5a3f61", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:24"}, "properties": {"repobilityId": "a0315aa856502093", "scanner": "scanner-primary", "fingerprint": "65b598137c5a3f61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-e624eb69041d4797", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:38"}, "properties": {"repobilityId": "0f7afda3c82187cf", "scanner": "scanner-primary", "fingerprint": "e624eb69041d4797", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-2314a851a3d53f95", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:25"}, "properties": {"repobilityId": "161cd8ff6aca2d8c", "scanner": "scanner-primary", "fingerprint": "2314a851a3d53f95", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-55739bbe57c32cc5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:34"}, "properties": {"repobilityId": "792cdb847d394c0d", "scanner": "scanner-primary", "fingerprint": "55739bbe57c32cc5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-9cc6b37f005a5daf", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:24"}, "properties": {"repobilityId": "7ea041fa62206abd", "scanner": "scanner-primary", "fingerprint": "9cc6b37f005a5daf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-7db23503b6504c6d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:20"}, "properties": {"repobilityId": "e407425b7a78cb1a", "scanner": "scanner-primary", "fingerprint": "7db23503b6504c6d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d454e0b1c446342a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:26"}, "properties": {"repobilityId": "62c448fe4c5ff479", "scanner": "scanner-primary", "fingerprint": "d454e0b1c446342a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-ebb1662fffdec081", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in .claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts:375"}, "properties": {"repobilityId": "9085376a216110d1", "scanner": "scanner-primary", "fingerprint": "ebb1662fffdec081", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/tx/scrape-hccs.ts"}, "region": {"startLine": 375}}}]}, {"ruleId": "scanner-22bdc1cf218da864", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:31"}, "properties": {"repobilityId": "6af689fd55b457df", "scanner": "scanner-primary", "fingerprint": "22bdc1cf218da864", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-ba4ddf9a6ac9132f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:36"}, "properties": {"repobilityId": "87731bd00ad18236", "scanner": "scanner-primary", "fingerprint": "ba4ddf9a6ac9132f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-954710ff30795bae", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/JsonLd.tsx:18"}, "properties": {"repobilityId": "58f9dec9bd1d6f09", "scanner": "scanner-primary", "fingerprint": "954710ff30795bae", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/components/JsonLd.tsx"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-5d196ea7e8de793d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/components/Breadcrumbs.tsx:32"}, "properties": {"repobilityId": "fb6c2d059ffa1cb9", "scanner": "scanner-primary", "fingerprint": "5d196ea7e8de793d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/components/Breadcrumbs.tsx"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-80ea1aef37b37e52", "level": "note", "message": {"text": "Insecure pattern 'document_write' in .claude/worktrees/saved-plans/components/PrintInstructions.tsx:114"}, "properties": {"repobilityId": "1061a1833babe6d0", "scanner": "scanner-primary", "fingerprint": "80ea1aef37b37e52", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/components/PrintInstructions.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-e0b62ea969227f75", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/page.tsx:98"}, "properties": {"repobilityId": "229fec0e10b83aad", "scanner": "scanner-primary", "fingerprint": "e0b62ea969227f75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/page.tsx"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-f453c58550206b85", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/page.tsx:71"}, "properties": {"repobilityId": "679c2b38204a0b94", "scanner": "scanner-primary", "fingerprint": "f453c58550206b85", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/blog/page.tsx"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-c0bf7dc4e0c3e86d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/blog/[slug]/page.tsx:146"}, "properties": {"repobilityId": "8eadc5f2bcd02b20", "scanner": "scanner-primary", "fingerprint": "c0bf7dc4e0c3e86d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/blog/[slug]/page.tsx"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-e1ddc2f7e1f7e9dd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/colleges/page.tsx:162"}, "properties": {"repobilityId": "8cf6e02cd6c13f94", "scanner": "scanner-primary", "fingerprint": "e1ddc2f7e1f7e9dd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/colleges/page.tsx"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-f47ec27e4568a6e0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/page.tsx:108"}, "properties": {"repobilityId": "4e62fedd28f95265", "scanner": "scanner-primary", "fingerprint": "f47ec27e4568a6e0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/page.tsx"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-8f230e67e9f897c3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/layout.tsx:59"}, "properties": {"repobilityId": "0f8bcc42164fea3f", "scanner": "scanner-primary", "fingerprint": "8f230e67e9f897c3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/layout.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-19109c9deee03257", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/about/page.tsx:88"}, "properties": {"repobilityId": "8bbc13ca91ba4b8d", "scanner": "scanner-primary", "fingerprint": "19109c9deee03257", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/about/page.tsx"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-a5d408fe81326a13", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/colleges/page.tsx:80"}, "properties": {"repobilityId": "db1946aa6e7b9be7", "scanner": "scanner-primary", "fingerprint": "a5d408fe81326a13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/colleges/page.tsx"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-33d873d92d01fe70", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:111"}, "properties": {"repobilityId": "9fe19b7df01c4867", "scanner": "scanner-primary", "fingerprint": "33d873d92d01fe70", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/transfer/page.tsx"}, "region": {"startLine": 111}}}]}, {"ruleId": "scanner-0ea6b2a35dc7df9a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:258"}, "properties": {"repobilityId": "b8ccfcec209cf663", "scanner": "scanner-primary", "fingerprint": "0ea6b2a35dc7df9a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx"}, "region": {"startLine": 258}}}]}, {"ruleId": "scanner-6cc05bcc70f2f474", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:293"}, "properties": {"repobilityId": "bc7c5888e8211967", "scanner": "scanner-primary", "fingerprint": "6cc05bcc70f2f474", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-6957d91380232c4e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/programs/page.tsx:142"}, "properties": {"repobilityId": "8d8583b2d3c517c7", "scanner": "scanner-primary", "fingerprint": "6957d91380232c4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/programs/page.tsx"}, "region": {"startLine": 142}}}]}, {"ruleId": "scanner-b25d5b2f37ea5c50", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/online/page.tsx:102"}, "properties": {"repobilityId": "730dd3745bad444a", "scanner": "scanner-primary", "fingerprint": "b25d5b2f37ea5c50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/online/page.tsx"}, "region": {"startLine": 102}}}]}, {"ruleId": "scanner-f1e671a5f1e906a4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:82"}, "properties": {"repobilityId": "1656ed0aaf083182", "scanner": "scanner-primary", "fingerprint": "f1e671a5f1e906a4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/courses/page.tsx"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-220fe82a4aaab53b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:265"}, "properties": {"repobilityId": "ced7555601159fa6", "scanner": "scanner-primary", "fingerprint": "220fe82a4aaab53b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx"}, "region": {"startLine": 265}}}]}, {"ruleId": "scanner-a32cd47fa260c3df", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx:286"}, "properties": {"repobilityId": "f6f9f03e2eda57d8", "scanner": "scanner-primary", "fingerprint": "a32cd47fa260c3df", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/college/[id]/instructor/[slug]/page.tsx"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-c38f909bc3f3535b", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx:108"}, "properties": {"repobilityId": "7eb9a11107aa340d", "scanner": "scanner-primary", "fingerprint": "c38f909bc3f3535b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/college/[id]/programs/page.tsx"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-1ad8124e91b159a7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:285"}, "properties": {"repobilityId": "7ef93ff1add55062", "scanner": "scanner-primary", "fingerprint": "1ad8124e91b159a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx"}, "region": {"startLine": 285}}}]}, {"ruleId": "scanner-d1aff12baf5f66ed", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:424"}, "properties": {"repobilityId": "8504d7e3770bcdc8", "scanner": "scanner-primary", "fingerprint": "d1aff12baf5f66ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx"}, "region": {"startLine": 424}}}]}, {"ruleId": "scanner-c38bfbf02afe0b08", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:267"}, "properties": {"repobilityId": "26777dcc44d5974b", "scanner": "scanner-primary", "fingerprint": "c38bfbf02afe0b08", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx"}, "region": {"startLine": 267}}}]}, {"ruleId": "scanner-dd8ecb6419e55034", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts:24"}, "properties": {"repobilityId": "2991bb90770f371e", "scanner": "scanner-primary", "fingerprint": "dd8ecb6419e55034", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.claude/skills/state-audit/scripts/grade-snapshot.test.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-347829e86bb39548", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/skills/state-audit/scripts/grade-snapshot.test.ts:24"}, "properties": {"repobilityId": "cbb1b2e88038cf98", "scanner": "scanner-primary", "fingerprint": "347829e86bb39548", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/state-audit/scripts/grade-snapshot.test.ts"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-547efce1791071de", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3dff97ccb6b26880", "scanner": "scanner-primary", "fingerprint": "547efce1791071de", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-547efce1791071de", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1594c0822fa4f968", "scanner": "scanner-primary", "fingerprint": "547efce1791071de", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-cd973c4f1a174189", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8d8df00e11e79406", "scanner": "scanner-primary", "fingerprint": "cd973c4f1a174189", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8e3191fa94751fb7", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0877d79e123ecfeb", "scanner": "scanner-primary", "fingerprint": "8e3191fa94751fb7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/refingerprint-sweep.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-29c0cf6369080995", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "708cdb529fa605d9", "scanner": "scanner-primary", "fingerprint": "29c0cf6369080995", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-29c0cf6369080995", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6154c755a1278899", "scanner": "scanner-primary", "fingerprint": "29c0cf6369080995", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-29c0cf6369080995", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e0c4207c6d55d00", "scanner": "scanner-primary", "fingerprint": "29c0cf6369080995", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 312}}}]}, {"ruleId": "scanner-29c0cf6369080995", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6154c755a1278899", "scanner": "scanner-primary", "fingerprint": "29c0cf6369080995", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-1c96adf58093eeee", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "bb362d2845aac4a0", "scanner": "scanner-primary", "fingerprint": "1c96adf58093eeee", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/worktrees/saved-plans/.github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fe99a730dceee720", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84f34343ab1db0f8", "scanner": "scanner-primary", "fingerprint": "fe99a730dceee720", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-fe99a730dceee720", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9aa518cb175be884", "scanner": "scanner-primary", "fingerprint": "fe99a730dceee720", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-59a785a7ba586834", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3b8b3cb6ec240933", "scanner": "scanner-primary", "fingerprint": "59a785a7ba586834", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-stale-terms.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e69c5910724b0403", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "898596cadd2331c8", "scanner": "scanner-primary", "fingerprint": "e69c5910724b0403", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refingerprint-sweep.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-acc23e5d93c8e965", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ce5ba129949628ef", "scanner": "scanner-primary", "fingerprint": "acc23e5d93c8e965", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 214}}}]}, {"ruleId": "scanner-acc23e5d93c8e965", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "183a322d97da5f60", "scanner": "scanner-primary", "fingerprint": "acc23e5d93c8e965", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 245}}}]}, {"ruleId": "scanner-acc23e5d93c8e965", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3b9305a3a00bd4d2", "scanner": "scanner-primary", "fingerprint": "acc23e5d93c8e965", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 312}}}]}, {"ruleId": "scanner-acc23e5d93c8e965", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "183a322d97da5f60", "scanner": "scanner-primary", "fingerprint": "acc23e5d93c8e965", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 353}}}]}, {"ruleId": "scanner-27f36f630a1284ab", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ace2e8faa39d9366", "scanner": "scanner-primary", "fingerprint": "27f36f630a1284ab", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scheduled-scrape-v2.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-daf3f018d762af12", "level": "note", "message": {"text": "Very large file: scripts/lib/add-state.ts (1401 lines)"}, "properties": {"repobilityId": "832256c6aebad787", "scanner": "scanner-primary", "fingerprint": "daf3f018d762af12", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d4fdfe53b7e55d29", "level": "note", "message": {"text": "Very large file: app/[state]/courses/CourseSearchClient.tsx (1195 lines)"}, "properties": {"repobilityId": "f6835da21a911cb7", "scanner": "scanner-primary", "fingerprint": "d4fdfe53b7e55d29", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-236837c99950d23f", "level": "note", "message": {"text": "Very large file: .claude/worktrees/saved-plans/scripts/lib/add-state.ts (1401 lines)"}, "properties": {"repobilityId": "fcc61618cd4f8a68", "scanner": "scanner-primary", "fingerprint": "236837c99950d23f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6d996376716b57c7", "level": "note", "message": {"text": "Very large file: .claude/worktrees/saved-plans/content/blog/index.ts (2295 lines)"}, "properties": {"repobilityId": "6835f2da9f34cbea", "scanner": "scanner-primary", "fingerprint": "6d996376716b57c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5e2131e3c2d80a06", "level": "note", "message": {"text": "Very large file: content/blog/index.ts (2477 lines)"}, "properties": {"repobilityId": "25a808e6cf7ae1e2", "scanner": "scanner-primary", "fingerprint": "5e2131e3c2d80a06", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-1b572cdccf1403d4", "level": "note", "message": {"text": "45 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "1b572cdccf1403d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "0ffaa41bec0d7fce", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "751426b3e1c839f6", "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": "59346a91567854fe", "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": "0a581b058be34d5d", "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": "4e001788a552b775", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7bf1784195649b95", "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": "2b4aa0fd07da45a0", "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": "013d02c31d9e2107", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d0a025b7eaf3bd2", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/rules/supabase.md"}, "properties": {"repobilityId": "8b20cece0e995fc0", "scanner": "scanner-primary", "fingerprint": "8d0a025b7eaf3bd2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/rules/supabase.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-80ab64bd5d9c1812", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/state-health-triage.md"}, "properties": {"repobilityId": "f29b902f6f2956b7", "scanner": "scanner-primary", "fingerprint": "80ab64bd5d9c1812", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/state-health-triage.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-00156ffb3a8121df", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/blog-pipeline/references/triggers.md"}, "properties": {"repobilityId": "df8d632dfcedcaf9", "scanner": "scanner-primary", "fingerprint": "00156ffb3a8121df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/blog-pipeline/references/triggers.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b4bca6e0b651c610", "level": "none", "message": {"text": "Commented-code block (5 lines) in eslint.config.mjs:15"}, "properties": {"repobilityId": "49caf81ebd95fe97", "scanner": "scanner-primary", "fingerprint": "b4bca6e0b651c610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f731c51fced98c5b", "level": "none", "message": {"text": "Commented-code block (7 lines) in proxy.ts:73"}, "properties": {"repobilityId": "c71fdf121e52cfd1", "scanner": "scanner-primary", "fingerprint": "f731c51fced98c5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-910305d37f9aacb1", "level": "none", "message": {"text": "Commented-code block (16 lines) in next.config.ts:7"}, "properties": {"repobilityId": "0679983e6cc61c6b", "scanner": "scanner-primary", "fingerprint": "910305d37f9aacb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed7d085071fd9b74", "level": "none", "message": {"text": "Commented-code block (6 lines) in __tests__/proxy.test.ts:3"}, "properties": {"repobilityId": "c485ac91ff6b9b57", "scanner": "scanner-primary", "fingerprint": "ed7d085071fd9b74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4b6034e9bf276f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ingest-bls.ts:111"}, "properties": {"repobilityId": "da0e8617fec0b1fb", "scanner": "scanner-primary", "fingerprint": "b4b6034e9bf276f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf49a6e6750e055f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ingest-bls.ts:86"}, "properties": {"repobilityId": "35c9b4f974d1eb71", "scanner": "scanner-primary", "fingerprint": "cf49a6e6750e055f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-65a0e1487ce9cbfa", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scorecard-map.ts:207"}, "properties": {"repobilityId": "a6fddb4fcdfcaa0f", "scanner": "scanner-primary", "fingerprint": "65a0e1487ce9cbfa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-373adf14bb6aea95", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-prod-health.ts:37"}, "properties": {"repobilityId": "e6d19a75794b498c", "scanner": "scanner-primary", "fingerprint": "373adf14bb6aea95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d780debbf903fac", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/build-transfer-universities-cache.ts:35"}, "properties": {"repobilityId": "eadde23133b0067f", "scanner": "scanner-primary", "fingerprint": "0d780debbf903fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f564f087e5057197", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-colleague.ts:225"}, "properties": {"repobilityId": "d3cb424c7fcd7f55", "scanner": "scanner-primary", "fingerprint": "f564f087e5057197", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7faaa7ffc5c739c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-transfer-artsys.ts:253"}, "properties": {"repobilityId": "bb2cd1dd09d654f2", "scanner": "scanner-primary", "fingerprint": "a7faaa7ffc5c739c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bea2ea1972edce1d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/md/scrape-custom.ts:150"}, "properties": {"repobilityId": "e4403b0761b820e9", "scanner": "scanner-primary", "fingerprint": "bea2ea1972edce1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45343142d1638dfa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-custom.ts:163"}, "properties": {"repobilityId": "9f9566c1375d3d70", "scanner": "scanner-primary", "fingerprint": "45343142d1638dfa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21ef29c97afdd56c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/md/scrape-jenzabar.ts:205"}, "properties": {"repobilityId": "8b641103cc6ea7a8", "scanner": "scanner-primary", "fingerprint": "21ef29c97afdd56c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3a8ae3d5ca405c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-jenzabar.ts:259"}, "properties": {"repobilityId": "7ff916adc2a1993c", "scanner": "scanner-primary", "fingerprint": "e3a8ae3d5ca405c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ddebd15056909eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/md/scrape-banner-ssb.ts:481"}, "properties": {"repobilityId": "e2f30745657c86a6", "scanner": "scanner-primary", "fingerprint": "5ddebd15056909eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56236cbd45d73d9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/md/scrape-ccbc.ts:52"}, "properties": {"repobilityId": "c271e1e7198389c9", "scanner": "scanner-primary", "fingerprint": "56236cbd45d73d9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4221e1743383a99", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/id/scrape-transfer.ts:96"}, "properties": {"repobilityId": "11930f831f901b62", "scanner": "scanner-primary", "fingerprint": "b4221e1743383a99", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6fa99a3dcf444ae6", "level": "none", "message": {"text": "Commented-code block (15 lines) in scripts/id/scrape-programs.ts:64"}, "properties": {"repobilityId": "f2f20714c875141c", "scanner": "scanner-primary", "fingerprint": "6fa99a3dcf444ae6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d900ef720ddc73ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mo/scrape-transfer-core42.ts:116"}, "properties": {"repobilityId": "21b397dd41f400b5", "scanner": "scanner-primary", "fingerprint": "d900ef720ddc73ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ea3dd07e2ce27ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/wa/scrape-ctclink.ts:473"}, "properties": {"repobilityId": "ce9c1afad4a88372", "scanner": "scanner-primary", "fingerprint": "8ea3dd07e2ce27ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb775cf47e82eb5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-ctclink.ts:248"}, "properties": {"repobilityId": "71c9e5ce6d114251", "scanner": "scanner-primary", "fingerprint": "cb775cf47e82eb5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-32ab562535d3e718", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-transfer-uw.ts:110"}, "properties": {"repobilityId": "e209ec78ed6fe7f7", "scanner": "scanner-primary", "fingerprint": "32ab562535d3e718", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0789677ca4bf4f75", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/wa/scrape-catalog-prereqs.ts:41"}, "properties": {"repobilityId": "840fafcc65d2b28c", "scanner": "scanner-primary", "fingerprint": "0789677ca4bf4f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae27c00e59aa56b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wa/scrape-catalog-prereqs.ts:16"}, "properties": {"repobilityId": "bd4bdf18dcbdd947", "scanner": "scanner-primary", "fingerprint": "ae27c00e59aa56b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee9e5c7401ee0a9a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-wncc.ts:71"}, "properties": {"repobilityId": "782e1dd29b9a970e", "scanner": "scanner-primary", "fingerprint": "ee9e5c7401ee0a9a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a6b3d4612567ded", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-lptc.ts:69"}, "properties": {"repobilityId": "741b9da122b5e9cd", "scanner": "scanner-primary", "fingerprint": "3a6b3d4612567ded", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6e300322f12e487", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-nicc.ts:61"}, "properties": {"repobilityId": "7d03b8e88bf7ee2e", "scanner": "scanner-primary", "fingerprint": "f6e300322f12e487", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e95189cbf5993f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-transfer.ts:94"}, "properties": {"repobilityId": "ae0eeb345630599f", "scanner": "scanner-primary", "fingerprint": "9e95189cbf5993f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-155c0293f77b36fd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ne/scrape-mpcc.ts:68"}, "properties": {"repobilityId": "4db40b0b8865682f", "scanner": "scanner-primary", "fingerprint": "155c0293f77b36fd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-95682bae8e2d485d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uni.ts:41"}, "properties": {"repobilityId": "15ec4880d3e779e9", "scanner": "scanner-primary", "fingerprint": "95682bae8e2d485d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a74acdbbceb9fba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-uiowa.ts:67"}, "properties": {"repobilityId": "0c2582a387ca85b5", "scanner": "scanner-primary", "fingerprint": "8a74acdbbceb9fba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58beaa678320b046", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ia/scrape-transfer-transit.ts:106"}, "properties": {"repobilityId": "245bb9a81f5ab4b0", "scanner": "scanner-primary", "fingerprint": "58beaa678320b046", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-15e7d221c65cd642", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-transfer-acts-catalogs.ts:205"}, "properties": {"repobilityId": "c797065a33aba469", "scanner": "scanner-primary", "fingerprint": "15e7d221c65cd642", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae87457a7b873976", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/ar/scrape-ozarka.ts:189"}, "properties": {"repobilityId": "48abc547e09cfcb3", "scanner": "scanner-primary", "fingerprint": "ae87457a7b873976", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54bcbbf032d2936a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-nwacc.ts:59"}, "properties": {"repobilityId": "c49ef36371fb74fa", "scanner": "scanner-primary", "fingerprint": "54bcbbf032d2936a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5efb228dc8c3f86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ar/scrape-nwacc.ts:167"}, "properties": {"repobilityId": "39083a434c8b4792", "scanner": "scanner-primary", "fingerprint": "c5efb228dc8c3f86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0795fafeed8d393a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-seark-pdf-programs.ts:84"}, "properties": {"repobilityId": "8ba4894337dc10f8", "scanner": "scanner-primary", "fingerprint": "0795fafeed8d393a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3819f61e78436c0e", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/ar/scrape-transfer-asu-jonesboro.ts:88"}, "properties": {"repobilityId": "3b5baeeba895251c", "scanner": "scanner-primary", "fingerprint": "3819f61e78436c0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-10d26629b2878186", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/ar/scrape-transfer-acalog-harvest.ts:76"}, "properties": {"repobilityId": "06dfb269a3431734", "scanner": "scanner-primary", "fingerprint": "10d26629b2878186", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afe0901c7383141c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ar/scrape-ua-powerbi.ts:95"}, "properties": {"repobilityId": "334ab5c23120d4be", "scanner": "scanner-primary", "fingerprint": "afe0901c7383141c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97bf33d2d9833a21", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/ar/scrape-npc.ts:70"}, "properties": {"repobilityId": "68f430117cc69816", "scanner": "scanner-primary", "fingerprint": "97bf33d2d9833a21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-98b6e306269366f3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-westmoreland.ts:127"}, "properties": {"repobilityId": "9b07d5ed24537934", "scanner": "scanner-primary", "fingerprint": "98b6e306269366f3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee19fb5b66956288", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-transfer.ts:72"}, "properties": {"repobilityId": "6acbc9ac2b2cc106", "scanner": "scanner-primary", "fingerprint": "ee19fb5b66956288", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df94a15c8efbbd68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-northampton.ts:178"}, "properties": {"repobilityId": "b8e7e62be3e4f34b", "scanner": "scanner-primary", "fingerprint": "df94a15c8efbbd68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e2ae039c1f0ed2b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/pa/scrape-pitt-tes.ts:180"}, "properties": {"repobilityId": "c458352a3ee8a5d6", "scanner": "scanner-primary", "fingerprint": "7e2ae039c1f0ed2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-850cdedb2489a90e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cayuga.ts:82"}, "properties": {"repobilityId": "699e4db3407fcab0", "scanner": "scanner-primary", "fingerprint": "850cdedb2489a90e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-57d97c5a451c6a30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-herkimer.ts:67"}, "properties": {"repobilityId": "fbab89bac272498a", "scanner": "scanner-primary", "fingerprint": "57d97c5a451c6a30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4c822053fc00509", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-suny-acalog-prereqs.ts:172"}, "properties": {"repobilityId": "3b350ac73fa92bb9", "scanner": "scanner-primary", "fingerprint": "b4c822053fc00509", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-569f1482ff373936", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ny/scrape-cuny.ts:205"}, "properties": {"repobilityId": "eb55c39f1f5f9f6b", "scanner": "scanner-primary", "fingerprint": "569f1482ff373936", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b039823eb64c1cbe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-cuny.ts:127"}, "properties": {"repobilityId": "045c3efdf0a69197", "scanner": "scanner-primary", "fingerprint": "b039823eb64c1cbe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-67a6b4693abbbb08", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ny/scrape-catalog-prereqs.ts:446"}, "properties": {"repobilityId": "3c99558c214da94a", "scanner": "scanner-primary", "fingerprint": "67a6b4693abbbb08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb5abe364d9cd101", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-catalog-prereqs.ts:13"}, "properties": {"repobilityId": "fef723b1060fa2a2", "scanner": "scanner-primary", "fingerprint": "fb5abe364d9cd101", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1cde3d5bcb08cd1", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/ny/scrape-transfer-trex.ts:260"}, "properties": {"repobilityId": "228988fcc540fce7", "scanner": "scanner-primary", "fingerprint": "e1cde3d5bcb08cd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f0d1b5045ab9eab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ny/scrape-transfer-trex.ts:160"}, "properties": {"repobilityId": "8d650d2409c30abb", "scanner": "scanner-primary", "fingerprint": "4f0d1b5045ab9eab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79e322ff3af298df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-jones.ts:96"}, "properties": {"repobilityId": "b392c17c25fcdea7", "scanner": "scanner-primary", "fingerprint": "79e322ff3af298df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a638da6ea50e102", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-prcc-bookstore.ts:95"}, "properties": {"repobilityId": "01c14482b360b13e", "scanner": "scanner-primary", "fingerprint": "3a638da6ea50e102", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06a313548d7bd713", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-mgccc.ts:131"}, "properties": {"repobilityId": "46bf5e44481f5b56", "scanner": "scanner-primary", "fingerprint": "06a313548d7bd713", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c903fd0951946581", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-catalog-prereqs.ts:149"}, "properties": {"repobilityId": "a737bf9478e9d92e", "scanner": "scanner-primary", "fingerprint": "c903fd0951946581", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ebc2ed25fb46d9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ms/scrape-itawamba.ts:65"}, "properties": {"repobilityId": "32f966a8eb89c729", "scanner": "scanner-primary", "fingerprint": "4ebc2ed25fb46d9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16e6041ea00f596b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-itawamba.ts:59"}, "properties": {"repobilityId": "e3cd2a9ad45a213a", "scanner": "scanner-primary", "fingerprint": "16e6041ea00f596b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-18175253053dfc1e", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/ms/scrape-athena.ts:102"}, "properties": {"repobilityId": "1669344ae14b52c4", "scanner": "scanner-primary", "fingerprint": "18175253053dfc1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1b1d5a2b0a77a824", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ms/scrape-athena.ts:182"}, "properties": {"repobilityId": "575b2cd1679f6865", "scanner": "scanner-primary", "fingerprint": "1b1d5a2b0a77a824", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce80f0c11e511e80", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-smartcatalogiq-programs.ts:74"}, "properties": {"repobilityId": "4b839ed869abffb4", "scanner": "scanner-primary", "fingerprint": "ce80f0c11e511e80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb48532ea98cea03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-smartcatalogiq-programs.ts:58"}, "properties": {"repobilityId": "b47edaaf671143d5", "scanner": "scanner-primary", "fingerprint": "eb48532ea98cea03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b3c92b51af7a6739", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-easternflorida.ts:71"}, "properties": {"repobilityId": "6ab0dfe8eba08bc6", "scanner": "scanner-primary", "fingerprint": "b3c92b51af7a6739", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f220a00e8ebe0336", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-palmbeachstate.ts:217"}, "properties": {"repobilityId": "bdeac0692b0ed010", "scanner": "scanner-primary", "fingerprint": "f220a00e8ebe0336", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e046d953d1314c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-scns-flatfile.ts:33"}, "properties": {"repobilityId": "a2f40004e0d1c42d", "scanner": "scanner-primary", "fingerprint": "6e046d953d1314c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b8e317e24cef606", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-scns-flatfile.ts:168"}, "properties": {"repobilityId": "7a17bf4baa9dbcbd", "scanner": "scanner-primary", "fingerprint": "4b8e317e24cef606", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-19de51438092beb6", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/discover-catalogs.ts:48"}, "properties": {"repobilityId": "d031af8aa9a6a98b", "scanner": "scanner-primary", "fingerprint": "19de51438092beb6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d08bea74c316705", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/fl/scrape-tcc.ts:151"}, "properties": {"repobilityId": "a805f8d65427612a", "scanner": "scanner-primary", "fingerprint": "3d08bea74c316705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d34b11b37c437fbe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-tcc.ts:100"}, "properties": {"repobilityId": "81d8f4e6a4681209", "scanner": "scanner-primary", "fingerprint": "d34b11b37c437fbe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c7faf9ec8029600", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-hccfl.ts:171"}, "properties": {"repobilityId": "f2bbce39a4789800", "scanner": "scanner-primary", "fingerprint": "0c7faf9ec8029600", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-661948f5552d4d32", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-spcollege.ts:112"}, "properties": {"repobilityId": "96d81e8c482d73f3", "scanner": "scanner-primary", "fingerprint": "661948f5552d4d32", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-593df65361588de2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-seminolestate.ts:302"}, "properties": {"repobilityId": "acb196672f0a0c2a", "scanner": "scanner-primary", "fingerprint": "593df65361588de2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0e79c82a0423139b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-mdc.ts:182"}, "properties": {"repobilityId": "7f14e60a0f472c70", "scanner": "scanner-primary", "fingerprint": "0e79c82a0423139b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04e44aed8f47f21c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/fl/scrape-banner-ssb.ts:27"}, "properties": {"repobilityId": "a71c0434f1c1003e", "scanner": "scanner-primary", "fingerprint": "04e44aed8f47f21c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32c5ea7f110b979c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-banner-ssb.ts:302"}, "properties": {"repobilityId": "00f031c1a8a046d1", "scanner": "scanner-primary", "fingerprint": "32c5ea7f110b979c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da3aaa463af01be9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-nfc.ts:93"}, "properties": {"repobilityId": "1bd0697327355f86", "scanner": "scanner-primary", "fingerprint": "da3aaa463af01be9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5571b3c59125bb1b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/scrape-daytonastate.ts:169"}, "properties": {"repobilityId": "44b0553aa0efd281", "scanner": "scanner-primary", "fingerprint": "5571b3c59125bb1b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c7949589d823062", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-cf.ts:122"}, "properties": {"repobilityId": "73f40dd115ec782b", "scanner": "scanner-primary", "fingerprint": "1c7949589d823062", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f02568d33f3fa629", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fl/enrich-courseleaf-titles.ts:125"}, "properties": {"repobilityId": "38cdbb5a422a1e3a", "scanner": "scanner-primary", "fingerprint": "f02568d33f3fa629", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2800599876d226b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/fl/scrape-broward.ts:102"}, "properties": {"repobilityId": "506009780bd55e7b", "scanner": "scanner-primary", "fingerprint": "c2800599876d226b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c547ad92f09de043", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fl/scrape-broward.ts:96"}, "properties": {"repobilityId": "61d85a046c9c29b3", "scanner": "scanner-primary", "fingerprint": "c547ad92f09de043", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-798698906c46b7fa", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-lbhc.ts:129"}, "properties": {"repobilityId": "8dd16065dbe70d51", "scanner": "scanner-primary", "fingerprint": "798698906c46b7fa", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8fcce07d2988564", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-aaniiih-nakoda.ts:74"}, "properties": {"repobilityId": "b5aa8dd66c0eea6e", "scanner": "scanner-primary", "fingerprint": "b8fcce07d2988564", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce9a3693f9f4fde9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mt/scrape-skc.ts:124"}, "properties": {"repobilityId": "efcb86577e390989", "scanner": "scanner-primary", "fingerprint": "ce9a3693f9f4fde9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d7d4c72e5b01632", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ga/scrape-smartcatalogiq-programs.ts:82"}, "properties": {"repobilityId": "60b498a90fda149d", "scanner": "scanner-primary", "fingerprint": "4d7d4c72e5b01632", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f9e5257d21e5cec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-uga.ts:129"}, "properties": {"repobilityId": "e98b8d5b37648645", "scanner": "scanner-primary", "fingerprint": "9f9e5257d21e5cec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77b2b485bbb3338d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gatech.ts:152"}, "properties": {"repobilityId": "759c95d4c3cc1ecd", "scanner": "scanner-primary", "fingerprint": "77b2b485bbb3338d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82997c38caa20057", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-banner-ssb.ts:314"}, "properties": {"repobilityId": "4271d67ec35a54e3", "scanner": "scanner-primary", "fingerprint": "82997c38caa20057", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-91771a0fa8de9ada", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ga/scrape-transfer-gsu.ts:58"}, "properties": {"repobilityId": "717ef30487d01727", "scanner": "scanner-primary", "fingerprint": "91771a0fa8de9ada", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5317a17b9d4f2b35", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-transfer-gsu.ts:110"}, "properties": {"repobilityId": "e463a145c04b6ba9", "scanner": "scanner-primary", "fingerprint": "5317a17b9d4f2b35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c48f4a1d1b6b4196", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ga/scrape-tcsg-pdf-programs.ts:78"}, "properties": {"repobilityId": "31f1f56e8b55e993", "scanner": "scanner-primary", "fingerprint": "c48f4a1d1b6b4196", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4cf3341c48d3271b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-banner8.ts:80"}, "properties": {"repobilityId": "30840598682f9b07", "scanner": "scanner-primary", "fingerprint": "4cf3341c48d3271b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89fed36e777dd46a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer.ts:137"}, "properties": {"repobilityId": "19820f9208c353a8", "scanner": "scanner-primary", "fingerprint": "89fed36e777dd46a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dcd8ffe232957b84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nh/scrape-transfer-keene.ts:139"}, "properties": {"repobilityId": "0a3adb9968dbe7c4", "scanner": "scanner-primary", "fingerprint": "dcd8ffe232957b84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f2a3eccecca9ec2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/oh/scrape-transfer-osu.ts:95"}, "properties": {"repobilityId": "2d4ce9e914c62043", "scanner": "scanner-primary", "fingerprint": "7f2a3eccecca9ec2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ad92c2eaee8743b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/la/scrape-programs.ts:61"}, "properties": {"repobilityId": "b69fc3fb366714da", "scanner": "scanner-primary", "fingerprint": "5ad92c2eaee8743b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79a9db0bd566ecdc", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/la/scrape-regents-matrix.ts:39"}, "properties": {"repobilityId": "04ae01f00207d33d", "scanner": "scanner-primary", "fingerprint": "79a9db0bd566ecdc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7476dc5b38c86a72", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/la/scrape-regents-matrix.ts:119"}, "properties": {"repobilityId": "5c9d1e75d84e57e6", "scanner": "scanner-primary", "fingerprint": "7476dc5b38c86a72", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6992b7d944482e6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/mi/scrape-colleague.ts:689"}, "properties": {"repobilityId": "83000b288631bef3", "scanner": "scanner-primary", "fingerprint": "6992b7d944482e6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c468e6a32983133a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-transfer-mitransfer.ts:133"}, "properties": {"repobilityId": "3e2f2df2cd2976d6", "scanner": "scanner-primary", "fingerprint": "c468e6a32983133a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e161354c267adb17", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/mi/scrape-smartcatalogiq-programs.ts:74"}, "properties": {"repobilityId": "a088e556af63eec6", "scanner": "scanner-primary", "fingerprint": "e161354c267adb17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0df1deb779071ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-smartcatalogiq-programs.ts:58"}, "properties": {"repobilityId": "90327d4bd4cd7425", "scanner": "scanner-primary", "fingerprint": "f0df1deb779071ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-043fafe7fe2efbf3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mi/scrape-banner-ssb.ts:283"}, "properties": {"repobilityId": "7b7b850adf62bd73", "scanner": "scanner-primary", "fingerprint": "043fafe7fe2efbf3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61d7275b24edc585", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/az/scrape-maricopa.ts:191"}, "properties": {"repobilityId": "c65a9dbbe7bcf40f", "scanner": "scanner-primary", "fingerprint": "61d7275b24edc585", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac00a8e83fcee3b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/az/scrape-jenzabar-cmc.ts:122"}, "properties": {"repobilityId": "f6fa24281cff421d", "scanner": "scanner-primary", "fingerprint": "ac00a8e83fcee3b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eadc1d95489c2585", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/az/scrape-transfer-aztransfer.ts:50"}, "properties": {"repobilityId": "14a90b2727431240", "scanner": "scanner-primary", "fingerprint": "eadc1d95489c2585", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4efa52a6637a8174", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/az/scrape-dine.ts:245"}, "properties": {"repobilityId": "584f0319ccb910db", "scanner": "scanner-primary", "fingerprint": "4efa52a6637a8174", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73937db542af8ab9", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/il/scrape-ccc.ts:289"}, "properties": {"repobilityId": "086a1061868ed7b0", "scanner": "scanner-primary", "fingerprint": "73937db542af8ab9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfc5fb71e2c0c570", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-ccc.ts:275"}, "properties": {"repobilityId": "c73a86dd467ea491", "scanner": "scanner-primary", "fingerprint": "cfc5fb71e2c0c570", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-87672ba8dbfd4aa5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-niu.ts:99"}, "properties": {"repobilityId": "a6fc4ffe86bcca6d", "scanner": "scanner-primary", "fingerprint": "87672ba8dbfd4aa5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-edb424091c3947ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/il/scrape-smartcatalogiq-programs.ts:74"}, "properties": {"repobilityId": "d9a78c8cffc111f9", "scanner": "scanner-primary", "fingerprint": "edb424091c3947ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f3ae4feef121123", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-smartcatalogiq-programs.ts:58"}, "properties": {"repobilityId": "b0e679669868c44b", "scanner": "scanner-primary", "fingerprint": "1f3ae4feef121123", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3a0477167df8f62e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/il/scrape-transfer-siu.ts:135"}, "properties": {"repobilityId": "bdc6e3fa129fa31c", "scanner": "scanner-primary", "fingerprint": "3a0477167df8f62e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-608f10778b9b83e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-colleague.ts:253"}, "properties": {"repobilityId": "81bacf1e2bad28dc", "scanner": "scanner-primary", "fingerprint": "608f10778b9b83e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d56639d750904ca3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-colleague.ts:339"}, "properties": {"repobilityId": "dad51a2c6fd20162", "scanner": "scanner-primary", "fingerprint": "d56639d750904ca3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-359a3f1dd67002db", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/supabase-import.ts:31"}, "properties": {"repobilityId": "972398f548ec57b7", "scanner": "scanner-primary", "fingerprint": "359a3f1dd67002db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-847f40a94cd7ed52", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/fingerprint-college.ts:87"}, "properties": {"repobilityId": "4767d7fd11e698ca", "scanner": "scanner-primary", "fingerprint": "847f40a94cd7ed52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e32e06ef2b4a7eae", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/scrape-smartcatalogiq-programs.ts:184"}, "properties": {"repobilityId": "dcb94e2b5d13c465", "scanner": "scanner-primary", "fingerprint": "e32e06ef2b4a7eae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8842e6dff561a0b7", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-ctnet-multisource.ts:209"}, "properties": {"repobilityId": "55258354260178ba", "scanner": "scanner-primary", "fingerprint": "8842e6dff561a0b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84712bb2623f99b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-ctnet-multisource.ts:156"}, "properties": {"repobilityId": "d29b3f5d35fd22e8", "scanner": "scanner-primary", "fingerprint": "84712bb2623f99b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33b16f094cfb3dfd", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/lib/discover-colleges.ts:231"}, "properties": {"repobilityId": "eded116990f8fda9", "scanner": "scanner-primary", "fingerprint": "33b16f094cfb3dfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0670bbe0b9c3ae1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-cleancatalog-programs.ts:128"}, "properties": {"repobilityId": "703067323a6f3103", "scanner": "scanner-primary", "fingerprint": "f0670bbe0b9c3ae1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59f08c82854fc51e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-collegetransfer.ts:142"}, "properties": {"repobilityId": "3e07b8655689136f", "scanner": "scanner-primary", "fingerprint": "59f08c82854fc51e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f1cd85ecbbc8b91c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/scrape-coursedog-programs.ts:630"}, "properties": {"repobilityId": "6b23e67126248141", "scanner": "scanner-primary", "fingerprint": "f1cd85ecbbc8b91c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34646c7d52bf431f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog-programs.ts:10"}, "properties": {"repobilityId": "7a0d5c3bf43fd68d", "scanner": "scanner-primary", "fingerprint": "34646c7d52bf431f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6a3297a89a1d3ffb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/scrape-coursedog.ts:350"}, "properties": {"repobilityId": "a34eb0cfeed11835", "scanner": "scanner-primary", "fingerprint": "6a3297a89a1d3ffb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ad3310c9fd133f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-coursedog.ts:222"}, "properties": {"repobilityId": "7e071c94e28a3a66", "scanner": "scanner-primary", "fingerprint": "8ad3310c9fd133f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb675c3b9562384e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/discover-programs.ts:101"}, "properties": {"repobilityId": "c7f7d81f94154ba1", "scanner": "scanner-primary", "fingerprint": "cb675c3b9562384e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34b4d2d1da32046c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/resolve-terms.ts:168"}, "properties": {"repobilityId": "9b05a3d7f2438da6", "scanner": "scanner-primary", "fingerprint": "34b4d2d1da32046c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5027056faea3221c", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-jenzabar-webforms.ts:124"}, "properties": {"repobilityId": "ab3bbac9e56715df", "scanner": "scanner-primary", "fingerprint": "5027056faea3221c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88369901bd22aeef", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-jenzabar.ts:279"}, "properties": {"repobilityId": "41d578b17a35116d", "scanner": "scanner-primary", "fingerprint": "88369901bd22aeef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0ac84cb8b923c9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-courseleaf-programs.ts:64"}, "properties": {"repobilityId": "fb78d9f72a9361bf", "scanner": "scanner-primary", "fingerprint": "d0ac84cb8b923c9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca770cea298db5e6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-courseleaf-programs.ts:67"}, "properties": {"repobilityId": "f5e2aef96db5cda6", "scanner": "scanner-primary", "fingerprint": "ca770cea298db5e6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dffa5bd66d32c495", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/check-scrape-health.ts:442"}, "properties": {"repobilityId": "4856650440169f3a", "scanner": "scanner-primary", "fingerprint": "dffa5bd66d32c495", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58790bf84ed6239a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/scrape-banner-ssb.ts:298"}, "properties": {"repobilityId": "ec52e96cc6e77dca", "scanner": "scanner-primary", "fingerprint": "58790bf84ed6239a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25cb0a9c4a1f5107", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-banner-ssb.ts:370"}, "properties": {"repobilityId": "dbf0672e97dfd32f", "scanner": "scanner-primary", "fingerprint": "25cb0a9c4a1f5107", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2aecdca2374e05c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/articulation-portals.ts:157"}, "properties": {"repobilityId": "5937a1f21ac676e9", "scanner": "scanner-primary", "fingerprint": "e2aecdca2374e05c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-911a7890ecd641d0", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-banner-8.ts:321"}, "properties": {"repobilityId": "8b986b2637b4b33c", "scanner": "scanner-primary", "fingerprint": "911a7890ecd641d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af509a0faccc5735", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/scrape-acalog-programs.ts:71"}, "properties": {"repobilityId": "975a391cc44ac816", "scanner": "scanner-primary", "fingerprint": "af509a0faccc5735", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d681cf3582ab43b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/scrape-acalog-programs.ts:81"}, "properties": {"repobilityId": "94442a47aeb7a658", "scanner": "scanner-primary", "fingerprint": "2d681cf3582ab43b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0170c288805d21a4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-zipcodes.ts:85"}, "properties": {"repobilityId": "7e579498aa9458d4", "scanner": "scanner-primary", "fingerprint": "0170c288805d21a4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79ffa209f5dffa02", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/check-config-urls.ts:145"}, "properties": {"repobilityId": "8f3f27474aa46995", "scanner": "scanner-primary", "fingerprint": "79ffa209f5dffa02", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df8791b0cc804142", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/colleague-terms.ts:144"}, "properties": {"repobilityId": "94d631486b525b65", "scanner": "scanner-primary", "fingerprint": "df8791b0cc804142", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d3306e3da261487", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/cluster-fingerprints.ts:323"}, "properties": {"repobilityId": "960b2d6ec9871764", "scanner": "scanner-primary", "fingerprint": "1d3306e3da261487", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25536e959756452b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/aggregate-prereqs.ts:133"}, "properties": {"repobilityId": "4bd1ba89979fbe75", "scanner": "scanner-primary", "fingerprint": "25536e959756452b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6eca7c21337c6871", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/add-state.ts:401"}, "properties": {"repobilityId": "9b5816ec4309d10b", "scanner": "scanner-primary", "fingerprint": "6eca7c21337c6871", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28e7129f81bca16b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/in-state-institutions.ts:48"}, "properties": {"repobilityId": "8f59800eeefbe39a", "scanner": "scanner-primary", "fingerprint": "28e7129f81bca16b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f4a59c75127e4fb6", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/nj/scrape-transfer.ts:576"}, "properties": {"repobilityId": "52aad795484c0db1", "scanner": "scanner-primary", "fingerprint": "f4a59c75127e4fb6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53be219cdaf22034", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-ocean.ts:108"}, "properties": {"repobilityId": "6bdf4aab7cccdf04", "scanner": "scanner-primary", "fingerprint": "53be219cdaf22034", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c65bf6b97baf9864", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-banner-ssb.ts:277"}, "properties": {"repobilityId": "787904f3df929128", "scanner": "scanner-primary", "fingerprint": "c65bf6b97baf9864", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-80cfc39a024d0b55", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nj/scrape-salem.ts:90"}, "properties": {"repobilityId": "ccacd738be41a3fc", "scanner": "scanner-primary", "fingerprint": "80cfc39a024d0b55", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-09d8fcc865824d13", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/ca/scrape-cerritos.ts:266"}, "properties": {"repobilityId": "6c42c2469d213c1c", "scanner": "scanner-primary", "fingerprint": "09d8fcc865824d13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b8f86f066d345c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-sdccd.ts:221"}, "properties": {"repobilityId": "5a21bdc6248a29ca", "scanner": "scanner-primary", "fingerprint": "3b8f86f066d345c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f6b9edf3f876e63d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-yosemite.ts:101"}, "properties": {"repobilityId": "9c35d9137753e242", "scanner": "scanner-primary", "fingerprint": "f6b9edf3f876e63d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42959576818018eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-yosemite.ts:296"}, "properties": {"repobilityId": "dd81bcd454062c30", "scanner": "scanner-primary", "fingerprint": "42959576818018eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-343072cce5c1b80c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ca/scrape-smc.ts:288"}, "properties": {"repobilityId": "d79230465dbc5a4d", "scanner": "scanner-primary", "fingerprint": "343072cce5c1b80c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ef1a19d41a7750e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-westhills.ts:73"}, "properties": {"repobilityId": "586dbedf21ce67e9", "scanner": "scanner-primary", "fingerprint": "8ef1a19d41a7750e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85ae9e97cef09344", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-laccd.ts:299"}, "properties": {"repobilityId": "561a07f02b035cbb", "scanner": "scanner-primary", "fingerprint": "85ae9e97cef09344", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9260ef36396b73cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-4cd.ts:207"}, "properties": {"repobilityId": "27601f9495fc478a", "scanner": "scanner-primary", "fingerprint": "9260ef36396b73cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b1b2ce2930d68b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-canyons.ts:12"}, "properties": {"repobilityId": "4412cbb38e796f0f", "scanner": "scanner-primary", "fingerprint": "1b1b2ce2930d68b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c28fd784d3b1c6cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-banner-cluster.ts:126"}, "properties": {"repobilityId": "d039274866301947", "scanner": "scanner-primary", "fingerprint": "c28fd784d3b1c6cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8871e0fadc7b39d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-imperial.ts:212"}, "properties": {"repobilityId": "6a7993103ef8b1d7", "scanner": "scanner-primary", "fingerprint": "e8871e0fadc7b39d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a65c8cb341f912cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-imperial.ts:133"}, "properties": {"repobilityId": "f06fa39172db22df", "scanner": "scanner-primary", "fingerprint": "a65c8cb341f912cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f41a34888c1fbad2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-socccd.ts:119"}, "properties": {"repobilityId": "663ca107339d2b5f", "scanner": "scanner-primary", "fingerprint": "f41a34888c1fbad2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e5fd5ff5757a429", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-foothill.ts:82"}, "properties": {"repobilityId": "d28646a4f92c806f", "scanner": "scanner-primary", "fingerprint": "7e5fd5ff5757a429", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdfecb9537cc9d58", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/explore-assist-articulation.ts:84"}, "properties": {"repobilityId": "4b5fec94d73185cf", "scanner": "scanner-primary", "fingerprint": "fdfecb9537cc9d58", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-50e735539bc8ebdf", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-losrios.ts:548"}, "properties": {"repobilityId": "3cd2da819d98af5b", "scanner": "scanner-primary", "fingerprint": "50e735539bc8ebdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03507c7463acefc5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-transfer-assist.ts:147"}, "properties": {"repobilityId": "43ece55b6498a294", "scanner": "scanner-primary", "fingerprint": "03507c7463acefc5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0eead4135b4c3f11", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-wvm.ts:26"}, "properties": {"repobilityId": "b47c9c06b228e83a", "scanner": "scanner-primary", "fingerprint": "0eead4135b4c3f11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-220ce8fff3885db1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-wvm.ts:110"}, "properties": {"repobilityId": "4d3352625e00bebc", "scanner": "scanner-primary", "fingerprint": "220ce8fff3885db1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3c33d9e2e562440", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-marin.ts:142"}, "properties": {"repobilityId": "ea00c026cdc2be7c", "scanner": "scanner-primary", "fingerprint": "d3c33d9e2e562440", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1656bcb9798969cd", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/ca/scrape-assist-receivers.ts:341"}, "properties": {"repobilityId": "39aa1ca6d4f9cbfe", "scanner": "scanner-primary", "fingerprint": "1656bcb9798969cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f38e3df5756f409", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ca/scrape-assist-receivers.ts:203"}, "properties": {"repobilityId": "04028cf6d3bfabbb", "scanner": "scanner-primary", "fingerprint": "3f38e3df5756f409", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6ce98d728d64181", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ca/scrape-sbcc.ts:218"}, "properties": {"repobilityId": "46c3c215ff6009d1", "scanner": "scanner-primary", "fingerprint": "d6ce98d728d64181", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eec3bb2d1466b6db", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/ca/__tests__/parse-assist-articulation.test.ts:72"}, "properties": {"repobilityId": "9d9a119df9cb2269", "scanner": "scanner-primary", "fingerprint": "eec3bb2d1466b6db", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52bbfb5763080b1c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/mn/scrape-jenzabar.ts:59"}, "properties": {"repobilityId": "09fbffac5cb49146", "scanner": "scanner-primary", "fingerprint": "52bbfb5763080b1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c98c5a8deaae2820", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mn/scrape-catalog-prereqs.ts:136"}, "properties": {"repobilityId": "f7f763b1bad92eb5", "scanner": "scanner-primary", "fingerprint": "c98c5a8deaae2820", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c33208f36295af0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ak/scrape-ilisagvik.ts:67"}, "properties": {"repobilityId": "6e88a4e5d47490bd", "scanner": "scanner-primary", "fingerprint": "2c33208f36295af0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5dd9e7d0451d0d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-aims-workday.ts:204"}, "properties": {"repobilityId": "db53d47831df9cc8", "scanner": "scanner-primary", "fingerprint": "d5dd9e7d0451d0d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f0eab685a130502", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/co/scrape-programs.ts:111"}, "properties": {"repobilityId": "a8966b7be99d81e9", "scanner": "scanner-primary", "fingerprint": "2f0eab685a130502", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43b601f3d80c4b45", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/co/build-transfers.ts:24"}, "properties": {"repobilityId": "da1af277f522ae74", "scanner": "scanner-primary", "fingerprint": "43b601f3d80c4b45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fd9df07dda65791", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-transfer-wcsu.ts:63"}, "properties": {"repobilityId": "22331e3e30011ec1", "scanner": "scanner-primary", "fingerprint": "2fd9df07dda65791", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-47cf8e8cfe34d695", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ct/scrape-banner.ts:248"}, "properties": {"repobilityId": "bb01197e4af7df0d", "scanner": "scanner-primary", "fingerprint": "47cf8e8cfe34d695", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-05b4d6c9b1f7e744", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/dc/scrape-transfer.ts:317"}, "properties": {"repobilityId": "a1004164129b1d68", "scanner": "scanner-primary", "fingerprint": "05b4d6c9b1f7e744", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cad67975d971858b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-transfer.ts:158"}, "properties": {"repobilityId": "c2f5fd4f233a486b", "scanner": "scanner-primary", "fingerprint": "cad67975d971858b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b5d375cb9c0b6c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-banner.ts:255"}, "properties": {"repobilityId": "b06ff26313ce0576", "scanner": "scanner-primary", "fingerprint": "2b5d375cb9c0b6c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e142901424fb6065", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dc/scrape-programs.ts:62"}, "properties": {"repobilityId": "1177ec4ce7b0aca2", "scanner": "scanner-primary", "fingerprint": "e142901424fb6065", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7cbae846e657b43f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ut/scrape-transfer.ts:171"}, "properties": {"repobilityId": "6173674de674ebcf", "scanner": "scanner-primary", "fingerprint": "7cbae846e657b43f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5bd19a3cc8035813", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ut/scrape-programs.ts:59"}, "properties": {"repobilityId": "9ae658a5cb04b97d", "scanner": "scanner-primary", "fingerprint": "5bd19a3cc8035813", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c58f7429978bfe18", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/hi/scrape-transfer-uhdad.ts:357"}, "properties": {"repobilityId": "7f1a4f42dc063983", "scanner": "scanner-primary", "fingerprint": "c58f7429978bfe18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55da02d085f839e7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-transfer.ts:160"}, "properties": {"repobilityId": "1aac5459e59f9355", "scanner": "scanner-primary", "fingerprint": "55da02d085f839e7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82bb08049ace0fbf", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/me/scrape-catalog-prereqs.ts:135"}, "properties": {"repobilityId": "debd922bfbf2d411", "scanner": "scanner-primary", "fingerprint": "82bb08049ace0fbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7f9edc388e7a4c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-catalog-prereqs.ts:86"}, "properties": {"repobilityId": "b165ece1c56a392f", "scanner": "scanner-primary", "fingerprint": "c7f9edc388e7a4c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cad3f442845ab5d9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/me/scrape-mccs.ts:419"}, "properties": {"repobilityId": "9b471d734f460100", "scanner": "scanner-primary", "fingerprint": "cad3f442845ab5d9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e12752a1ef060a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/nm/scrape-sipi-pdf.ts:245"}, "properties": {"repobilityId": "940b27b59836de71", "scanner": "scanner-primary", "fingerprint": "7e12752a1ef060a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-018910b72223ccd9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nm/scrape-sipi-pdf.ts:65"}, "properties": {"repobilityId": "c2f2568a7a9b265f", "scanner": "scanner-primary", "fingerprint": "018910b72223ccd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe1ef746139fe77b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-catalog-prereqs.ts:8"}, "properties": {"repobilityId": "ccab2913e1786e36", "scanner": "scanner-primary", "fingerprint": "fe1ef746139fe77b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f39faac86ea8b4cc", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/wv/scrape-eastern-wv.ts:172"}, "properties": {"repobilityId": "41b3b233ba258aeb", "scanner": "scanner-primary", "fingerprint": "f39faac86ea8b4cc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83ab860317a801fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-eastern-wv.ts:91"}, "properties": {"repobilityId": "864e2eff3600be42", "scanner": "scanner-primary", "fingerprint": "83ab860317a801fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c89f9a95d815adab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wv/scrape-transfer-wvu.ts:49"}, "properties": {"repobilityId": "f58b86c5ae8d1bb5", "scanner": "scanner-primary", "fingerprint": "c89f9a95d815adab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d97223f969fb06a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-ncstate.ts:47"}, "properties": {"repobilityId": "0082ca9e6be0d8e6", "scanner": "scanner-primary", "fingerprint": "6d97223f969fb06a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b1755d4b15a17ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-catawba.ts:43"}, "properties": {"repobilityId": "220df13c080df4da", "scanner": "scanner-primary", "fingerprint": "6b1755d4b15a17ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-03b13d714602a0ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-hpu.ts:46"}, "properties": {"repobilityId": "c79ba1cf4df89b29", "scanner": "scanner-primary", "fingerprint": "03b13d714602a0ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-66067613fb568eda", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/nc/scrape-smartcatalogiq-programs.ts:74"}, "properties": {"repobilityId": "d290acedc02eaf12", "scanner": "scanner-primary", "fingerprint": "66067613fb568eda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6463ac8fb9512cf0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-smartcatalogiq-programs.ts:58"}, "properties": {"repobilityId": "14d14c928308a2c4", "scanner": "scanner-primary", "fingerprint": "6463ac8fb9512cf0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bbff048be09ddb0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-uncg.ts:44"}, "properties": {"repobilityId": "30fee5c4b5384735", "scanner": "scanner-primary", "fingerprint": "8bbff048be09ddb0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ab135a558c164c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-southeastern.ts:125"}, "properties": {"repobilityId": "2b30a565e7cdb5f8", "scanner": "scanner-primary", "fingerprint": "3ab135a558c164c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4eecb6987db09d43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-tri-county.ts:201"}, "properties": {"repobilityId": "8deb8acb51b1ae8b", "scanner": "scanner-primary", "fingerprint": "4eecb6987db09d43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f6e1836fde47472", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-wingate.ts:46"}, "properties": {"repobilityId": "dd9bdf852a94662c", "scanner": "scanner-primary", "fingerprint": "5f6e1836fde47472", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-11b38a2661173739", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cleveland.ts:130"}, "properties": {"repobilityId": "c6a5637da7ec439a", "scanner": "scanner-primary", "fingerprint": "11b38a2661173739", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b90db814731a282", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-mayland.ts:117"}, "properties": {"repobilityId": "f95f58069a52a8c2", "scanner": "scanner-primary", "fingerprint": "4b90db814731a282", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8af685e6012ccf9a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-sandhills.ts:93"}, "properties": {"repobilityId": "962c81fe9d8ac8a2", "scanner": "scanner-primary", "fingerprint": "8af685e6012ccf9a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-132281ddca60ed50", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-martin.ts:62"}, "properties": {"repobilityId": "84b1ff24311d0ff5", "scanner": "scanner-primary", "fingerprint": "132281ddca60ed50", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae4ca47b32b5fc71", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-albemarle.ts:140"}, "properties": {"repobilityId": "e44bdd58277925dc", "scanner": "scanner-primary", "fingerprint": "ae4ca47b32b5fc71", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a4c38f7dadecb6e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-elon.ts:110"}, "properties": {"repobilityId": "a1f007eff72a6791", "scanner": "scanner-primary", "fingerprint": "2a4c38f7dadecb6e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ce218953224f439", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-pamlico.ts:72"}, "properties": {"repobilityId": "98553058ba0e76e6", "scanner": "scanner-primary", "fingerprint": "3ce218953224f439", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e1da3d0c0fdf3bd5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-transfer-cns.ts:84"}, "properties": {"repobilityId": "5ca0afe7ab8f35af", "scanner": "scanner-primary", "fingerprint": "e1da3d0c0fdf3bd5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8105145aa41a2ac5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/nc/scrape-cape-fear.ts:98"}, "properties": {"repobilityId": "e2755ba23b444f67", "scanner": "scanner-primary", "fingerprint": "8105145aa41a2ac5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a8398738d6f45fc4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sd/scrape-transfer-usd.ts:106"}, "properties": {"repobilityId": "82b95ea5e1c99b4e", "scanner": "scanner-primary", "fingerprint": "a8398738d6f45fc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-19edcc2d294f9ebf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner8.ts:68"}, "properties": {"repobilityId": "b1c90b52f1acd8ea", "scanner": "scanner-primary", "fingerprint": "19edcc2d294f9ebf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d0a2da6d2c8473b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-northeastern-pdf.ts:81"}, "properties": {"repobilityId": "8cdc4b55478d9701", "scanner": "scanner-primary", "fingerprint": "d0a2da6d2c8473b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-06bf1358230c0a4f", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/sc/scrape-cygnet.ts:119"}, "properties": {"repobilityId": "9844f77090d31e87", "scanner": "scanner-primary", "fingerprint": "06bf1358230c0a4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ac5cf4d10817313", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-cygnet.ts:91"}, "properties": {"repobilityId": "42bb9ea225308c63", "scanner": "scanner-primary", "fingerprint": "4ac5cf4d10817313", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd472209f4681a84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-banner.ts:105"}, "properties": {"repobilityId": "61e7c1365eca61f2", "scanner": "scanner-primary", "fingerprint": "fd472209f4681a84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8c46ec55315eeb9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-transfer-clemson.ts:84"}, "properties": {"repobilityId": "61a870b80be01629", "scanner": "scanner-primary", "fingerprint": "e8c46ec55315eeb9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dc5fa1a8b1d1b6a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sc/scrape-williamsburg-pdf.ts:76"}, "properties": {"repobilityId": "6c407e1b10da5df8", "scanner": "scanner-primary", "fingerprint": "7dc5fa1a8b1d1b6a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f78d19c1d560e953", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-oregon-coast.ts:58"}, "properties": {"repobilityId": "da9cfb7a490bf309", "scanner": "scanner-primary", "fingerprint": "f78d19c1d560e953", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f97d474c72243f3f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-tvcc.ts:83"}, "properties": {"repobilityId": "8fdab192f7888f21", "scanner": "scanner-primary", "fingerprint": "f97d474c72243f3f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf7e11bccf0d5580", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-osu.ts:121"}, "properties": {"repobilityId": "d95254103d579532", "scanner": "scanner-primary", "fingerprint": "cf7e11bccf0d5580", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b7b19241b6741924", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-transfer-eou.ts:74"}, "properties": {"repobilityId": "cfabb2d68081153c", "scanner": "scanner-primary", "fingerprint": "b7b19241b6741924", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf7f2212c2a21c5a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/or/scrape-columbia-gorge.ts:97"}, "properties": {"repobilityId": "b838633ea62166c3", "scanner": "scanner-primary", "fingerprint": "cf7f2212c2a21c5a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-994de4adb9b39205", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ok/scrape-transfer.ts:110"}, "properties": {"repobilityId": "44d12177fbc57b0e", "scanner": "scanner-primary", "fingerprint": "994de4adb9b39205", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9edbab9356110e83", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/al/scrape-accs-banner8.ts:65"}, "properties": {"repobilityId": "4854cfa1fb9e0b65", "scanner": "scanner-primary", "fingerprint": "9edbab9356110e83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85f9b97ad1577463", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/al/scrape-programs.ts:43"}, "properties": {"repobilityId": "20cb9b31e08257bf", "scanner": "scanner-primary", "fingerprint": "85f9b97ad1577463", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e90d7a0facb88efe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/al/scrape-transfer-stars.ts:113"}, "properties": {"repobilityId": "f372f1cfa4a64c4c", "scanner": "scanner-primary", "fingerprint": "e90d7a0facb88efe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33b0e4654adea018", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-ntc.ts:112"}, "properties": {"repobilityId": "5271e0a1261f5629", "scanner": "scanner-primary", "fingerprint": "33b0e4654adea018", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bae51497ba90115e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wi/scrape-transfer-uwm.ts:113"}, "properties": {"repobilityId": "3689c6b424457db0", "scanner": "scanner-primary", "fingerprint": "bae51497ba90115e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f483e3428b092a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/nv/scrape-programs.ts:31"}, "properties": {"repobilityId": "e0598a94cce5653a", "scanner": "scanner-primary", "fingerprint": "2f483e3428b092a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71bf4f8ff8d845b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/vt/scrape-colleague.ts:447"}, "properties": {"repobilityId": "9e3d4d757bbde0f0", "scanner": "scanner-primary", "fingerprint": "71bf4f8ff8d845b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ef13cf776800477", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/vt/scrape-transfer.ts:51"}, "properties": {"repobilityId": "552ac345eae46013", "scanner": "scanner-primary", "fingerprint": "8ef13cf776800477", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85aade4bbc990ba2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/wy/scrape-northwest-college.ts:74"}, "properties": {"repobilityId": "461c4861a4b42bda", "scanner": "scanner-primary", "fingerprint": "85aade4bbc990ba2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-011f8a73bf03c2de", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ri/scrape-banner8.ts:178"}, "properties": {"repobilityId": "c9c9e80869110b33", "scanner": "scanner-primary", "fingerprint": "011f8a73bf03c2de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16d7f20d3884496b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-banner8.ts:75"}, "properties": {"repobilityId": "9fd816db9a7bdf6f", "scanner": "scanner-primary", "fingerprint": "16d7f20d3884496b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31c73868220d6960", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ri/scrape-transfer.ts:83"}, "properties": {"repobilityId": "17841f3410e949aa", "scanner": "scanner-primary", "fingerprint": "31c73868220d6960", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35d483b9c53dc526", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ri/scrape-transfer.ts:204"}, "properties": {"repobilityId": "96a393df2eb7f3b7", "scanner": "scanner-primary", "fingerprint": "35d483b9c53dc526", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b680efe4b2b53fba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner8.ts:84"}, "properties": {"repobilityId": "d339dc2dafb147d9", "scanner": "scanner-primary", "fingerprint": "b680efe4b2b53fba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bb60bba3d5faa94f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-banner-ssb.ts:350"}, "properties": {"repobilityId": "b8ff568ca97f3730", "scanner": "scanner-primary", "fingerprint": "bb60bba3d5faa94f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dc876cba0b1d80fb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/de/scrape-transfer-udel.ts:125"}, "properties": {"repobilityId": "f9e1a7bad00aec35", "scanner": "scanner-primary", "fingerprint": "dc876cba0b1d80fb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bd133f6336468d5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/nd/scrape-transfer-gerta.ts:219"}, "properties": {"repobilityId": "2729edf792a8375f", "scanner": "scanner-primary", "fingerprint": "bd133f6336468d5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16e68c237a2f5938", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-colleague.ts:222"}, "properties": {"repobilityId": "f485497889fd513e", "scanner": "scanner-primary", "fingerprint": "16e68c237a2f5938", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d059c3c7657fe34", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-masstransfer.ts:165"}, "properties": {"repobilityId": "1e5f061c346b5ee0", "scanner": "scanner-primary", "fingerprint": "9d059c3c7657fe34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b4bcbe560ffd4055", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner8.ts:109"}, "properties": {"repobilityId": "418d9c82d08869cb", "scanner": "scanner-primary", "fingerprint": "b4bcbe560ffd4055", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-548b1ba149ca3a55", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ma/scrape-cleancatalog-programs.ts:30"}, "properties": {"repobilityId": "be420f0072293b1a", "scanner": "scanner-primary", "fingerprint": "548b1ba149ca3a55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cb3255446881a5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ma/scrape-massasoit-programs.ts:96"}, "properties": {"repobilityId": "cffa5b08c289aed4", "scanner": "scanner-primary", "fingerprint": "5cb3255446881a5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d60788681ce2423a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-massasoit-programs.ts:55"}, "properties": {"repobilityId": "e3573040c173cd04", "scanner": "scanner-primary", "fingerprint": "d60788681ce2423a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83d869a5f85577f4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-banner-ssb.ts:261"}, "properties": {"repobilityId": "3dfbe2f60ecacdbb", "scanner": "scanner-primary", "fingerprint": "83d869a5f85577f4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41d5792d459a9c31", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-catalog-prereqs-gcc.ts:89"}, "properties": {"repobilityId": "e43ddbbb7c2e85e2", "scanner": "scanner-primary", "fingerprint": "41d5792d459a9c31", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e9d315492fb81d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ma/scrape-rcc-programs.ts:119"}, "properties": {"repobilityId": "427d32131878afca", "scanner": "scanner-primary", "fingerprint": "8e9d315492fb81d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f63fed8f7f2f8bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-rcc-programs.ts:59"}, "properties": {"repobilityId": "de2151efb4fac7f3", "scanner": "scanner-primary", "fingerprint": "2f63fed8f7f2f8bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-13c6b31f3e090097", "level": "none", "message": {"text": "Commented-code block (15 lines) in scripts/ma/scrape-qcc-pdf-programs.ts:214"}, "properties": {"repobilityId": "fb6090c46ee6f99c", "scanner": "scanner-primary", "fingerprint": "13c6b31f3e090097", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fad1696e3ff08e51", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ma/scrape-qcc-pdf-programs.ts:110"}, "properties": {"repobilityId": "0691fa5b6f4ce213", "scanner": "scanner-primary", "fingerprint": "fad1696e3ff08e51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-537a2751d88db9d0", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/ma/scrape-catalog-prereqs-middlesex.ts:296"}, "properties": {"repobilityId": "bc8bfd8b43e6d4fe", "scanner": "scanner-primary", "fingerprint": "537a2751d88db9d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-580d9ed433f65e6d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-banner-ssb.ts:341"}, "properties": {"repobilityId": "53307b4f7d067014", "scanner": "scanner-primary", "fingerprint": "580d9ed433f65e6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8cd55c8251451e54", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/scrape-jscc-pdf-programs.ts:100"}, "properties": {"repobilityId": "8008c8df8ad345ac", "scanner": "scanner-primary", "fingerprint": "8cd55c8251451e54", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c486d1000906d48", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/tn/transfer/scrape-utk.ts:33"}, "properties": {"repobilityId": "aa246da5134f1199", "scanner": "scanner-primary", "fingerprint": "2c486d1000906d48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-852ccf3aecd2668d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-ttu.ts:129"}, "properties": {"repobilityId": "803617239a26e59e", "scanner": "scanner-primary", "fingerprint": "852ccf3aecd2668d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6cdfa6dd5d7b8b56", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/tn/transfer/scrape-all.ts:47"}, "properties": {"repobilityId": "cc745a24d626efc3", "scanner": "scanner-primary", "fingerprint": "6cdfa6dd5d7b8b56", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00585d7ac23adc47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-apsu.ts:90"}, "properties": {"repobilityId": "27ae93d076bbc572", "scanner": "scanner-primary", "fingerprint": "00585d7ac23adc47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f250ebc036747dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tn/transfer/scrape-utm.ts:64"}, "properties": {"repobilityId": "e017fc116015ac8a", "scanner": "scanner-primary", "fingerprint": "9f250ebc036747dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e68dbcc66a3bea4", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/tx/scrape-colleague.ts:25"}, "properties": {"repobilityId": "4968318f35057ac8", "scanner": "scanner-primary", "fingerprint": "4e68dbcc66a3bea4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e9ac5a875620f00", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/tx/scrape-netcc.ts:102"}, "properties": {"repobilityId": "b2be26733e53fdd9", "scanner": "scanner-primary", "fingerprint": "8e9ac5a875620f00", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74605a2a316f97a0", "level": "none", "message": {"text": "Commented-code block (14 lines) in scripts/tx/scrape-clarendon.ts:114"}, "properties": {"repobilityId": "35a01b07f5fccd3e", "scanner": "scanner-primary", "fingerprint": "74605a2a316f97a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6379495eb719dc35", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-smartcatalogiq-programs.ts:74"}, "properties": {"repobilityId": "28fd8c9f51b0afb4", "scanner": "scanner-primary", "fingerprint": "6379495eb719dc35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db0956231fc8900c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-smartcatalogiq-programs.ts:58"}, "properties": {"repobilityId": "b5f3eab0fda59945", "scanner": "scanner-primary", "fingerprint": "db0956231fc8900c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-08046a92c9e5c2f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-alamo.ts:46"}, "properties": {"repobilityId": "e35e2fd03fc944ec", "scanner": "scanner-primary", "fingerprint": "08046a92c9e5c2f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4ecbcb1e2b1b4ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-austin.ts:99"}, "properties": {"repobilityId": "1218a4c5a40d9143", "scanner": "scanner-primary", "fingerprint": "f4ecbcb1e2b1b4ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3fd0b3891d6b67e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-cisco.ts:115"}, "properties": {"repobilityId": "c583a71c6c399ef3", "scanner": "scanner-primary", "fingerprint": "e3fd0b3891d6b67e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06b6efae82b3b78", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-collin.ts:211"}, "properties": {"repobilityId": "8308b3776de1a06a", "scanner": "scanner-primary", "fingerprint": "f06b6efae82b3b78", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4c689834756e95fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/tx/scrape-banner-ssb.ts:40"}, "properties": {"repobilityId": "5d9e09790c07ad2f", "scanner": "scanner-primary", "fingerprint": "4c689834756e95fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0b537bc55861f4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-acalog-prereqs.ts:147"}, "properties": {"repobilityId": "5290265b7c85429b", "scanner": "scanner-primary", "fingerprint": "e0b537bc55861f4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24333f89b89d74c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/tx/scrape-transfer-tccns.ts:102"}, "properties": {"repobilityId": "ad6e43741a78d25b", "scanner": "scanner-primary", "fingerprint": "24333f89b89d74c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-db489edebceff11e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-dallas.ts:531"}, "properties": {"repobilityId": "cbeeca955a0432b9", "scanner": "scanner-primary", "fingerprint": "db489edebceff11e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e2f9b29e179e136", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/tx/scrape-lsc.ts:56"}, "properties": {"repobilityId": "aaf415570bc31a05", "scanner": "scanner-primary", "fingerprint": "9e2f9b29e179e136", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ce47c2115b7dc08", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/tx/scrape-kilgore.ts:277"}, "properties": {"repobilityId": "374044565745d0b6", "scanner": "scanner-primary", "fingerprint": "6ce47c2115b7dc08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-474a0b25f072b1c2", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/tx/scrape-frank-phillips.ts:153"}, "properties": {"repobilityId": "983e013a58f09f12", "scanner": "scanner-primary", "fingerprint": "474a0b25f072b1c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9260745d9b501eb0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-emporia.ts:38"}, "properties": {"repobilityId": "2381b84fe3d4cd63", "scanner": "scanner-primary", "fingerprint": "9260745d9b501eb0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf1d8c3c9ab9e6f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer.ts:135"}, "properties": {"repobilityId": "fadb260b7674aec8", "scanner": "scanner-primary", "fingerprint": "cf1d8c3c9ab9e6f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89c8e57792b9ccf9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-allen.ts:110"}, "properties": {"repobilityId": "2f26be4a2fa1a724", "scanner": "scanner-primary", "fingerprint": "89c8e57792b9ccf9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-133733776d0a1354", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-manhattan-tech.ts:102"}, "properties": {"repobilityId": "abfa860e32810b10", "scanner": "scanner-primary", "fingerprint": "133733776d0a1354", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ef40a775d569abc5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-transfer-ku.ts:47"}, "properties": {"repobilityId": "008695c10a20864b", "scanner": "scanner-primary", "fingerprint": "ef40a775d569abc5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0091cadd5345797d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-fhnw-empower-xl.ts:104"}, "properties": {"repobilityId": "4b43aa1250a730bb", "scanner": "scanner-primary", "fingerprint": "0091cadd5345797d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f13584df33948344", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ks/scrape-hutchinson.ts:62"}, "properties": {"repobilityId": "3145c8260bffe4de", "scanner": "scanner-primary", "fingerprint": "f13584df33948344", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07afb1393af78a2a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-hutchinson.ts:107"}, "properties": {"repobilityId": "ec536bcff1095359", "scanner": "scanner-primary", "fingerprint": "07afb1393af78a2a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9d29689e7349c63", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ks/scrape-salina.ts:103"}, "properties": {"repobilityId": "f011a714e3048244", "scanner": "scanner-primary", "fingerprint": "b9d29689e7349c63", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-534867d307e623c8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vwu.ts:49"}, "properties": {"repobilityId": "6940f0dbaa66039c", "scanner": "scanner-primary", "fingerprint": "534867d307e623c8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f41eb6bbab9688c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/va/scrape-camp-pdf-programs.ts:192"}, "properties": {"repobilityId": "f4527dae3cfbcb8a", "scanner": "scanner-primary", "fingerprint": "5f41eb6bbab9688c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-830acb2f719d7a08", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-camp-pdf-programs.ts:75"}, "properties": {"repobilityId": "ac2e7138e5a33d0e", "scanner": "scanner-primary", "fingerprint": "830acb2f719d7a08", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c560465a2c69a60b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-vhcc-pdf-programs.ts:103"}, "properties": {"repobilityId": "fedb85040769c028", "scanner": "scanner-primary", "fingerprint": "c560465a2c69a60b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c343424dd909559b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vcu.ts:59"}, "properties": {"repobilityId": "92a06dc5565fde46", "scanner": "scanner-primary", "fingerprint": "c343424dd909559b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5aa8ea8263e77755", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-uva.ts:48"}, "properties": {"repobilityId": "c1bd3d6c0406c8b2", "scanner": "scanner-primary", "fingerprint": "5aa8ea8263e77755", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5c467ba3e6eeb84", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/va/scrape-transfer-odu.ts:68"}, "properties": {"repobilityId": "43eecbf76c770fc1", "scanner": "scanner-primary", "fingerprint": "b5c467ba3e6eeb84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8021e1ca5693722c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-odu.ts:48"}, "properties": {"repobilityId": "4bcae583fcae57bb", "scanner": "scanner-primary", "fingerprint": "8021e1ca5693722c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3e5c6422bf6255b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-equiv.ts:51"}, "properties": {"repobilityId": "acccecc3e511ab06", "scanner": "scanner-primary", "fingerprint": "3e5c6422bf6255b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f065317d13aece5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-gmu.ts:54"}, "properties": {"repobilityId": "547b205d9ac2658e", "scanner": "scanner-primary", "fingerprint": "4f065317d13aece5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d60bc426da826f2", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/va/scrape-catalog-prereqs.ts:66"}, "properties": {"repobilityId": "647f5234a9cce76c", "scanner": "scanner-primary", "fingerprint": "0d60bc426da826f2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55a4eb0b0fcfd75b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-catalog-prereqs.ts:59"}, "properties": {"repobilityId": "30699027325dc20f", "scanner": "scanner-primary", "fingerprint": "55a4eb0b0fcfd75b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a4f33291fdbc2f1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/va/scrape-transfer-vsu.ts:60"}, "properties": {"repobilityId": "50f26af7f89f4585", "scanner": "scanner-primary", "fingerprint": "5a4f33291fdbc2f1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c4d8c91fe2070fc1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/va/enrich-peoplesoft.ts:610"}, "properties": {"repobilityId": "e109c32757f06c04", "scanner": "scanner-primary", "fingerprint": "c4d8c91fe2070fc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c802fffc01c0a247", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/va/scrape-peoplesoft.ts:36"}, "properties": {"repobilityId": "a90410682401e33a", "scanner": "scanner-primary", "fingerprint": "c802fffc01c0a247", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b7180a7a152f857", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/va/__tests__/scrape-vccs.test.ts:263"}, "properties": {"repobilityId": "9b85b70fc9d038eb", "scanner": "scanner-primary", "fingerprint": "3b7180a7a152f857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c29b0051b8c53720", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ky/scrape-courses.ts:86"}, "properties": {"repobilityId": "825e00150b8fc044", "scanner": "scanner-primary", "fingerprint": "c29b0051b8c53720", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a740303bed4832ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/ky/scrape-transfer-collegesource-tes.ts:475"}, "properties": {"repobilityId": "16dad4e3f09567a5", "scanner": "scanner-primary", "fingerprint": "a740303bed4832ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-902cd8e869c405f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ky/scrape-programs.ts:28"}, "properties": {"repobilityId": "7b5e40eec02de0c7", "scanner": "scanner-primary", "fingerprint": "902cd8e869c405f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-92d334a7d90d366d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-purdue.ts:92"}, "properties": {"repobilityId": "365638e0b2de4355", "scanner": "scanner-primary", "fingerprint": "92d334a7d90d366d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dbcfe250ae542b39", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/in/scrape-transfer-iu.ts:83"}, "properties": {"repobilityId": "fb9b76bd47cc2c72", "scanner": "scanner-primary", "fingerprint": "dbcfe250ae542b39", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c534f4499485af5", "level": "none", "message": {"text": "Commented-code block (6 lines) in components/AnswerCard.tsx:4"}, "properties": {"repobilityId": "26f8e96c903aa7a3", "scanner": "scanner-primary", "fingerprint": "9c534f4499485af5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e2a83b45cd76dc7", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/SemesterPlanner.tsx:538"}, "properties": {"repobilityId": "91006e2e1d6e20a1", "scanner": "scanner-primary", "fingerprint": "1e2a83b45cd76dc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42298c4a0df2f44e", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/ProgramRequirements.tsx:224"}, "properties": {"repobilityId": "4fae80e6ff08417e", "scanner": "scanner-primary", "fingerprint": "42298c4a0df2f44e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a721913a92703d2d", "level": "none", "message": {"text": "Commented-code block (8 lines) in components/StartingSoonCallout.tsx:2"}, "properties": {"repobilityId": "653c1558fafd687d", "scanner": "scanner-primary", "fingerprint": "a721913a92703d2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-770b22d378cdee86", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/AdSenseScript.tsx:11"}, "properties": {"repobilityId": "90a6c04442dac5c7", "scanner": "scanner-primary", "fingerprint": "770b22d378cdee86", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7240c3ea24e53114", "level": "none", "message": {"text": "Commented-code block (5 lines) in components/HomeFeatureCards.tsx:10"}, "properties": {"repobilityId": "e9a5e62f03044782", "scanner": "scanner-primary", "fingerprint": "7240c3ea24e53114", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-499e4affa87ae904", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/layout.tsx:62"}, "properties": {"repobilityId": "cb19f9406699fcfd", "scanner": "scanner-primary", "fingerprint": "499e4affa87ae904", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38ea219de3aac790", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/colleges/page.tsx:126"}, "properties": {"repobilityId": "8175a6da9a241661", "scanner": "scanner-primary", "fingerprint": "38ea219de3aac790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d554adba21af5dd", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/auth/callback/route.ts:38"}, "properties": {"repobilityId": "5d9eef1a0b9096de", "scanner": "scanner-primary", "fingerprint": "4d554adba21af5dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93935d3e9e276be0", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/account/delete/route.ts:79"}, "properties": {"repobilityId": "93f1061669ece6bb", "scanner": "scanner-primary", "fingerprint": "93935d3e9e276be0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1804153ea2da66da", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/[state]/ask/route.ts:10"}, "properties": {"repobilityId": "ac555c39427d6405", "scanner": "scanner-primary", "fingerprint": "1804153ea2da66da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-768dca6ba317de39", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/[state]/sections-for-courses/route.ts:137"}, "properties": {"repobilityId": "0d7f1a4614374555", "scanner": "scanner-primary", "fingerprint": "768dca6ba317de39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-739e509ca074fa03", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/[state]/courses/search/route.ts:66"}, "properties": {"repobilityId": "5ed02a58bb2efce1", "scanner": "scanner-primary", "fingerprint": "739e509ca074fa03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc38027dc29088e3", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/api/[state]/college/[id]/courses/[prefix]/route.ts:10"}, "properties": {"repobilityId": "b9d68951d0390778", "scanner": "scanner-primary", "fingerprint": "bc38027dc29088e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5a526b1ffd6c95e", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/sitemap/courses.xml/route.ts:22"}, "properties": {"repobilityId": "c4ce602356bb367c", "scanner": "scanner-primary", "fingerprint": "d5a526b1ffd6c95e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd16a7cf3b67f4eb", "level": "none", "message": {"text": "Commented-code block (11 lines) in app/sitemap/college-subjects.xml/route.ts:10"}, "properties": {"repobilityId": "2f28b5ded4157482", "scanner": "scanner-primary", "fingerprint": "bd16a7cf3b67f4eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1542e46f926a2f9", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/[state]/page.tsx:21"}, "properties": {"repobilityId": "9f0d93bde4e278f3", "scanner": "scanner-primary", "fingerprint": "f1542e46f926a2f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60233d4e4f0b313c", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/layout.tsx:57"}, "properties": {"repobilityId": "e322a6a54a781063", "scanner": "scanner-primary", "fingerprint": "60233d4e4f0b313c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c89ed241f23fa80b", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[state]/schedule/page.tsx:13"}, "properties": {"repobilityId": "c9a562a8de4ae118", "scanner": "scanner-primary", "fingerprint": "c89ed241f23fa80b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9efbd7c6c8808dfd", "level": "none", "message": {"text": "Commented-code block (11 lines) in app/[state]/transfer/page.tsx:51"}, "properties": {"repobilityId": "97b5fa910dc676fd", "scanner": "scanner-primary", "fingerprint": "9efbd7c6c8808dfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f0675db2dddef7a6", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/transfer/TransferClient.tsx:117"}, "properties": {"repobilityId": "c0f6900a22f32cd3", "scanner": "scanner-primary", "fingerprint": "f0675db2dddef7a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41fd0ce364cff17f", "level": "none", "message": {"text": "Commented-code block (9 lines) in app/[state]/transfer/to/[universitySlug]/page.tsx:100"}, "properties": {"repobilityId": "ef9172273f27f3a6", "scanner": "scanner-primary", "fingerprint": "41fd0ce364cff17f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2f110a2aef4a5f4", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[state]/subject/[prefix]/page.tsx:44"}, "properties": {"repobilityId": "8a5b1acdaba1481d", "scanner": "scanner-primary", "fingerprint": "f2f110a2aef4a5f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b29d9e1871cdacfd", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/[state]/courses/page.tsx:12"}, "properties": {"repobilityId": "e0c117831d81c8ef", "scanner": "scanner-primary", "fingerprint": "b29d9e1871cdacfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a6d138b81e4e5ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/courses/CourseSearchClient.tsx:114"}, "properties": {"repobilityId": "4d630018f61dc6c2", "scanner": "scanner-primary", "fingerprint": "2a6d138b81e4e5ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-757525805f35a733", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/courses/CourseSearchClient.tsx:461"}, "properties": {"repobilityId": "b5cb9a2f059f0ca5", "scanner": "scanner-primary", "fingerprint": "757525805f35a733", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-940f7a32614e5c13", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[state]/college/[id]/TopProgramsSection.tsx:62"}, "properties": {"repobilityId": "9e3218fb79e5323b", "scanner": "scanner-primary", "fingerprint": "940f7a32614e5c13", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e57c19a75b9ba527", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeMap.tsx:7"}, "properties": {"repobilityId": "1e00c40d064a5e98", "scanner": "scanner-primary", "fingerprint": "e57c19a75b9ba527", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ebce2806c6d36c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/college/[id]/CollegeTermSection.tsx:98"}, "properties": {"repobilityId": "7cd238c0970809ff", "scanner": "scanner-primary", "fingerprint": "9ebce2806c6d36c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a49699eb130f000b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/college/[id]/CollegeTermSection.tsx:77"}, "properties": {"repobilityId": "fc896e3bd753714e", "scanner": "scanner-primary", "fingerprint": "a49699eb130f000b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1e447a39d84f2314", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[state]/college/[id]/page.tsx:84"}, "properties": {"repobilityId": "caa4898093aba867", "scanner": "scanner-primary", "fingerprint": "1e447a39d84f2314", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-273151b833317ac8", "level": "none", "message": {"text": "Commented-code block (10 lines) in app/[state]/college/[id]/program/[slug]/page.tsx:53"}, "properties": {"repobilityId": "994d115f4f081e2a", "scanner": "scanner-primary", "fingerprint": "273151b833317ac8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0508a2e22fc7598b", "level": "none", "message": {"text": "Commented-code block (11 lines) in app/[state]/course/[code]/page.tsx:43"}, "properties": {"repobilityId": "05c86fdc921cdbd5", "scanner": "scanner-primary", "fingerprint": "0508a2e22fc7598b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-455f3c8f6b468c97", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/[state]/plan/page.tsx:21"}, "properties": {"repobilityId": "6a5f9efe3565102c", "scanner": "scanner-primary", "fingerprint": "455f3c8f6b468c97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efc9cf93763eeeb8", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/[state]/program/[slug]/page.tsx:53"}, "properties": {"repobilityId": "36cee35f6c197fd1", "scanner": "scanner-primary", "fingerprint": "efc9cf93763eeeb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fb483e1a077e0cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/[state]/starting-soon/StartingSoonClient.tsx:124"}, "properties": {"repobilityId": "c937c22702a0f980", "scanner": "scanner-primary", "fingerprint": "0fb483e1a077e0cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c3f5b486d584e2d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/plan/[id]/page.tsx:76"}, "properties": {"repobilityId": "90e6180cf53ef57b", "scanner": "scanner-primary", "fingerprint": "c3f5b486d584e2d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32c468f28359cad4", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/geo.ts:3"}, "properties": {"repobilityId": "5a689e9584ce3cda", "scanner": "scanner-primary", "fingerprint": "32c468f28359cad4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06e75231c68522fa", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/auth-providers.tsx:3"}, "properties": {"repobilityId": "6b014e899727ed99", "scanner": "scanner-primary", "fingerprint": "06e75231c68522fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a33ddfb49779947b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/courses.ts:4"}, "properties": {"repobilityId": "51333f4af2fa4d01", "scanner": "scanner-primary", "fingerprint": "a33ddfb49779947b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21be991716923d8b", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/state-insights.ts:210"}, "properties": {"repobilityId": "86aa21ab32c4e049", "scanner": "scanner-primary", "fingerprint": "21be991716923d8b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dde0a7e6d510f10e", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/institutions.ts:58"}, "properties": {"repobilityId": "1d5f7f74624925cf", "scanner": "scanner-primary", "fingerprint": "dde0a7e6d510f10e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0bf4e555dfc5a9fa", "level": "none", "message": {"text": "Commented-code block (12 lines) in lib/transfer.ts:129"}, "properties": {"repobilityId": "b81fcbc7bef8a034", "scanner": "scanner-primary", "fingerprint": "0bf4e555dfc5a9fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3346046b109e0090", "level": "none", "message": {"text": "Commented-code block (10 lines) in lib/seats.ts:3"}, "properties": {"repobilityId": "88d2b0d3d1d878f9", "scanner": "scanner-primary", "fingerprint": "3346046b109e0090", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d62a755110ee5fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/transfer-rank.ts:3"}, "properties": {"repobilityId": "c7a3ebd16f267efa", "scanner": "scanner-primary", "fingerprint": "3d62a755110ee5fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38e1f1206ef69488", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/schemas.ts:30"}, "properties": {"repobilityId": "439e73d1c8bf9d38", "scanner": "scanner-primary", "fingerprint": "38e1f1206ef69488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85f439417e294d5d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/schedule.ts:294"}, "properties": {"repobilityId": "9577f177479a15be", "scanner": "scanner-primary", "fingerprint": "85f439417e294d5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7305e27ca62a8a50", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/seat-watch-match.ts:95"}, "properties": {"repobilityId": "2b71d79e8f2fa1cd", "scanner": "scanner-primary", "fingerprint": "7305e27ca62a8a50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52495aff7426e67c", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/prereq-groups.ts:1"}, "properties": {"repobilityId": "2bd2edc852282ba7", "scanner": "scanner-primary", "fingerprint": "52495aff7426e67c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47e9cb230b398d23", "level": "none", "message": {"text": "Commented-code block (12 lines) in lib/courses-search.ts:96"}, "properties": {"repobilityId": "4b87f27e591d425d", "scanner": "scanner-primary", "fingerprint": "47e9cb230b398d23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90fff98be6e227fa", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/terms.ts:64"}, "properties": {"repobilityId": "944d835c54d54e6d", "scanner": "scanner-primary", "fingerprint": "90fff98be6e227fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-68df8e6742d0926b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/college-insights.ts:147"}, "properties": {"repobilityId": "e4f2465a319758e3", "scanner": "scanner-primary", "fingerprint": "68df8e6742d0926b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f9286b30f39a4de", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/__tests__/transfer.test.ts:297"}, "properties": {"repobilityId": "dbfab04bcb188192", "scanner": "scanner-primary", "fingerprint": "6f9286b30f39a4de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d62a6db22dc79f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/__tests__/courses-titles-for-subject.test.ts:3"}, "properties": {"repobilityId": "28e29984f7e8d95d", "scanner": "scanner-primary", "fingerprint": "4d62a6db22dc79f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6f5106f3b77b1e1", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/cache.ts:10"}, "properties": {"repobilityId": "04a5b470bd679dd9", "scanner": "scanner-primary", "fingerprint": "f6f5106f3b77b1e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e98575dd08145f42", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/search-intent/prompt.ts:6"}, "properties": {"repobilityId": "55a20a874fa5f257", "scanner": "scanner-primary", "fingerprint": "e98575dd08145f42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c1cff834155bb76", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/classify-local.ts:3"}, "properties": {"repobilityId": "add8683c6e0b55d1", "scanner": "scanner-primary", "fingerprint": "8c1cff834155bb76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cdfe59a22cdea18", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/search-intent/types.ts:92"}, "properties": {"repobilityId": "052e28da7618c643", "scanner": "scanner-primary", "fingerprint": "3cdfe59a22cdea18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1f1538357835d18", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/no-answer.ts:3"}, "properties": {"repobilityId": "e10981d858ab2cea", "scanner": "scanner-primary", "fingerprint": "e1f1538357835d18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff0ac73a35a52ca0", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/prereqs.ts:31"}, "properties": {"repobilityId": "8977d2e62d899839", "scanner": "scanner-primary", "fingerprint": "ff0ac73a35a52ca0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-423211bad078cb4f", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/search-intent/answer/pathway.ts:154"}, "properties": {"repobilityId": "97097c9c3a3526f9", "scanner": "scanner-primary", "fingerprint": "423211bad078cb4f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8cfd1a13f627af2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/eligibility.ts:3"}, "properties": {"repobilityId": "ffe361f78cd5b7b9", "scanner": "scanner-primary", "fingerprint": "8cfd1a13f627af2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa1032865f4c9cf3", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/search-intent/answer/resolve-course.ts:8"}, "properties": {"repobilityId": "c5e103fc2535be4c", "scanner": "scanner-primary", "fingerprint": "aa1032865f4c9cf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e2cd5fd5347df7c", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/programs/plan-shared.ts:61"}, "properties": {"repobilityId": "d6bb40cd9a3b8d3f", "scanner": "scanner-primary", "fingerprint": "8e2cd5fd5347df7c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7bf32553100599ab", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in lib/programs/planner.ts:58"}, "properties": {"repobilityId": "bfaff57b3cf0c828", "scanner": "scanner-primary", "fingerprint": "7bf32553100599ab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b5e47a310a486b3e", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/programs/planner.ts:364"}, "properties": {"repobilityId": "2c17620dbcb5e9b1", "scanner": "scanner-primary", "fingerprint": "b5e47a310a486b3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c879eca953c705b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/programs/index.ts:41"}, "properties": {"repobilityId": "f43e478f6d7c549a", "scanner": "scanner-primary", "fingerprint": "2c879eca953c705b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b42cf70d5b5fa2f8", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/programs/__tests__/choose.test.ts:282"}, "properties": {"repobilityId": "fd1265eb941357f7", "scanner": "scanner-primary", "fingerprint": "b42cf70d5b5fa2f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-201c2dec32041d78", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/programs/__tests__/planner.test.ts:4"}, "properties": {"repobilityId": "f8dbda9634ae1823", "scanner": "scanner-primary", "fingerprint": "201c2dec32041d78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b6af994dc7c487b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/registry.ts:146"}, "properties": {"repobilityId": "b13b84552fe248dc", "scanner": "scanner-primary", "fingerprint": "7b6af994dc7c487b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e4fc69714f29a71", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/id/config.ts:3"}, "properties": {"repobilityId": "981e413f7dbe9a1a", "scanner": "scanner-primary", "fingerprint": "1e4fc69714f29a71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-968bac49d273f3ad", "level": "none", "message": {"text": "Commented-code block (13 lines) in lib/states/mo/config.ts:49"}, "properties": {"repobilityId": "64ff2dfaf47922cd", "scanner": "scanner-primary", "fingerprint": "968bac49d273f3ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26e3e796e9408806", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/wa/config.ts:63"}, "properties": {"repobilityId": "49b08e31b796f759", "scanner": "scanner-primary", "fingerprint": "26e3e796e9408806", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6721172e1bac8c42", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/states/ne/config.ts:76"}, "properties": {"repobilityId": "8bd8bef0523191ce", "scanner": "scanner-primary", "fingerprint": "6721172e1bac8c42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a55b3afc49da834b", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/ia/config.ts:58"}, "properties": {"repobilityId": "71dc10028ef64bc5", "scanner": "scanner-primary", "fingerprint": "a55b3afc49da834b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30db4571a057be62", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/ar/config.ts:8"}, "properties": {"repobilityId": "573204c58c14e73e", "scanner": "scanner-primary", "fingerprint": "30db4571a057be62", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-480de8997f7ed4d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/pa/config.ts:70"}, "properties": {"repobilityId": "3694c226cc903e83", "scanner": "scanner-primary", "fingerprint": "480de8997f7ed4d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c34bb93063cc88d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/ms/config.ts:75"}, "properties": {"repobilityId": "fd1a7fedb1a301c0", "scanner": "scanner-primary", "fingerprint": "2c34bb93063cc88d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-891450b1f8286c45", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/fl/config.ts:23"}, "properties": {"repobilityId": "5a0684dbda07c5a5", "scanner": "scanner-primary", "fingerprint": "891450b1f8286c45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26347b9969752e74", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/states/mt/config.ts:71"}, "properties": {"repobilityId": "e870d3b8a76d85aa", "scanner": "scanner-primary", "fingerprint": "26347b9969752e74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8482e60258fa70ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/nh/config.ts:23"}, "properties": {"repobilityId": "e119d6194c95a2e0", "scanner": "scanner-primary", "fingerprint": "8482e60258fa70ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd6a6d3a57ac1d50", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/la/config.ts:47"}, "properties": {"repobilityId": "c0dfb00ed0618d15", "scanner": "scanner-primary", "fingerprint": "cd6a6d3a57ac1d50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76074b81861b58ed", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/mi/config.ts:108"}, "properties": {"repobilityId": "17f9aa9c4081b879", "scanner": "scanner-primary", "fingerprint": "76074b81861b58ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74be5a161f744f2e", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/az/config.ts:11"}, "properties": {"repobilityId": "f9c50331ae77bd5c", "scanner": "scanner-primary", "fingerprint": "74be5a161f744f2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-829bc90aa5a80fa2", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/il/config.ts:60"}, "properties": {"repobilityId": "43e86fefa19243c5", "scanner": "scanner-primary", "fingerprint": "829bc90aa5a80fa2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-41f8ce93a98a5987", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/ca/config.ts:70"}, "properties": {"repobilityId": "cd46716a10469847", "scanner": "scanner-primary", "fingerprint": "41f8ce93a98a5987", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4233cb275fcd3fc", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/states/mn/config.ts:93"}, "properties": {"repobilityId": "01c1643d20170932", "scanner": "scanner-primary", "fingerprint": "d4233cb275fcd3fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-954d37eae99c706f", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/ak/config.ts:11"}, "properties": {"repobilityId": "3702cf03abbb1e7b", "scanner": "scanner-primary", "fingerprint": "954d37eae99c706f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea63ab0195a91871", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/co/config.ts:81"}, "properties": {"repobilityId": "3ac0217889d04dad", "scanner": "scanner-primary", "fingerprint": "ea63ab0195a91871", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c405ec0a33f5adb", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/states/dc/config.ts:23"}, "properties": {"repobilityId": "20372a26c505beb3", "scanner": "scanner-primary", "fingerprint": "9c405ec0a33f5adb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83b7a567c4e03d18", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/ut/config.ts:6"}, "properties": {"repobilityId": "11fd2223995a3f3d", "scanner": "scanner-primary", "fingerprint": "83b7a567c4e03d18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b7a39f6e8c872f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/hi/config.ts:53"}, "properties": {"repobilityId": "ab56dd2120f69825", "scanner": "scanner-primary", "fingerprint": "5b7a39f6e8c872f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-032485723705d935", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/me/config.ts:23"}, "properties": {"repobilityId": "7353bea928c445d1", "scanner": "scanner-primary", "fingerprint": "032485723705d935", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18c26f1d41e287ce", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/nm/config.ts:68"}, "properties": {"repobilityId": "e486744f9d3d0234", "scanner": "scanner-primary", "fingerprint": "18c26f1d41e287ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d311c956149d6b8", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/wv/config.ts:76"}, "properties": {"repobilityId": "55aa4c9549a13b71", "scanner": "scanner-primary", "fingerprint": "2d311c956149d6b8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21deecef6273274d", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/states/nc/config.ts:160"}, "properties": {"repobilityId": "8b0bcfde4033db34", "scanner": "scanner-primary", "fingerprint": "21deecef6273274d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9268722aa17efc94", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/states/sd/config.ts:11"}, "properties": {"repobilityId": "2f80fc7afa968305", "scanner": "scanner-primary", "fingerprint": "9268722aa17efc94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57d5996d928c8e9d", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/or/config.ts:74"}, "properties": {"repobilityId": "1a2204a0d8d7e4ea", "scanner": "scanner-primary", "fingerprint": "57d5996d928c8e9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12c6db2fa3975805", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/states/ok/config.ts:3"}, "properties": {"repobilityId": "8ef6f51de5a7aa8c", "scanner": "scanner-primary", "fingerprint": "12c6db2fa3975805", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40e4e9398c146e28", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/al/config.ts:11"}, "properties": {"repobilityId": "013350da4b671808", "scanner": "scanner-primary", "fingerprint": "40e4e9398c146e28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc520c63bbf0bd48", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/wi/config.ts:84"}, "properties": {"repobilityId": "ddcb7a3e588eb146", "scanner": "scanner-primary", "fingerprint": "cc520c63bbf0bd48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa4648a6f2faf96e", "level": "none", "message": {"text": "Commented-code block (10 lines) in lib/states/vt/config.ts:64"}, "properties": {"repobilityId": "5a2a2da48bcea90e", "scanner": "scanner-primary", "fingerprint": "aa4648a6f2faf96e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4191e1a25fd16675", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/nd/config.ts:3"}, "properties": {"repobilityId": "30f58a28de4e3b16", "scanner": "scanner-primary", "fingerprint": "4191e1a25fd16675", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1506835775be48e4", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/states/ma/config.ts:23"}, "properties": {"repobilityId": "c884a09e7bd40efa", "scanner": "scanner-primary", "fingerprint": "1506835775be48e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae631c10624c94d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/tn/config.ts:3"}, "properties": {"repobilityId": "2cc2295479c07b4e", "scanner": "scanner-primary", "fingerprint": "ae631c10624c94d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71484fc566753540", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/tx/config.ts:3"}, "properties": {"repobilityId": "e8266f0bb2717584", "scanner": "scanner-primary", "fingerprint": "71484fc566753540", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6a9e833d1d1fb52", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/states/ks/config.ts:11"}, "properties": {"repobilityId": "39cad7d47b4733e1", "scanner": "scanner-primary", "fingerprint": "c6a9e833d1d1fb52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-104933aada65f532", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/states/va/config.ts:64"}, "properties": {"repobilityId": "871fc07fa9fa1dd2", "scanner": "scanner-primary", "fingerprint": "104933aada65f532", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b62ec1e6591d7dd3", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/states/ky/config.ts:49"}, "properties": {"repobilityId": "4501a5ab5b6338b2", "scanner": "scanner-primary", "fingerprint": "b62ec1e6591d7dd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7534ddd4ee644a7", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/states/in/config.ts:65"}, "properties": {"repobilityId": "5942e0142fafec07", "scanner": "scanner-primary", "fingerprint": "c7534ddd4ee644a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db869d8618832505", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/llm/json-chat.ts:3"}, "properties": {"repobilityId": "89bbb0b446a3d58a", "scanner": "scanner-primary", "fingerprint": "db869d8618832505", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de2c509bdd07bd8c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/llm/json-chat.ts:111"}, "properties": {"repobilityId": "db1ed5fc0ed942af", "scanner": "scanner-primary", "fingerprint": "de2c509bdd07bd8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-66cbcc8b781e7fac", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/proxy.ts:73"}, "properties": {"repobilityId": "88dd9cd84648dc0f", "scanner": "scanner-primary", "fingerprint": "66cbcc8b781e7fac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24b9671739bafbd1", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/next.config.ts:6"}, "properties": {"repobilityId": "eab036bde7790ba7", "scanner": "scanner-primary", "fingerprint": "24b9671739bafbd1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86d0e6eed7bc782c", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ingest-bls.ts:111"}, "properties": {"repobilityId": "ad6426cb477ffb28", "scanner": "scanner-primary", "fingerprint": "86d0e6eed7bc782c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a2445939d2b42ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ingest-bls.ts:86"}, "properties": {"repobilityId": "763dd423990d418e", "scanner": "scanner-primary", "fingerprint": "8a2445939d2b42ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee3fa0de6267d164", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/scorecard-map.ts:207"}, "properties": {"repobilityId": "6730c14486c6d40b", "scanner": "scanner-primary", "fingerprint": "ee3fa0de6267d164", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce7c0851d8601baf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-colleague.ts:225"}, "properties": {"repobilityId": "9dd86beea5588616", "scanner": "scanner-primary", "fingerprint": "ce7c0851d8601baf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c299234825a98d61", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-transfer-artsys.ts:253"}, "properties": {"repobilityId": "738b9b0dc5baaa04", "scanner": "scanner-primary", "fingerprint": "c299234825a98d61", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-634c33f1bc2df345", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:150"}, "properties": {"repobilityId": "c6bfe7a69992f508", "scanner": "scanner-primary", "fingerprint": "634c33f1bc2df345", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e06fbafc10c8722", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/md/scrape-custom.ts:163"}, "properties": {"repobilityId": "c784dae01af619d9", "scanner": "scanner-primary", "fingerprint": "8e06fbafc10c8722", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-689bf5c2a4ad4820", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/md/scrape-banner-ssb.ts:481"}, "properties": {"repobilityId": "a701c5700c6b1cf9", "scanner": "scanner-primary", "fingerprint": "689bf5c2a4ad4820", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e64635a150394eb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mo/scrape-transfer-core42.ts:116"}, "properties": {"repobilityId": "f769fd639431ee5c", "scanner": "scanner-primary", "fingerprint": "2e64635a150394eb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fdfb92c1c83e75c5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-ctclink.ts:248"}, "properties": {"repobilityId": "5a5c58f7730da28a", "scanner": "scanner-primary", "fingerprint": "fdfb92c1c83e75c5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4d4c97bf27d1d788", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wa/scrape-transfer-uw.ts:110"}, "properties": {"repobilityId": "b1565a764867e534", "scanner": "scanner-primary", "fingerprint": "4d4c97bf27d1d788", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5df7db7185d3d3e7", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acts-catalogs.ts:205"}, "properties": {"repobilityId": "5e16a77b311fbcd0", "scanner": "scanner-primary", "fingerprint": "5df7db7185d3d3e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71e38169d981b2ce", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ozarka.ts:189"}, "properties": {"repobilityId": "a906b2c688f4c4f0", "scanner": "scanner-primary", "fingerprint": "71e38169d981b2ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d40f4b8bc2ededb", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:59"}, "properties": {"repobilityId": "c036842cf938d15c", "scanner": "scanner-primary", "fingerprint": "0d40f4b8bc2ededb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f69eba9d9ba6594e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ar/scrape-nwacc.ts:167"}, "properties": {"repobilityId": "23bceee31e98d4e4", "scanner": "scanner-primary", "fingerprint": "f69eba9d9ba6594e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ae2a74e998c95fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-seark-pdf-programs.ts:84"}, "properties": {"repobilityId": "d395a5dcdc30f2a3", "scanner": "scanner-primary", "fingerprint": "3ae2a74e998c95fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d458e81ae3e3434", "level": "none", "message": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-asu-jonesboro.ts:88"}, "properties": {"repobilityId": "f1effe3b110f33b8", "scanner": "scanner-primary", "fingerprint": "3d458e81ae3e3434", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-741708560de7f011", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-transfer-acalog-harvest.ts:76"}, "properties": {"repobilityId": "00a22b36acae3c18", "scanner": "scanner-primary", "fingerprint": "741708560de7f011", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dc07c3a1e4fe157", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-ua-powerbi.ts:95"}, "properties": {"repobilityId": "5a98ce9d6780ae22", "scanner": "scanner-primary", "fingerprint": "2dc07c3a1e4fe157", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-328d5c24a7815c16", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ar/scrape-npc.ts:70"}, "properties": {"repobilityId": "c510e9c447633de7", "scanner": "scanner-primary", "fingerprint": "328d5c24a7815c16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bca9d5ee95463b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-westmoreland.ts:127"}, "properties": {"repobilityId": "ebe05f74202dec12", "scanner": "scanner-primary", "fingerprint": "8bca9d5ee95463b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-641e10a4e4a5a2c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-transfer.ts:72"}, "properties": {"repobilityId": "6b845783584c9025", "scanner": "scanner-primary", "fingerprint": "641e10a4e4a5a2c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5e7df50392bca401", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-northampton.ts:178"}, "properties": {"repobilityId": "aa51bcce95d5b3a1", "scanner": "scanner-primary", "fingerprint": "5e7df50392bca401", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-39afd7d5347b36f6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/pa/scrape-pitt-tes.ts:180"}, "properties": {"repobilityId": "968b7ca07fa975d0", "scanner": "scanner-primary", "fingerprint": "39afd7d5347b36f6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5aef74b4b639e003", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cayuga.ts:82"}, "properties": {"repobilityId": "c138c30313cddcfd", "scanner": "scanner-primary", "fingerprint": "5aef74b4b639e003", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a436a290ce414f6d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-herkimer.ts:67"}, "properties": {"repobilityId": "bd79296dee348b37", "scanner": "scanner-primary", "fingerprint": "a436a290ce414f6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d3e989eb15054102", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-suny-acalog-prereqs.ts:172"}, "properties": {"repobilityId": "05dac8512abffdc4", "scanner": "scanner-primary", "fingerprint": "d3e989eb15054102", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6391b7ca0321c2c6", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:205"}, "properties": {"repobilityId": "a15619cad4358a22", "scanner": "scanner-primary", "fingerprint": "6391b7ca0321c2c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf21a97a94cfcbd1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-cuny.ts:127"}, "properties": {"repobilityId": "997c6c797ec7d974", "scanner": "scanner-primary", "fingerprint": "bf21a97a94cfcbd1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ebc0ac70112c1395", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-catalog-prereqs.ts:13"}, "properties": {"repobilityId": "bb535d192bb9425f", "scanner": "scanner-primary", "fingerprint": "ebc0ac70112c1395", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7dc716c6b68d5040", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:260"}, "properties": {"repobilityId": "a5bdbbd13677e9c9", "scanner": "scanner-primary", "fingerprint": "7dc716c6b68d5040", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-388c68ddf83b9588", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ny/scrape-transfer-trex.ts:160"}, "properties": {"repobilityId": "38bbaaf5cb24e285", "scanner": "scanner-primary", "fingerprint": "388c68ddf83b9588", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-172b2d0892e96898", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ms/scrape-catalog-prereqs.ts:149"}, "properties": {"repobilityId": "8dd01ee62a1cf68f", "scanner": "scanner-primary", "fingerprint": "172b2d0892e96898", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d1470f1fbb5b3c47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-easternflorida.ts:71"}, "properties": {"repobilityId": "12ed985877cb78d6", "scanner": "scanner-primary", "fingerprint": "d1470f1fbb5b3c47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c69a57eb78e6057", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:33"}, "properties": {"repobilityId": "cbac46291bf9a903", "scanner": "scanner-primary", "fingerprint": "9c69a57eb78e6057", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa2df12fbcd5b6c9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-scns-flatfile.ts:168"}, "properties": {"repobilityId": "4549df61f87ab96b", "scanner": "scanner-primary", "fingerprint": "fa2df12fbcd5b6c9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3d70a52147f4dfb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-spcollege.ts:112"}, "properties": {"repobilityId": "b02f8752639985ac", "scanner": "scanner-primary", "fingerprint": "3d70a52147f4dfb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8bb3a3e85b642a45", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-mdc.ts:182"}, "properties": {"repobilityId": "6deb481bb7cc2462", "scanner": "scanner-primary", "fingerprint": "8bb3a3e85b642a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-59e083776daad569", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:27"}, "properties": {"repobilityId": "ba02d9bd73255645", "scanner": "scanner-primary", "fingerprint": "59e083776daad569", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d1c098d0910d732", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-banner-ssb.ts:302"}, "properties": {"repobilityId": "86de99d4f915d027", "scanner": "scanner-primary", "fingerprint": "7d1c098d0910d732", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6e466cee2e8b8c09", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:102"}, "properties": {"repobilityId": "eebff503e84fa923", "scanner": "scanner-primary", "fingerprint": "6e466cee2e8b8c09", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c54fc8f6e7b71865", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/fl/scrape-broward.ts:96"}, "properties": {"repobilityId": "d14253a2bbee5a8d", "scanner": "scanner-primary", "fingerprint": "c54fc8f6e7b71865", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dcc53300c503ed30", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mt/scrape-skc.ts:124"}, "properties": {"repobilityId": "0b9ee58e1a07d605", "scanner": "scanner-primary", "fingerprint": "dcc53300c503ed30", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5a8d94264902339a", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-smartcatalogiq-programs.ts:82"}, "properties": {"repobilityId": "c6c6691cdfaa3ce2", "scanner": "scanner-primary", "fingerprint": "5a8d94264902339a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b557a37320efdd00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-uga.ts:129"}, "properties": {"repobilityId": "ae6a9e9d7136b33b", "scanner": "scanner-primary", "fingerprint": "b557a37320efdd00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fad602c8f203626d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gatech.ts:152"}, "properties": {"repobilityId": "ecba20fa1f195cfd", "scanner": "scanner-primary", "fingerprint": "fad602c8f203626d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-737acc5c8af7ca51", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-banner-ssb.ts:314"}, "properties": {"repobilityId": "78848038f834b22a", "scanner": "scanner-primary", "fingerprint": "737acc5c8af7ca51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5119091219a4f99d", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:58"}, "properties": {"repobilityId": "23c4a49f8ab04a25", "scanner": "scanner-primary", "fingerprint": "5119091219a4f99d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e02fc8177d78805a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-transfer-gsu.ts:110"}, "properties": {"repobilityId": "7ea4618a213634ed", "scanner": "scanner-primary", "fingerprint": "e02fc8177d78805a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-561ffbb55993d3a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ga/scrape-tcsg-pdf-programs.ts:78"}, "properties": {"repobilityId": "db2d7598622f7983", "scanner": "scanner-primary", "fingerprint": "561ffbb55993d3a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-94b23c9463b9a985", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-banner8.ts:80"}, "properties": {"repobilityId": "446ba726453b7553", "scanner": "scanner-primary", "fingerprint": "94b23c9463b9a985", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-38a04f9779c417d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer.ts:137"}, "properties": {"repobilityId": "1b452047ab248220", "scanner": "scanner-primary", "fingerprint": "38a04f9779c417d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-335816eddf4b5a13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nh/scrape-transfer-keene.ts:139"}, "properties": {"repobilityId": "fd1d3f60e035643d", "scanner": "scanner-primary", "fingerprint": "335816eddf4b5a13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5e2a3473b90e4d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/oh/scrape-transfer-osu.ts:95"}, "properties": {"repobilityId": "fcd1c45540088b90", "scanner": "scanner-primary", "fingerprint": "f5e2a3473b90e4d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6588decf74358f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-programs.ts:61"}, "properties": {"repobilityId": "9d0066bb655b93c4", "scanner": "scanner-primary", "fingerprint": "e6588decf74358f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c26e1209afa76765", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:39"}, "properties": {"repobilityId": "a27dfe600858fe73", "scanner": "scanner-primary", "fingerprint": "c26e1209afa76765", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97add0a25c7e2446", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/la/scrape-regents-matrix.ts:119"}, "properties": {"repobilityId": "73842b4dea983d29", "scanner": "scanner-primary", "fingerprint": "97add0a25c7e2446", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43ece07d619f0ffc", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/mi/scrape-colleague.ts:689"}, "properties": {"repobilityId": "35cf6c6eb02a8f2e", "scanner": "scanner-primary", "fingerprint": "43ece07d619f0ffc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a78d5e5267530c16", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-transfer-mitransfer.ts:133"}, "properties": {"repobilityId": "f3d40ce6fe9f4a0e", "scanner": "scanner-primary", "fingerprint": "a78d5e5267530c16", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3836427a993a358b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mi/scrape-banner-ssb.ts:283"}, "properties": {"repobilityId": "90e392981fb4bf2d", "scanner": "scanner-primary", "fingerprint": "3836427a993a358b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d35b45c861800aa", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-maricopa.ts:191"}, "properties": {"repobilityId": "c4eed3a3192fbd36", "scanner": "scanner-primary", "fingerprint": "7d35b45c861800aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ee6dfbe1077e1f6e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/az/scrape-jenzabar-cmc.ts:122"}, "properties": {"repobilityId": "39662b57b0cff700", "scanner": "scanner-primary", "fingerprint": "ee6dfbe1077e1f6e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dd28d9f53f650fdd", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-transfer-aztransfer.ts:50"}, "properties": {"repobilityId": "738e66eb026ade45", "scanner": "scanner-primary", "fingerprint": "dd28d9f53f650fdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1d0af9684fa5c7d", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/az/scrape-dine.ts:245"}, "properties": {"repobilityId": "d874a0a380c0ff6c", "scanner": "scanner-primary", "fingerprint": "b1d0af9684fa5c7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92be0d5cbac4646d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-ccc.ts:275"}, "properties": {"repobilityId": "f04b7d66f471d596", "scanner": "scanner-primary", "fingerprint": "92be0d5cbac4646d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1f4c7924ce219c69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-niu.ts:99"}, "properties": {"repobilityId": "835ae9961bce941f", "scanner": "scanner-primary", "fingerprint": "1f4c7924ce219c69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4cac5eec45c7a3cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/il/scrape-transfer-siu.ts:135"}, "properties": {"repobilityId": "ed06809398361877", "scanner": "scanner-primary", "fingerprint": "4cac5eec45c7a3cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-093091d2c3c779f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:237"}, "properties": {"repobilityId": "d2151bdd827583f8", "scanner": "scanner-primary", "fingerprint": "093091d2c3c779f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ebfae0463b61441", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-colleague.ts:323"}, "properties": {"repobilityId": "7cdbc3c3412efc19", "scanner": "scanner-primary", "fingerprint": "9ebfae0463b61441", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9bfb677450b6f9f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/supabase-import.ts:30"}, "properties": {"repobilityId": "27a583ee4601585c", "scanner": "scanner-primary", "fingerprint": "9bfb677450b6f9f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2feb5dbdc39a7e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/fingerprint-college.ts:87"}, "properties": {"repobilityId": "2088bcaa289eb39c", "scanner": "scanner-primary", "fingerprint": "a2feb5dbdc39a7e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab1f3222060d0f7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-smartcatalogiq-programs.ts:184"}, "properties": {"repobilityId": "6576b2ac5190257a", "scanner": "scanner-primary", "fingerprint": "ab1f3222060d0f7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a31bcc0b7e1248b", "level": "none", "message": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-colleges.ts:231"}, "properties": {"repobilityId": "251ec2443e57529e", "scanner": "scanner-primary", "fingerprint": "2a31bcc0b7e1248b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-91d7d5e6d6b6b4e8", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-cleancatalog-programs.ts:128"}, "properties": {"repobilityId": "c0970f21ce9e0f73", "scanner": "scanner-primary", "fingerprint": "91d7d5e6d6b6b4e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29e7c00d18d49893", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-collegetransfer.ts:142"}, "properties": {"repobilityId": "43a1b149b9d3a8a8", "scanner": "scanner-primary", "fingerprint": "29e7c00d18d49893", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61704e47c0cd2cb6", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:510"}, "properties": {"repobilityId": "cc06c0fa839b0157", "scanner": "scanner-primary", "fingerprint": "61704e47c0cd2cb6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0be07a271de35251", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog-programs.ts:10"}, "properties": {"repobilityId": "7e4969fa8b781954", "scanner": "scanner-primary", "fingerprint": "0be07a271de35251", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b44d3da0fa21d33", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:350"}, "properties": {"repobilityId": "ac13fd4f9604c100", "scanner": "scanner-primary", "fingerprint": "6b44d3da0fa21d33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07f38a7cc6d6460f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-coursedog.ts:222"}, "properties": {"repobilityId": "652151b9fdecd94c", "scanner": "scanner-primary", "fingerprint": "07f38a7cc6d6460f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5f7bade7845cb35d", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/discover-programs.ts:101"}, "properties": {"repobilityId": "f1201d89df51d6f4", "scanner": "scanner-primary", "fingerprint": "5f7bade7845cb35d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30bc987d9acb60ae", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/lib/resolve-terms.ts:168"}, "properties": {"repobilityId": "ceb485d874ecc1ef", "scanner": "scanner-primary", "fingerprint": "30bc987d9acb60ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-261cad5dc8a8ecae", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar-webforms.ts:124"}, "properties": {"repobilityId": "d01343cfa3f87d8d", "scanner": "scanner-primary", "fingerprint": "261cad5dc8a8ecae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23a4dbabc21f313a", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-jenzabar.ts:279"}, "properties": {"repobilityId": "e944281a7946d3db", "scanner": "scanner-primary", "fingerprint": "23a4dbabc21f313a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1620ead0ed9a6096", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-courseleaf-programs.ts:266"}, "properties": {"repobilityId": "6da0492cf5ca647a", "scanner": "scanner-primary", "fingerprint": "1620ead0ed9a6096", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5331ea882035e02", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/check-scrape-health.ts:442"}, "properties": {"repobilityId": "970e72c896870333", "scanner": "scanner-primary", "fingerprint": "b5331ea882035e02", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-402581e2e129647d", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:288"}, "properties": {"repobilityId": "b739432c2bde2f40", "scanner": "scanner-primary", "fingerprint": "402581e2e129647d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9324b19e4252c36", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-banner-ssb.ts:360"}, "properties": {"repobilityId": "321e80390adad123", "scanner": "scanner-primary", "fingerprint": "a9324b19e4252c36", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b2ce7be0b2da7b35", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/lib/articulation-portals.ts:157"}, "properties": {"repobilityId": "ab16a3cd6e530b4b", "scanner": "scanner-primary", "fingerprint": "b2ce7be0b2da7b35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-324411370217662b", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-banner-8.ts:321"}, "properties": {"repobilityId": "675609f0bf1eaa09", "scanner": "scanner-primary", "fingerprint": "324411370217662b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e00119e9d4bd0fd3", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:71"}, "properties": {"repobilityId": "88c8b13da425e2bd", "scanner": "scanner-primary", "fingerprint": "e00119e9d4bd0fd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05676b9072172ed8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/scrape-acalog-programs.ts:81"}, "properties": {"repobilityId": "f5e557eebda26424", "scanner": "scanner-primary", "fingerprint": "05676b9072172ed8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-676f05e460de7a5f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/fetch-zipcodes.ts:85"}, "properties": {"repobilityId": "81ed2831b5ed38d5", "scanner": "scanner-primary", "fingerprint": "676f05e460de7a5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a74dd4cb80ab0210", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/check-config-urls.ts:145"}, "properties": {"repobilityId": "ef057fe3e3f48f80", "scanner": "scanner-primary", "fingerprint": "a74dd4cb80ab0210", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3330eb3b1347d51b", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/scripts/lib/colleague-terms.ts:144"}, "properties": {"repobilityId": "0700acc038a6ca00", "scanner": "scanner-primary", "fingerprint": "3330eb3b1347d51b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cb27b24eeb5f92d", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/cluster-fingerprints.ts:323"}, "properties": {"repobilityId": "a24ad05aa09f3b07", "scanner": "scanner-primary", "fingerprint": "4cb27b24eeb5f92d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f155d35fa395748", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/lib/aggregate-prereqs.ts:107"}, "properties": {"repobilityId": "ec929c7b452af441", "scanner": "scanner-primary", "fingerprint": "6f155d35fa395748", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6f2b63ab54b144fc", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/scripts/lib/add-state.ts:401"}, "properties": {"repobilityId": "753517f56e0809c5", "scanner": "scanner-primary", "fingerprint": "6f2b63ab54b144fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34d3a46c8dfc8209", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/lib/in-state-institutions.ts:48"}, "properties": {"repobilityId": "d209667bf6a408a5", "scanner": "scanner-primary", "fingerprint": "34d3a46c8dfc8209", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cec8b3de202d8ace", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-colleague.ts:680"}, "properties": {"repobilityId": "e12010931193a2f5", "scanner": "scanner-primary", "fingerprint": "cec8b3de202d8ace", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecd5405b1344e52f", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nj/scrape-transfer.ts:560"}, "properties": {"repobilityId": "81ba81de3de5c39a", "scanner": "scanner-primary", "fingerprint": "ecd5405b1344e52f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-09fd5f7343ef871c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nj/scrape-banner-ssb.ts:277"}, "properties": {"repobilityId": "dbd60288072738d5", "scanner": "scanner-primary", "fingerprint": "09fd5f7343ef871c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-731df3bf28a5d864", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-sdccd.ts:221"}, "properties": {"repobilityId": "3467c2f1d496e5cd", "scanner": "scanner-primary", "fingerprint": "731df3bf28a5d864", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a894967ff5315634", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-laccd.ts:299"}, "properties": {"repobilityId": "4446dfa000e4770d", "scanner": "scanner-primary", "fingerprint": "a894967ff5315634", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a656feaa9d0a14b9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-4cd.ts:207"}, "properties": {"repobilityId": "4727dcecdefc135d", "scanner": "scanner-primary", "fingerprint": "a656feaa9d0a14b9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a0fabce57f888b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-foothill.ts:82"}, "properties": {"repobilityId": "3e02328edd453dc1", "scanner": "scanner-primary", "fingerprint": "8a0fabce57f888b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-00ee4914b25e1576", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/explore-assist-articulation.ts:84"}, "properties": {"repobilityId": "17a3a4d45af0eccd", "scanner": "scanner-primary", "fingerprint": "00ee4914b25e1576", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0974e0d0b2db6f97", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-losrios.ts:548"}, "properties": {"repobilityId": "8b1a417890f28209", "scanner": "scanner-primary", "fingerprint": "0974e0d0b2db6f97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63f77bdffad4d749", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-transfer-assist.ts:147"}, "properties": {"repobilityId": "3bfa09e42b218962", "scanner": "scanner-primary", "fingerprint": "63f77bdffad4d749", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cd04c8322baad5fa", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:335"}, "properties": {"repobilityId": "715d0bcda33b3a02", "scanner": "scanner-primary", "fingerprint": "cd04c8322baad5fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9584723304b187dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ca/scrape-assist-receivers.ts:199"}, "properties": {"repobilityId": "2bde209c59c075b0", "scanner": "scanner-primary", "fingerprint": "9584723304b187dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8dd8c0546d41be7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/mn/scrape-catalog-prereqs.ts:136"}, "properties": {"repobilityId": "9b6a390b687f8f39", "scanner": "scanner-primary", "fingerprint": "8dd8c0546d41be7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f9a64f986681d6d1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-transfer-wcsu.ts:63"}, "properties": {"repobilityId": "317a489ffe628c5a", "scanner": "scanner-primary", "fingerprint": "f9a64f986681d6d1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89c3ec54ea769f89", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ct/scrape-banner.ts:248"}, "properties": {"repobilityId": "a4f87d4a42cbbe60", "scanner": "scanner-primary", "fingerprint": "89c3ec54ea769f89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7af23c9208666166", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:317"}, "properties": {"repobilityId": "32ae199bb6572aa9", "scanner": "scanner-primary", "fingerprint": "7af23c9208666166", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b6f77e86232face", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-transfer.ts:158"}, "properties": {"repobilityId": "3514fd667a3a7e6b", "scanner": "scanner-primary", "fingerprint": "6b6f77e86232face", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-25448c1ba09866ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/dc/scrape-banner.ts:255"}, "properties": {"repobilityId": "68031009d538250d", "scanner": "scanner-primary", "fingerprint": "25448c1ba09866ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d822185c51bab0e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ut/scrape-programs.ts:59"}, "properties": {"repobilityId": "7c7aa385a72431fe", "scanner": "scanner-primary", "fingerprint": "d822185c51bab0e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce10836e696a7a24", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/hi/scrape-transfer-uhdad.ts:357"}, "properties": {"repobilityId": "aa3789e708d24ba1", "scanner": "scanner-primary", "fingerprint": "ce10836e696a7a24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bb5268805ab7204", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-transfer.ts:160"}, "properties": {"repobilityId": "7a8e77e1ab2ed9d8", "scanner": "scanner-primary", "fingerprint": "8bb5268805ab7204", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28d56d2cecb3904c", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:135"}, "properties": {"repobilityId": "001e14877acce7b8", "scanner": "scanner-primary", "fingerprint": "28d56d2cecb3904c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d2ff4cf63dee6d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-catalog-prereqs.ts:86"}, "properties": {"repobilityId": "13089150bcdf5b98", "scanner": "scanner-primary", "fingerprint": "2d2ff4cf63dee6d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee26da0ffb0f3929", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/me/scrape-mccs.ts:419"}, "properties": {"repobilityId": "4e12f938393bf4e5", "scanner": "scanner-primary", "fingerprint": "ee26da0ffb0f3929", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da74069eced1612d", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:245"}, "properties": {"repobilityId": "83964eb39d2e2c09", "scanner": "scanner-primary", "fingerprint": "da74069eced1612d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53c027820625a11f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nm/scrape-sipi-pdf.ts:65"}, "properties": {"repobilityId": "dcbcd34bb963bec6", "scanner": "scanner-primary", "fingerprint": "53c027820625a11f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7d660a0fdea6a241", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:172"}, "properties": {"repobilityId": "214dc98ab5031331", "scanner": "scanner-primary", "fingerprint": "7d660a0fdea6a241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb845bd9f8c29beb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wv/scrape-eastern-wv.ts:91"}, "properties": {"repobilityId": "19091b0c9ce7deb8", "scanner": "scanner-primary", "fingerprint": "fb845bd9f8c29beb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0c4d39e9168fe920", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-ncstate.ts:46"}, "properties": {"repobilityId": "fe831840555c6d28", "scanner": "scanner-primary", "fingerprint": "0c4d39e9168fe920", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fa73a60fe5b66b2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-catawba.ts:42"}, "properties": {"repobilityId": "8c0a01dbff9289f4", "scanner": "scanner-primary", "fingerprint": "fa73a60fe5b66b2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0bf859004329c694", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-hpu.ts:45"}, "properties": {"repobilityId": "91cc1fa38a6fdd71", "scanner": "scanner-primary", "fingerprint": "0bf859004329c694", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-79c2f836071ec4b4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-uncg.ts:43"}, "properties": {"repobilityId": "74d998ad24bd60b5", "scanner": "scanner-primary", "fingerprint": "79c2f836071ec4b4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2175bc804e5eb80", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-southeastern.ts:125"}, "properties": {"repobilityId": "a9cb9fe6a1c45e49", "scanner": "scanner-primary", "fingerprint": "e2175bc804e5eb80", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d363d4bf927d427d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-tri-county.ts:201"}, "properties": {"repobilityId": "7d9b96ed4e3a85c4", "scanner": "scanner-primary", "fingerprint": "d363d4bf927d427d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b8ba75a9da3976a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-wingate.ts:45"}, "properties": {"repobilityId": "efed2baa74a53a94", "scanner": "scanner-primary", "fingerprint": "6b8ba75a9da3976a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1b36b9c5b26bf7b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cleveland.ts:130"}, "properties": {"repobilityId": "e5938d0ad19e5ab0", "scanner": "scanner-primary", "fingerprint": "1b36b9c5b26bf7b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-389b9509fd8f1b83", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-mayland.ts:117"}, "properties": {"repobilityId": "22e38e39f29466d1", "scanner": "scanner-primary", "fingerprint": "389b9509fd8f1b83", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7020a35f5a620cec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-sandhills.ts:93"}, "properties": {"repobilityId": "4064cef23e13ddd6", "scanner": "scanner-primary", "fingerprint": "7020a35f5a620cec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ba0c5fdfe60084b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-martin.ts:62"}, "properties": {"repobilityId": "31f88fe2567c1d62", "scanner": "scanner-primary", "fingerprint": "ba0c5fdfe60084b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5fa03136aaa5644", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-albemarle.ts:140"}, "properties": {"repobilityId": "c08c2dc937dc920d", "scanner": "scanner-primary", "fingerprint": "f5fa03136aaa5644", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-999c566566a2d231", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-elon.ts:109"}, "properties": {"repobilityId": "078196924f15035c", "scanner": "scanner-primary", "fingerprint": "999c566566a2d231", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c131ef11c69cdb5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-pamlico.ts:72"}, "properties": {"repobilityId": "ddf0ab595a95a15a", "scanner": "scanner-primary", "fingerprint": "9c131ef11c69cdb5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-676c5c8e1bdbb7a3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-transfer-cns.ts:83"}, "properties": {"repobilityId": "455bd8b9c1a4e619", "scanner": "scanner-primary", "fingerprint": "676c5c8e1bdbb7a3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-956afc75cc4909bb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/nc/scrape-cape-fear.ts:98"}, "properties": {"repobilityId": "00089c4fe9fef8c2", "scanner": "scanner-primary", "fingerprint": "956afc75cc4909bb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a450e750b8ab2af", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sd/scrape-transfer-usd.ts:106"}, "properties": {"repobilityId": "b9364ce09ab3671d", "scanner": "scanner-primary", "fingerprint": "8a450e750b8ab2af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b291fef6fc83e91a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner8.ts:68"}, "properties": {"repobilityId": "0cc9701248bef493", "scanner": "scanner-primary", "fingerprint": "b291fef6fc83e91a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33839c2c77734d84", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-northeastern-pdf.ts:81"}, "properties": {"repobilityId": "76a6eb0010121284", "scanner": "scanner-primary", "fingerprint": "33839c2c77734d84", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-16bbdb60e5b1c0fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:119"}, "properties": {"repobilityId": "961fd3ef6dcd02a4", "scanner": "scanner-primary", "fingerprint": "16bbdb60e5b1c0fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25fa8a5317a83676", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-cygnet.ts:91"}, "properties": {"repobilityId": "c056b390e5cfe2a6", "scanner": "scanner-primary", "fingerprint": "25fa8a5317a83676", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-94d87965f4b48cb3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-banner.ts:105"}, "properties": {"repobilityId": "6e13cbb05f011825", "scanner": "scanner-primary", "fingerprint": "94d87965f4b48cb3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45ce3b1a4ede140b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-transfer-clemson.ts:84"}, "properties": {"repobilityId": "c3355cfd03964e3e", "scanner": "scanner-primary", "fingerprint": "45ce3b1a4ede140b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7260e29b86d8beef", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/sc/scrape-williamsburg-pdf.ts:76"}, "properties": {"repobilityId": "5a500dfb180d1534", "scanner": "scanner-primary", "fingerprint": "7260e29b86d8beef", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-df9f86eedf547403", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-oregon-coast.ts:58"}, "properties": {"repobilityId": "005c4ecd4d75ba0a", "scanner": "scanner-primary", "fingerprint": "df9f86eedf547403", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f518ba4ec7ae4af3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-tvcc.ts:83"}, "properties": {"repobilityId": "f7ff936f91bbbbc6", "scanner": "scanner-primary", "fingerprint": "f518ba4ec7ae4af3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fde70d937fa5b512", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-transfer-osu.ts:121"}, "properties": {"repobilityId": "5b174c2aa1a40b3e", "scanner": "scanner-primary", "fingerprint": "fde70d937fa5b512", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82b52c3c0aadac6f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/or/scrape-columbia-gorge.ts:97"}, "properties": {"repobilityId": "b46404d088c74316", "scanner": "scanner-primary", "fingerprint": "82b52c3c0aadac6f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d9e3edb133748363", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/al/scrape-accs-banner8.ts:69"}, "properties": {"repobilityId": "0aedbcf89c20a618", "scanner": "scanner-primary", "fingerprint": "d9e3edb133748363", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99eb6e96013fbba2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/al/scrape-transfer-stars.ts:113"}, "properties": {"repobilityId": "73da57ab85e8bb87", "scanner": "scanner-primary", "fingerprint": "99eb6e96013fbba2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f82528442338af1", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nv/scrape-programs.ts:31"}, "properties": {"repobilityId": "4cb2d7b015e5b9e4", "scanner": "scanner-primary", "fingerprint": "7f82528442338af1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-227c1b60ad588c49", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/vt/scrape-colleague.ts:447"}, "properties": {"repobilityId": "3b2f53b5249bbe8a", "scanner": "scanner-primary", "fingerprint": "227c1b60ad588c49", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cec71ffd3ae98e27", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/vt/scrape-transfer.ts:51"}, "properties": {"repobilityId": "5feaf7f4876338dd", "scanner": "scanner-primary", "fingerprint": "cec71ffd3ae98e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df9539880f629e0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/wy/scrape-northwest-college.ts:74"}, "properties": {"repobilityId": "e485cf0a030e1f09", "scanner": "scanner-primary", "fingerprint": "df9539880f629e0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-43ddc7bbb6371679", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:178"}, "properties": {"repobilityId": "149792b19e5641bb", "scanner": "scanner-primary", "fingerprint": "43ddc7bbb6371679", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efb360d66bb50348", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-banner8.ts:75"}, "properties": {"repobilityId": "d64ae8b7b0d82770", "scanner": "scanner-primary", "fingerprint": "efb360d66bb50348", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52dd2e2046f1924e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ri/scrape-transfer.ts:192"}, "properties": {"repobilityId": "d8a34cd6df9dbac9", "scanner": "scanner-primary", "fingerprint": "52dd2e2046f1924e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6cd90fadc913ed7d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner8.ts:84"}, "properties": {"repobilityId": "081c8a4fcc6fbd30", "scanner": "scanner-primary", "fingerprint": "6cd90fadc913ed7d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c5b9fde93919cec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-banner-ssb.ts:350"}, "properties": {"repobilityId": "a37243544536ef52", "scanner": "scanner-primary", "fingerprint": "8c5b9fde93919cec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5872bac4720a59c3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/de/scrape-transfer-udel.ts:125"}, "properties": {"repobilityId": "6a2ac1fd71a6fa63", "scanner": "scanner-primary", "fingerprint": "5872bac4720a59c3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d4f9bd1f722ae1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/nd/scrape-transfer-gerta.ts:219"}, "properties": {"repobilityId": "0047411e5e40d25e", "scanner": "scanner-primary", "fingerprint": "9d4f9bd1f722ae1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f910015c7d2c7c9e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-colleague.ts:222"}, "properties": {"repobilityId": "7c177ba77d36ef74", "scanner": "scanner-primary", "fingerprint": "f910015c7d2c7c9e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ca5f1f6d0821574a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-masstransfer.ts:165"}, "properties": {"repobilityId": "f80a48c9069d06c7", "scanner": "scanner-primary", "fingerprint": "ca5f1f6d0821574a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e81841f00e552fa3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner8.ts:109"}, "properties": {"repobilityId": "deff644278bccf2b", "scanner": "scanner-primary", "fingerprint": "e81841f00e552fa3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dabd593669538b7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-cleancatalog-programs.ts:30"}, "properties": {"repobilityId": "67d947ae96ad655b", "scanner": "scanner-primary", "fingerprint": "dabd593669538b7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21b1ab71c5ed3fc8", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:96"}, "properties": {"repobilityId": "54881626196c71ed", "scanner": "scanner-primary", "fingerprint": "21b1ab71c5ed3fc8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4238501e8d82af28", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-massasoit-programs.ts:55"}, "properties": {"repobilityId": "b47f60aa242ccd1c", "scanner": "scanner-primary", "fingerprint": "4238501e8d82af28", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf3e0dea23bb55ce", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-banner-ssb.ts:261"}, "properties": {"repobilityId": "d369ba5db1b98aa7", "scanner": "scanner-primary", "fingerprint": "cf3e0dea23bb55ce", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89dc545b92f73e8e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-gcc.ts:89"}, "properties": {"repobilityId": "9e3fd259bce12303", "scanner": "scanner-primary", "fingerprint": "89dc545b92f73e8e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fb8575bb75eb59ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:119"}, "properties": {"repobilityId": "19419290f300e7db", "scanner": "scanner-primary", "fingerprint": "fb8575bb75eb59ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76f77f6b2001d76b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-rcc-programs.ts:59"}, "properties": {"repobilityId": "487de3de6431d6a5", "scanner": "scanner-primary", "fingerprint": "76f77f6b2001d76b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ae894ca2ab4659ff", "level": "none", "message": {"text": "Commented-code block (15 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:214"}, "properties": {"repobilityId": "a0a8ab9d26c6f39c", "scanner": "scanner-primary", "fingerprint": "ae894ca2ab4659ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b939eefe78a90b89", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ma/scrape-qcc-pdf-programs.ts:110"}, "properties": {"repobilityId": "616e42f887c83c94", "scanner": "scanner-primary", "fingerprint": "b939eefe78a90b89", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0d2ba35a998ad7b6", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/ma/scrape-catalog-prereqs-middlesex.ts:296"}, "properties": {"repobilityId": "becc34bec4e46317", "scanner": "scanner-primary", "fingerprint": "0d2ba35a998ad7b6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a52b260ffeb37f5c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-banner-ssb.ts:341"}, "properties": {"repobilityId": "da26e38bc5522757", "scanner": "scanner-primary", "fingerprint": "a52b260ffeb37f5c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-58b4cbff8906359c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/scrape-jscc-pdf-programs.ts:100"}, "properties": {"repobilityId": "bc18e6068e711ca8", "scanner": "scanner-primary", "fingerprint": "58b4cbff8906359c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-94bb211819a13799", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utk.ts:33"}, "properties": {"repobilityId": "8218f036b6b284c2", "scanner": "scanner-primary", "fingerprint": "94bb211819a13799", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df1c73c221b9693d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-ttu.ts:129"}, "properties": {"repobilityId": "7db9ebb9cbf5b2bc", "scanner": "scanner-primary", "fingerprint": "df1c73c221b9693d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9d377d1e59ae591f", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-all.ts:47"}, "properties": {"repobilityId": "d172b8899c00abce", "scanner": "scanner-primary", "fingerprint": "9d377d1e59ae591f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-308a2d491cabd928", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-apsu.ts:90"}, "properties": {"repobilityId": "7f2e3b3de5b08866", "scanner": "scanner-primary", "fingerprint": "308a2d491cabd928", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2ea0b991a128eba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tn/transfer/scrape-utm.ts:64"}, "properties": {"repobilityId": "256b02b3b17ddbfc", "scanner": "scanner-primary", "fingerprint": "c2ea0b991a128eba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7ca846b1aee85a6", "level": "none", "message": {"text": "Commented-code block (14 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-clarendon.ts:114"}, "properties": {"repobilityId": "0a56136cb4882ce5", "scanner": "scanner-primary", "fingerprint": "f7ca846b1aee85a6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a039144771d2893", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-alamo.ts:46"}, "properties": {"repobilityId": "ab15ecb224b2db41", "scanner": "scanner-primary", "fingerprint": "6a039144771d2893", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25bcbba6fb464433", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-collin.ts:211"}, "properties": {"repobilityId": "281a01ab26e0d774", "scanner": "scanner-primary", "fingerprint": "25bcbba6fb464433", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-083c6efeb0fb4a85", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-acalog-prereqs.ts:147"}, "properties": {"repobilityId": "62c93f36307eea28", "scanner": "scanner-primary", "fingerprint": "083c6efeb0fb4a85", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-604baeb057bca3b6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/tx/scrape-transfer-tccns.ts:102"}, "properties": {"repobilityId": "61f1ce51ddb0f036", "scanner": "scanner-primary", "fingerprint": "604baeb057bca3b6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5db47f8e41062d6a", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-lsc.ts:54"}, "properties": {"repobilityId": "15e09ded7ef8ef94", "scanner": "scanner-primary", "fingerprint": "5db47f8e41062d6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-274ac9e6a6223e67", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/tx/scrape-kilgore.ts:277"}, "properties": {"repobilityId": "1eed7d77e6ba7859", "scanner": "scanner-primary", "fingerprint": "274ac9e6a6223e67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-217b8df3e3efb769", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vwu.ts:49"}, "properties": {"repobilityId": "fcac20070a9ab20a", "scanner": "scanner-primary", "fingerprint": "217b8df3e3efb769", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8172a852ca8cf8d", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:192"}, "properties": {"repobilityId": "980a822b7b002528", "scanner": "scanner-primary", "fingerprint": "b8172a852ca8cf8d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d3692b0842cdc69", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-camp-pdf-programs.ts:75"}, "properties": {"repobilityId": "664899c43e94a532", "scanner": "scanner-primary", "fingerprint": "5d3692b0842cdc69", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ab291a8397dc78f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-vhcc-pdf-programs.ts:103"}, "properties": {"repobilityId": "9abd188c584f122e", "scanner": "scanner-primary", "fingerprint": "6ab291a8397dc78f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-972a4afc8a5eea34", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vcu.ts:59"}, "properties": {"repobilityId": "d18b08f155879c62", "scanner": "scanner-primary", "fingerprint": "972a4afc8a5eea34", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c2765bf037f96308", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-uva.ts:48"}, "properties": {"repobilityId": "d0e6e392a005660f", "scanner": "scanner-primary", "fingerprint": "c2765bf037f96308", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cdd4887559b16a5b", "level": "none", "message": {"text": "Commented-code block (10 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:68"}, "properties": {"repobilityId": "7e1f575b4b23b1d1", "scanner": "scanner-primary", "fingerprint": "cdd4887559b16a5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-570a0bcb0e7b2526", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-odu.ts:48"}, "properties": {"repobilityId": "45f782737ed28837", "scanner": "scanner-primary", "fingerprint": "570a0bcb0e7b2526", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b33ff91f0f0008dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-equiv.ts:51"}, "properties": {"repobilityId": "351d671ab670cb9c", "scanner": "scanner-primary", "fingerprint": "b33ff91f0f0008dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8fbcbde26bb8b7be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-gmu.ts:54"}, "properties": {"repobilityId": "cd2a6607cb47e0f3", "scanner": "scanner-primary", "fingerprint": "8fbcbde26bb8b7be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-161340b389f9189b", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:66"}, "properties": {"repobilityId": "b160cb0a76e8d1e4", "scanner": "scanner-primary", "fingerprint": "161340b389f9189b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eca45bcee5583d0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-catalog-prereqs.ts:59"}, "properties": {"repobilityId": "3d79898b9e26ef8c", "scanner": "scanner-primary", "fingerprint": "0eca45bcee5583d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-77c293db2a657dec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/va/scrape-transfer-vsu.ts:60"}, "properties": {"repobilityId": "b850fc2cef30bb13", "scanner": "scanner-primary", "fingerprint": "77c293db2a657dec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b8dadc90667ce6c0", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/scripts/va/enrich-peoplesoft.ts:610"}, "properties": {"repobilityId": "05d3a2bb0c2f336f", "scanner": "scanner-primary", "fingerprint": "b8dadc90667ce6c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-249b0a95ef08c616", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/scrape-peoplesoft.ts:36"}, "properties": {"repobilityId": "dd4dd54a2c7d9fa8", "scanner": "scanner-primary", "fingerprint": "249b0a95ef08c616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30bf5c7b94a3fea", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/va/__tests__/scrape-vccs.test.ts:263"}, "properties": {"repobilityId": "19a26a0a906afbc5", "scanner": "scanner-primary", "fingerprint": "c30bf5c7b94a3fea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50c92487a34aba81", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-courses.ts:86"}, "properties": {"repobilityId": "ae67d08041306603", "scanner": "scanner-primary", "fingerprint": "50c92487a34aba81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40b1a11950b730c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/scripts/ky/scrape-transfer-collegesource-tes.ts:475"}, "properties": {"repobilityId": "2e1ef98ba74c6f56", "scanner": "scanner-primary", "fingerprint": "40b1a11950b730c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c1f99556fa0fabc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/scripts/ky/scrape-programs.ts:28"}, "properties": {"repobilityId": "b16e3e7119225043", "scanner": "scanner-primary", "fingerprint": "7c1f99556fa0fabc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4510fa40e792bff1", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/components/AnswerCard.tsx:4"}, "properties": {"repobilityId": "4fef87c7915e490d", "scanner": "scanner-primary", "fingerprint": "4510fa40e792bff1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-296133f79c197b6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/layout.tsx:60"}, "properties": {"repobilityId": "23eea1420139df06", "scanner": "scanner-primary", "fingerprint": "296133f79c197b6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d1183c4e1124d50", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/colleges/page.tsx:126"}, "properties": {"repobilityId": "a9fbd197b2b510fd", "scanner": "scanner-primary", "fingerprint": "6d1183c4e1124d50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f65cc96e4a5f0d4", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/api/[state]/ask/route.ts:10"}, "properties": {"repobilityId": "5aecca4546eaa871", "scanner": "scanner-primary", "fingerprint": "3f65cc96e4a5f0d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-041915f111ff2b35", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/api/[state]/sections-for-courses/route.ts:131"}, "properties": {"repobilityId": "1657cba5dde535f7", "scanner": "scanner-primary", "fingerprint": "041915f111ff2b35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-832aae547a050fda", "level": "none", "message": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/app/api/[state]/college/[id]/courses/[prefix]/route.ts:10"}, "properties": {"repobilityId": "3cd75fa9ed9cc2f8", "scanner": "scanner-primary", "fingerprint": "832aae547a050fda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab9635d1e8443e08", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/sitemap/courses.xml/route.ts:22"}, "properties": {"repobilityId": "340ca4af613861b7", "scanner": "scanner-primary", "fingerprint": "ab9635d1e8443e08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aa929da18f52a108", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/schedule/page.tsx:11"}, "properties": {"repobilityId": "55fbbbd3ffe408bf", "scanner": "scanner-primary", "fingerprint": "aa929da18f52a108", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef9d5807f6d57ab5", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/page.tsx:48"}, "properties": {"repobilityId": "e44feef664bc4122", "scanner": "scanner-primary", "fingerprint": "ef9d5807f6d57ab5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56148090422c555c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/transfer/TransferClient.tsx:58"}, "properties": {"repobilityId": "4a34728f5db07e8f", "scanner": "scanner-primary", "fingerprint": "56148090422c555c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2679060748e1a200", "level": "none", "message": {"text": "Commented-code block (12 lines) in .claude/worktrees/saved-plans/app/[state]/transfer/to/[universitySlug]/page.tsx:135"}, "properties": {"repobilityId": "87f24aa27a3a5f33", "scanner": "scanner-primary", "fingerprint": "2679060748e1a200", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9a644297ae40bed", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/subject/[prefix]/page.tsx:43"}, "properties": {"repobilityId": "c8406180adc06203", "scanner": "scanner-primary", "fingerprint": "e9a644297ae40bed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ecb6c51a61d22a4", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/app/[state]/courses/page.tsx:36"}, "properties": {"repobilityId": "b9e1fa4836fba54c", "scanner": "scanner-primary", "fingerprint": "6ecb6c51a61d22a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbad1fcd42b8c980", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx:112"}, "properties": {"repobilityId": "14b11c9657009efe", "scanner": "scanner-primary", "fingerprint": "cbad1fcd42b8c980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4b91d6ef5f59e3c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/courses/CourseSearchClient.tsx:410"}, "properties": {"repobilityId": "9d26dedb53ddd424", "scanner": "scanner-primary", "fingerprint": "e4b91d6ef5f59e3c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a568731ca668339", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/TopProgramsSection.tsx:62"}, "properties": {"repobilityId": "e02db81ae05a61f5", "scanner": "scanner-primary", "fingerprint": "1a568731ca668339", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e405bdd3fd18da5", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeMap.tsx:7"}, "properties": {"repobilityId": "c8225a9bd583c439", "scanner": "scanner-primary", "fingerprint": "3e405bdd3fd18da5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83c36ed57789436b", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.tsx:98"}, "properties": {"repobilityId": "50b1a2c4ad60615f", "scanner": "scanner-primary", "fingerprint": "83c36ed57789436b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ed7ae92f3837a14", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/college/[id]/CollegeTermSection.tsx:77"}, "properties": {"repobilityId": "6f11c6a1c3ef2077", "scanner": "scanner-primary", "fingerprint": "7ed7ae92f3837a14", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-11dc1c4ec9905992", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/page.tsx:84"}, "properties": {"repobilityId": "49954f409955f7f0", "scanner": "scanner-primary", "fingerprint": "11dc1c4ec9905992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7192bac83f4253b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/app/[state]/college/[id]/courses/[prefix]/page.tsx:33"}, "properties": {"repobilityId": "65c029d4135d6de6", "scanner": "scanner-primary", "fingerprint": "7192bac83f4253b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f4717af5ab8d2798", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/app/[state]/course/[code]/page.tsx:36"}, "properties": {"repobilityId": "59b6a4ab3cb7145a", "scanner": "scanner-primary", "fingerprint": "f4717af5ab8d2798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33ed8757c89a9a50", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/app/[state]/program/[slug]/page.tsx:53"}, "properties": {"repobilityId": "a140f38741f85fce", "scanner": "scanner-primary", "fingerprint": "33ed8757c89a9a50", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a58126d8c78ab395", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 .claude/worktrees/saved-plans/app/[state]/starting-soon/StartingSoonClient.tsx:137"}, "properties": {"repobilityId": "75f7004df0b44067", "scanner": "scanner-primary", "fingerprint": "a58126d8c78ab395", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b583d43f83803471", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/geo.ts:3"}, "properties": {"repobilityId": "2aad49051e46cb5b", "scanner": "scanner-primary", "fingerprint": "b583d43f83803471", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9487f67849067f19", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/auth-providers.tsx:3"}, "properties": {"repobilityId": "18ba5fc8d69b8ecf", "scanner": "scanner-primary", "fingerprint": "9487f67849067f19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd5b5711d57b2ba5", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/courses.ts:68"}, "properties": {"repobilityId": "6669fe5e13328b1a", "scanner": "scanner-primary", "fingerprint": "cd5b5711d57b2ba5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5405ed649238f302", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/state-insights.ts:103"}, "properties": {"repobilityId": "5ef808371be07ece", "scanner": "scanner-primary", "fingerprint": "5405ed649238f302", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-928e27f2e1505db5", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/institutions.ts:51"}, "properties": {"repobilityId": "6e593f85381feb6a", "scanner": "scanner-primary", "fingerprint": "928e27f2e1505db5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5fd1496b07a94202", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/transfer.ts:277"}, "properties": {"repobilityId": "406622c6cc252ce0", "scanner": "scanner-primary", "fingerprint": "5fd1496b07a94202", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4cac3fe7e74d4339", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/college-insights.ts:147"}, "properties": {"repobilityId": "32aab4e9fb1eb25d", "scanner": "scanner-primary", "fingerprint": "4cac3fe7e74d4339", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3fb9236a49f37fa7", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/cache.ts:10"}, "properties": {"repobilityId": "397c7d6244d6649d", "scanner": "scanner-primary", "fingerprint": "3fb9236a49f37fa7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-460a5d207e0d20e6", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/lib/search-intent/prompt.ts:6"}, "properties": {"repobilityId": "524dcce76c9ce1cb", "scanner": "scanner-primary", "fingerprint": "460a5d207e0d20e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d377bce7255b891f", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/search-intent/classify-llm.ts:52"}, "properties": {"repobilityId": "77ecd086668944d8", "scanner": "scanner-primary", "fingerprint": "d377bce7255b891f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8232cae28c95c644", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/types.ts:81"}, "properties": {"repobilityId": "f45f400e6ecb5e70", "scanner": "scanner-primary", "fingerprint": "8232cae28c95c644", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e46552a2bf4fa2c", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/no-answer.ts:3"}, "properties": {"repobilityId": "b09adad5ed534dca", "scanner": "scanner-primary", "fingerprint": "9e46552a2bf4fa2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5c54251d7ccbfc2", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/pathway.ts:154"}, "properties": {"repobilityId": "949452dc05f63c92", "scanner": "scanner-primary", "fingerprint": "b5c54251d7ccbfc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca0dbce5eeea14ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/search-intent/answer/eligibility.ts:3"}, "properties": {"repobilityId": "e6a13c0bb09b4ae8", "scanner": "scanner-primary", "fingerprint": "ca0dbce5eeea14ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c110e414d5c03f12", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/programs/index.ts:41"}, "properties": {"repobilityId": "39ab13b89af4861c", "scanner": "scanner-primary", "fingerprint": "c110e414d5c03f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2279eadd69a61368", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/registry.ts:146"}, "properties": {"repobilityId": "65440d8713ea80cf", "scanner": "scanner-primary", "fingerprint": "2279eadd69a61368", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb5127edb14f8877", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/mo/config.ts:49"}, "properties": {"repobilityId": "4d57853b4ed9ee01", "scanner": "scanner-primary", "fingerprint": "cb5127edb14f8877", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed0b3cb5d76094eb", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ar/config.ts:8"}, "properties": {"repobilityId": "5f3d4b9c76aba9ce", "scanner": "scanner-primary", "fingerprint": "ed0b3cb5d76094eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e688f31d253e4e72", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/pa/config.ts:70"}, "properties": {"repobilityId": "827f0f60d62ef91b", "scanner": "scanner-primary", "fingerprint": "e688f31d253e4e72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9768c58aabf6b28", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ms/config.ts:54"}, "properties": {"repobilityId": "0d7d0e98f0bfab0b", "scanner": "scanner-primary", "fingerprint": "a9768c58aabf6b28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2561a9dde8793790", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/fl/config.ts:23"}, "properties": {"repobilityId": "c202b99b2ab9a075", "scanner": "scanner-primary", "fingerprint": "2561a9dde8793790", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52302b570400b7f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/mt/config.ts:52"}, "properties": {"repobilityId": "e94c565a9326ad47", "scanner": "scanner-primary", "fingerprint": "52302b570400b7f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecfda687b018663e", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nh/config.ts:23"}, "properties": {"repobilityId": "429b8141c2727303", "scanner": "scanner-primary", "fingerprint": "ecfda687b018663e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ef19d9cf726fd4c", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/la/config.ts:41"}, "properties": {"repobilityId": "cb4e10d0a56477da", "scanner": "scanner-primary", "fingerprint": "2ef19d9cf726fd4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac029dfc97e48682", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/az/config.ts:11"}, "properties": {"repobilityId": "e7b02b418bdcf5ab", "scanner": "scanner-primary", "fingerprint": "ac029dfc97e48682", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86eeae83f69bd786", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/il/config.ts:60"}, "properties": {"repobilityId": "9dbb556e3ce89fb3", "scanner": "scanner-primary", "fingerprint": "86eeae83f69bd786", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5aecc292a0f48081", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ca/config.ts:70"}, "properties": {"repobilityId": "f0198b027e15cf2c", "scanner": "scanner-primary", "fingerprint": "5aecc292a0f48081", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99fa424ce9c77b3d", "level": "none", "message": {"text": "Commented-code block (11 lines) in .claude/worktrees/saved-plans/lib/states/co/config.ts:56"}, "properties": {"repobilityId": "fc0b77cfd2813e88", "scanner": "scanner-primary", "fingerprint": "99fa424ce9c77b3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13ebaae04dfe6f1d", "level": "none", "message": {"text": "Commented-code block (9 lines) in .claude/worktrees/saved-plans/lib/states/dc/config.ts:23"}, "properties": {"repobilityId": "4e7ca4ce06e0c528", "scanner": "scanner-primary", "fingerprint": "13ebaae04dfe6f1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74690b8cf741bbb4", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ut/config.ts:6"}, "properties": {"repobilityId": "e1f21c4531f1a3bc", "scanner": "scanner-primary", "fingerprint": "74690b8cf741bbb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1c27f76849bed08", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/hi/config.ts:51"}, "properties": {"repobilityId": "c9efa72e09d8b4e5", "scanner": "scanner-primary", "fingerprint": "b1c27f76849bed08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f11d33b2981aa09a", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/me/config.ts:23"}, "properties": {"repobilityId": "d8039ec87f166ce3", "scanner": "scanner-primary", "fingerprint": "f11d33b2981aa09a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35936a113d0686b1", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/nm/config.ts:68"}, "properties": {"repobilityId": "dbb18c8ea962cb9b", "scanner": "scanner-primary", "fingerprint": "35936a113d0686b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-765214e1e81950f1", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/wv/config.ts:72"}, "properties": {"repobilityId": "e1c69b969212d7e3", "scanner": "scanner-primary", "fingerprint": "765214e1e81950f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15f54a5ba05d9abb", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/sd/config.ts:11"}, "properties": {"repobilityId": "bf91777ff123da2a", "scanner": "scanner-primary", "fingerprint": "15f54a5ba05d9abb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9964dcbf243f86dc", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/al/config.ts:11"}, "properties": {"repobilityId": "e59632921da15cab", "scanner": "scanner-primary", "fingerprint": "9964dcbf243f86dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ccd81978ade66a87", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/wy/config.ts:62"}, "properties": {"repobilityId": "1f5452d50c5b25eb", "scanner": "scanner-primary", "fingerprint": "ccd81978ade66a87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8e934525eb2a459", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/nd/config.ts:3"}, "properties": {"repobilityId": "4f41430ebc7b480c", "scanner": "scanner-primary", "fingerprint": "b8e934525eb2a459", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f46dbc0c5c4a9bb7", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/lib/states/ma/config.ts:23"}, "properties": {"repobilityId": "a75d82af9b6bd9e3", "scanner": "scanner-primary", "fingerprint": "f46dbc0c5c4a9bb7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d000bad187749c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tn/config.ts:3"}, "properties": {"repobilityId": "504135d2b39f5872", "scanner": "scanner-primary", "fingerprint": "1d000bad187749c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e07d08891b58713", "level": "none", "message": {"text": "Commented-code block (5 lines) in .claude/worktrees/saved-plans/lib/states/tx/config.ts:15"}, "properties": {"repobilityId": "1e8340788a70d7c1", "scanner": "scanner-primary", "fingerprint": "8e07d08891b58713", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5894c1113e255c1", "level": "none", "message": {"text": "Commented-code block (6 lines) in .claude/worktrees/saved-plans/lib/states/ky/config.ts:49"}, "properties": {"repobilityId": "1c8080f87319df1f", "scanner": "scanner-primary", "fingerprint": "d5894c1113e255c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dff20e8cdfec2a43", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-cluster-gaps.ts:178"}, "properties": {"repobilityId": "1a2c92e261d96417", "scanner": "scanner-primary", "fingerprint": "dff20e8cdfec2a43", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e65510963f6b8d0c", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/worktrees/saved-plans/.claude/skills/blog-pipeline/scripts/detect-course-explainer-demand.ts:271"}, "properties": {"repobilityId": "c5d130b113598645", "scanner": "scanner-primary", "fingerprint": "e65510963f6b8d0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8142d5f0ada0db5", "level": "none", "message": {"text": "Commented-code block (7 lines) in .claude/skills/blog-pipeline/scripts/detect-cluster-gaps.ts:178"}, "properties": {"repobilityId": "2f87091353a61afd", "scanner": "scanner-primary", "fingerprint": "b8142d5f0ada0db5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5147e87b2798d42d", "level": "none", "message": {"text": "Commented-code block (8 lines) in .claude/skills/blog-pipeline/scripts/detect-course-explainer-demand.ts:271"}, "properties": {"repobilityId": "db8a1182ae99cbdc", "scanner": "scanner-primary", "fingerprint": "5147e87b2798d42d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5560b0e235882e32", "level": "none", "message": {"text": "Commented-code block (10 lines) in .claude/skills/state-audit/scripts/collect-audit-data.ts:240"}, "properties": {"repobilityId": "b53667b3f2039e5e", "scanner": "scanner-primary", "fingerprint": "5560b0e235882e32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a260e355ea7d9f89", "level": "note", "message": {"text": "32 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e735cee6f43259c2", "scanner": "scanner-primary", "fingerprint": "a260e355ea7d9f89", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}