{"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-3316bb02931b7d53", "name": "Stray `console.log` in TS/JS \u2014 tests/star-rating-extractors.test.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/star-rating-extractors.test.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-511f4d8a7bfdf304", "name": "Stray `console.log` in TS/JS \u2014 tests/unit/data-quality-pipeline.test.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/data-quality-pipeline.test.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1751209dbb2c329e", "name": "Stray `console.log` in TS/JS \u2014 tests/unit/validate-review-texts.test.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/validate-review-texts.test.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af517e6f24b298d7", "name": "Stray `console.log` in TS/JS \u2014 tests/unit/integrity-report.test.js:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/integrity-report.test.js:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94f3fd78a0486ae6", "name": "Stray `console.log` in TS/JS \u2014 tests/fixtures/aggregator-candidates/_generate.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/fixtures/aggregator-candidates/_generate.js:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00e12f56eb765c52", "name": "Stray `console.log` in TS/JS \u2014 tests/e2e/show-pages.spec.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/show-pages.spec.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-576437047dfb68ed", "name": "Stray `console.log` in TS/JS \u2014 scripts/compute-fantasy-scores.js:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-fantasy-scores.js: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-56f0efb545fc2829", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-images.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-images.js: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-db4b45a5adb1e3d4", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-we-extractors.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-we-extractors.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53d7a3fa147fc0fe", "name": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-historical.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-historical.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5de0fb37d6f7043", "name": "Stray `console.log` in TS/JS \u2014 scripts/watch-proof-tonight.js:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-proof-tonight.js: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-c6c95e0e764c63cd", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-outlet-case.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-outlet-case.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d3cde6007132358", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-theatre-reviews-star-ratings.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theatre-reviews-star-ratings.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-af5dd05dc145bf4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-awards-with-precursors.js:828", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-awards-with-precursors.js:828"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-835c7b46fba088a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-existing-reviews.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-existing-reviews.js: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-55ec411a93705c62", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-we-discovery-holdout.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-we-discovery-holdout.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a9c977434c258f65", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-production.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-production.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a4a8d81f4e335b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-bww-thumbs.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-bww-thumbs.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bac384db74871f0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-bww-reviews.js:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-bww-reviews.js:185"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5487f7552acf5cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-attribution-by-critic.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-attribution-by-critic.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0ef8ef512bccfe2", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-pv-critics.js:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-pv-critics.js:144"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc8c844f0aea0f8e", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-full-data-audit.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-full-data-audit.js:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ac34b152bfbf0e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/reclassify-invalid-reviews.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclassify-invalid-reviews.js: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-8648f6b178808927", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-show-freshness.js:164", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-show-freshness.js: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-40a4a05e827c0c09", "name": "Stray `console.log` in TS/JS \u2014 scripts/export-model-detail.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-model-detail.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7a43ecae67b92eb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-mezzanine-audience.js:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-mezzanine-audience.js:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab2d8a6876a90e52", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-scrapable-reviews.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-scrapable-reviews.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-375111bdfc7eca47", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tony-history.ts:364", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tony-history.ts:364"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17f74b178abec5aa", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-stagedoor-critics.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-stagedoor-critics.js:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f61217bbb9173307", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-show-data.js:308", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-show-data.js:308"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-01b8b2717f3cd9a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/recollect-for-scores.js:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recollect-for-scores.js: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-a9bab87588a40971", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-classified-at.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-classified-at.js: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-713bcb117f0690a6", "name": "Stray `console.log` in TS/JS \u2014 scripts/submit-google-indexing.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/submit-google-indexing.js: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-b0dc2de4cafac86b", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-award-scores.ts:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-award-scores.ts:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6675f3caa2f1e5d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-guide-editorials.js:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-guide-editorials.js:192"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9aeb12479e0bcf8", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-explicit-ratings.js:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-explicit-ratings.js: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-8533179f5eecda9e", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-social-post.js:400", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-social-post.js:400"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-016ca2a29cc80dd8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-contamination.js:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-contamination.js: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-49365cf6be0031ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-images.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-images.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9458bfa93660468", "name": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-browserbase-login.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-browserbase-login.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dcdb221f0b82167f", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-reviews.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-reviews.js: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-55ae53c7ebd6f67e", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-readiness.js:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-readiness.js: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-e74cadd6f44d5bff", "name": "Stray `console.log` in TS/JS \u2014 scripts/split-combined-credits.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-combined-credits.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c60bc0d9fc5fb013", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scores.js:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scores.js:251"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9590e236a9fac2f5", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-stagedoor-reviews.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-stagedoor-reviews.js:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b9655c0e540c66f7", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-content-tiers.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-content-tiers.js:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ceb9d81b55f41e7c", "name": "Stray `console.log` in TS/JS \u2014 scripts/gc-wrong-production-stubs.js:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gc-wrong-production-stubs.js: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-5639cddc737a7cb5", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-commercial-pending.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-commercial-pending.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f714b83d49dbee60", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-coverage.js:306", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-coverage.js: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-c150f7eed12f810c", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-brand-tokens-sync.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-brand-tokens-sync.js: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-1bedea15c327ede8", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-roundup-flags.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-roundup-flags.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86c585a9d0e7fe3b", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-single-model-for-rescore.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-single-model-for-rescore.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfda7591d57b69a5", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-actor-slugs-manifest.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-actor-slugs-manifest.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db72b66592137679", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-orphan-image-dirs.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-orphan-image-dirs.js:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18838bf0de8f68d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-diary-data.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-diary-data.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e0e5c52f65ccc34", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-truncated-reviews.js:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-truncated-reviews.js:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fd0e17cba1cc898", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-actor-images.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-actor-images.js: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-8989a24d134d451c", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-runtimes.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-runtimes.js:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fc06e3f36e93979", "name": "Stray `console.log` in TS/JS \u2014 scripts/deploy-now.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-now.js: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-99a948ca3d255b2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-follow-notifications.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-follow-notifications.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22e27b2849ac564d", "name": "Stray `console.log` in TS/JS \u2014 scripts/pause-rebuild.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pause-rebuild.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fb4f2c08dc62b2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-checklist.js:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-checklist.js:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbe933b92d3d09df", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-production-reviews.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-production-reviews.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de7055753c527c07", "name": "Stray `console.log` in TS/JS \u2014 scripts/score-remaining-reviews.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-remaining-reviews.js: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-27d15f51fafaab1c", "name": "Stray `console.log` in TS/JS \u2014 scripts/add-historical-2023-2024.js:723", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-historical-2023-2024.js:723"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c61b13e8e83e736", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-dtli-reviews.js:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-dtli-reviews.js:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d6aa95c08e0d3c07", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-outlets.js:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-outlets.js:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fba91e915a5e8ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-of-url-mismatch.js:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-of-url-mismatch.js:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aab08567dc277e92", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-we-star-ratings.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-we-star-ratings.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-238de5839493599b", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-critic-consensus.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-critic-consensus.js: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-61aee031bbfc474c", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-levenshtein-matches.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-levenshtein-matches.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-167cbb28b474116f", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-production-flags.js:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-production-flags.js:156"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8aaa81496c05ff38", "name": "Stray `console.log` in TS/JS \u2014 scripts/notion-action-poll.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notion-action-poll.js:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5a6d108c24a7a18", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-todaytix-links.js:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-todaytix-links.js:139"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3707fc99af0ef71", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-score-pages.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-score-pages.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f89cc62d947edec", "name": "Stray `console.log` in TS/JS \u2014 scripts/archive-previous-scores.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archive-previous-scores.js:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0d8f8b3e3390365", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-stale-closures.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-stale-closures.js:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3f6fde5ac3e3ca5", "name": "Stray `console.log` in TS/JS \u2014 scripts/kimi-dry-run.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/kimi-dry-run.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-babab26ff53f014d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cron-health-coverage.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cron-health-coverage.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23a5b56a38053471", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-grosses.ts:355", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-grosses.ts:355"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cefaaa79be5e3e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-typos.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-typos.js: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-a40c9fd5c9070129", "name": "Stray `console.log` in TS/JS \u2014 scripts/format-scraped-noms.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/format-scraped-noms.js: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-2c22fd0a729748eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-send-lock.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-send-lock.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-996328b1da14c773", "name": "Stray `console.log` in TS/JS \u2014 scripts/tony-deep-backtest.ts:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tony-deep-backtest.ts:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2abe2ec4b3e427f", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-show-details.js:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-show-details.js:200"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e56109fc1130a06", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-followers.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-followers.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d00d25bb81ca5685", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-review-og-images.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-review-og-images.js: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-914e7b632a49f3e9", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-director-consensus.js:229", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-director-consensus.js: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-3f8296e2fe2f7af8", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-commercial-integration.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-commercial-integration.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e172f7ca18c24216", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-contamination.js:413", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-contamination.js:413"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e5ac03433c901b3", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-critic-typos.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-critic-typos.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04f3701bd382adbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/remove-placeholder-images.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/remove-placeholder-images.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2e8b9dddd4b76c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-show-lookup.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-show-lookup.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7eff438835a27e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-seo-health.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-seo-health.js:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b51175f0489d793e", "name": "Stray `console.log` in TS/JS \u2014 scripts/consolidate-duplicate-reviews.js:220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/consolidate-duplicate-reviews.js: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-a882d405ef9af866", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-data.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-data.js: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-bbb8fe161f8a40b1", "name": "Stray `console.log` in TS/JS \u2014 scripts/award-score-movers.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/award-score-movers.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ceab7e1f201cfbfd", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-qov.js:6", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-qov.js:6"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2b69407e6289487a", "name": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-score-audit.js:277", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-score-audit.js: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-238b77733f7f2988", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-outlet-id-canonicalization.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-outlet-id-canonicalization.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2237f049c36e217", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-review-quality.js:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-review-quality.js: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-4d2c52dacee8d258", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nyc-theatre-roundups.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nyc-theatre-roundups.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec2ce6ee568b5c49", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-nyt-critics-pick.js:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-nyt-critics-pick.js: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-178d455302176674", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-paywall-leaks.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-paywall-leaks.js:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdde4211a32894fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-source-scores.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-source-scores.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-54493cf2d380239e", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-text.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-text.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9814e6a7a15a64f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/submit-indexnow.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/submit-indexnow.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50aad8e6c474fc92", "name": "Stray `console.log` in TS/JS \u2014 scripts/btc-smoke-test.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/btc-smoke-test.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1194796d61b3a151", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-scores.js:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-scores.js:218"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d41cfaf8c01f6d00", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team.js: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-28b50be466d2b402", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-commercial-research.js:315", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-commercial-research.js: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-ed49b6d422f15e36", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-seatplan-audience.js:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-seatplan-audience.js: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-3af219118a3edde9", "name": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-login.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-login.js:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a248f177a4dbf08d", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-review-entities.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-review-entities.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fc68726a1a3326e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-scores.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-scores.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a96b4dc5d3e72ccd", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-urls.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-urls.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-183484ffffe868fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-designations.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-designations.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49ff8d0c03a4d2a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-api-contracts.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-api-contracts.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3adf963dcad18930", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-gd-scraper-parity.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-gd-scraper-parity.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8005129cc362fe60", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-corrupted-json.js:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-corrupted-json.js: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-e2a43328891f63c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-multi-production-titles.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-multi-production-titles.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b36eb3ae9ae2055", "name": "Stray `console.log` in TS/JS \u2014 scripts/diagnostic-p0-score-audit.js:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostic-p0-score-audit.js: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-fdf5449ebd3f55f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-precursor-noms.js:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-precursor-noms.js: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-562799f8c8d7aae5", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-contamination.js:136", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-contamination.js: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-102a812aab414efb", "name": "Stray `console.log` in TS/JS \u2014 scripts/eval-seat-research.js:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-seat-research.js:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42dac361f8b99e32", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-field-consistency.js:150", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-field-consistency.js:150"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5efcab65932a3a", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-review-submission.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-review-submission.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4110362340f1401d", "name": "Stray `console.log` in TS/JS \u2014 scripts/show-sample-urls.js:7", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-sample-urls.js:7"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3031cdc3e94b04db", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-excerpts.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-excerpts.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81a4ce2c4e74c042", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-closing-dates.js:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-closing-dates.js:186"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fa6233aaac31c3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-sync-tracker.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-sync-tracker.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20e536ce7271a903", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-opera-shows.js:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-opera-shows.js:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3872e67839b736cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-dates.js:320", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-dates.js:320"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aeca0e25c1ed9e9e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-todaytix-mappings.js:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-todaytix-mappings.js: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-d601d71d8a796eff", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-submission.js:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-submission.js:209"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b309e917ea4a2734", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0829c65e360228e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-patterns.js:215", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-patterns.js:215"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-15b9a621e73566a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-attribution.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-attribution.js: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-cddf50141eece5b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/deep-research-commercial.js:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deep-research-commercial.js: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-7335e9bf5ea05585", "name": "Stray `console.log` in TS/JS \u2014 scripts/execute-approved-fix.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/execute-approved-fix.js: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-186acab087bd4ae7", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-reviews.js:668", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-reviews.js:668"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de178833621d06b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-budget.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-budget.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee9576c7a969622f", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reviews.js:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reviews.js:225"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ddae67991c18c823", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-cohort-recovery.js:246", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-cohort-recovery.js: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-e7b6121f74f890d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/rollback-reroute-backlog.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rollback-reroute-backlog.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6270640c368fc013", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-stubhub-urls.js:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-stubhub-urls.js:131"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-12c5209274fef249", "name": "Stray `console.log` in TS/JS \u2014 scripts/recovery-marker.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recovery-marker.js: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-0a851af26fe66901", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-show-score-shards.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-show-score-shards.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a39e8709d4705d6f", "name": "Stray `console.log` in TS/JS \u2014 scripts/compute-social-pulse-ranks.js:213", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-social-pulse-ranks.js: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-18622b502d465b65", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-concurrency.js:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-concurrency.js: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-b76e40d67b5e75cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-awards.js:354", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-awards.js:354"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92cb1f7445678a3d", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-junk-url-reviews.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-junk-url-reviews.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab6ecb795667a9d5", "name": "Stray `console.log` in TS/JS \u2014 scripts/repair-closure-added-dates.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-closure-added-dates.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6765f50ee50cceaa", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-shows.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-shows.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da91612f85d263b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-quality.js:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-quality.js:185"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-57be03e2d4a28fb9", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-all-unscored.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-all-unscored.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bca9f0255c7f704", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-todaytix-showtimes.js:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-todaytix-showtimes.js:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfaa49b668e84e08", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-homepage-archive.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-homepage-archive.js: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-1f80a92ea3d0df67", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-score-integrity.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-score-integrity.js: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-d0620febcbf0dfde", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-lottery-rush-tags.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-lottery-rush-tags.js:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e97e767c40900f27", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-post-rebase-survival.js:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-post-rebase-survival.js: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-27d33bc288614b7a", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-wrong-show-blockers.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-wrong-show-blockers.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4870d81d12cd1a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/unflag-wrong-production-fps.js:280", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unflag-wrong-production-fps.js:280"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ce80ceed6585d33", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-poller.js:160", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-poller.js:160"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-767383fe58d41566", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-pulitzer.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-pulitzer.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e253196f86248db7", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-whatsonstage.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-whatsonstage.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7904b0cc5b8b5f05", "name": "Stray `console.log` in TS/JS \u2014 scripts/unflag-content-reviewed.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unflag-content-reviewed.js: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-9d6f3ac878fcc8ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-hallucinations.js:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-hallucinations.js: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-e68d36387e4eccc9", "name": "Stray `console.log` in TS/JS \u2014 scripts/query-analytics.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query-analytics.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0f73faa21669a2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/research-capitalization.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/research-capitalization.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-150c57e661b8fbe0", "name": "Stray `console.log` in TS/JS \u2014 scripts/count-bww-reviews.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/count-bww-reviews.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-39d75335eca7b56a", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-ob-showscore.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-ob-showscore.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fd9b378ae486d0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-dupes.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-dupes.js:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ef1e5208db553d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/canonicalize-award-categories.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/canonicalize-award-categories.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72903dd102fcd616", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-reddit-buzz.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-reddit-buzz.js:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-17b94f97cc4dd372", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tonys.js:235", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tonys.js: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-b4a3a80db8722aac", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-status-page.js:261", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-status-page.js: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-2473080d341aed07", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-scoring-audit.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-scoring-audit.js: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-8d04c9f0aacdc431", "name": "Stray `console.log` in TS/JS \u2014 scripts/prep-recollect-hallucinations.js:72", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prep-recollect-hallucinations.js:72"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f86705cb72a875cd", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-unfetchable-urls.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-unfetchable-urls.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f49e7e1e0223ec8", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-related-shows.js:288", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-related-shows.js:288"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6d3c3037c9d84399", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-platform-ticket-links.js:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-platform-ticket-links.js: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-f7ba3a860886d500", "name": "Stray `console.log` in TS/JS \u2014 scripts/create-stubs-from-reviews-json.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-stubs-from-reviews-json.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db8de4351896c749", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-rejection-logs.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-rejection-logs.js:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28c5016fae9de76b", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-push.js:199", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-push.js:199"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8fa7798a000647c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-remaining-dupes.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-remaining-dupes.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32594b4cd130331a", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-market-misroutes.js:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-market-misroutes.js:209"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56cf59816e9c2140", "name": "Stray `console.log` in TS/JS \u2014 scripts/manual-review-direct.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/manual-review-direct.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9493a8ed462fcd6", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tonys.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tonys.js: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-1c362f0e6fb932b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-data-integrity.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-data-integrity.js: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-60394879c866a95c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score-audience.js:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score-audience.js: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-d4d105bfd1a4135a", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-ab-test.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-ab-test.js:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4c92ca1be28559a", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-data.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-data.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-402cbd8fe7a515ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/lint-design-tokens.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lint-design-tokens.js: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-1bc5054eefdc9a0b", "name": "Stray `console.log` in TS/JS \u2014 scripts/health-check.js:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-check.js: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-a40abf11292f34e7", "name": "Stray `console.log` in TS/JS \u2014 scripts/disposition-misroute.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/disposition-misroute.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb282d6e644ae932", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dedup-comprehensive.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dedup-comprehensive.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5360a13e16aef7fb", "name": "Stray `console.log` in TS/JS \u2014 scripts/posthog-friction-analyzer.js:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/posthog-friction-analyzer.js: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-81ab733d832c7326", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast.js: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-d212841a19982353", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-fixes.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-fixes.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-192e56be581a2aaf", "name": "Stray `console.log` in TS/JS \u2014 scripts/get-ai-feedback.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/get-ai-feedback.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-222bb64d12f9888a", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-known-issues.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-known-issues.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eea21341b465db5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/strip-stale-single-model-scores.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-stale-single-model-scores.js:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b63cff300b9918c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-login-page-reviews.js:292", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-login-page-reviews.js: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-a70d5dbbe19ffe15", "name": "Stray `console.log` in TS/JS \u2014 scripts/replay-pending-bylines.js:125", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/replay-pending-bylines.js: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-ae06ff17d40331b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-image-aspect.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-image-aspect.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0b868f6e1898c65", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-image-cleanup.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-image-cleanup.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-122a99f4f36bbc43", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-social-pulse.js:317", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-social-pulse.js:317"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-beee0e6d21e4a364", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-free-outlets.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-free-outlets.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ef60f8975b0d8fb", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-recoupment-announcements.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-recoupment-announcements.js:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df62d7736c6cca10", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-shows-prebuild.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-shows-prebuild.js:87"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b067587035efbc2", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-ab-test.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-ab-test.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bcde738ea523d6cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-retry-guard.js:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-retry-guard.js:29"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c95c43e5bdac80e", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-official-urls.js:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-official-urls.js: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-38301a9c1b5c508f", "name": "Stray `console.log` in TS/JS \u2014 scripts/score-all-unscored.js:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-all-unscored.js: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-fd8729fb9e48abac", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-commercial-data.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-commercial-data.js:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf7612c90b58c656", "name": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-llm.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-llm.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce27a02bbbd97bfd", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-cast-manifest.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-cast-manifest.js:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e9d769616908d06", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-secrets-health.js:231", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-secrets-health.js: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-4c98bbbe12e65b4c", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-all-image-formats.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-all-image-formats.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de5e4b6eb369e9e0", "name": "Stray `console.log` in TS/JS \u2014 scripts/sweep-we-aggregators.js:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sweep-we-aggregators.js:186"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63d74dba54c6b6cf", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-urls.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-urls.js:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52d2ca661cdc31a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-from-wayback.js:174", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-from-wayback.js: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-d01d982721216102", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-dtli-thumbs.js:178", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-dtli-thumbs.js: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-c7b0a0ef1e7a43c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-slug-directories.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-slug-directories.js: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-499ec5c5b78f4e9a", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-2024-25.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-2024-25.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-0d5197d997f99d1c", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-links.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-links.js: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-e737db2c99edd827", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images-fallback.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images-fallback.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-43d64b4b775a0c5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatre-reviews.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatre-reviews.js:105"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-524d2606ed657fe8", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-new-shows.js:241", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-new-shows.js:241"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e47a5376c24c1a6", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-temporal-override-regression.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-temporal-override-regression.js: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-03b0d8599f8e00cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage-bucket.js:257", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage-bucket.js:257"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e3ab97e1c3f8b94", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-london-box-office-roundups.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-london-box-office-roundups.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77ea88f3820ab00e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5541ab6fcb041d39", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-slug-redirects.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-slug-redirects.js:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0919ce9ec0bc4666", "name": "Stray `console.log` in TS/JS \u2014 scripts/score-final-unscored.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-final-unscored.js:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16f356eb98ab5f7a", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-email-broadcast.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-email-broadcast.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c944b524776c73f5", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-pre2005-reviews.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-pre2005-reviews.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c66fb9372d5d692", "name": "Stray `console.log` in TS/JS \u2014 scripts/export-cookies.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-cookies.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-87afe2e12d783248", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-fix-git-add-core-data.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-fix-git-add-core-data.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e7e8287f0585e3ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-dates.js:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-dates.js:186"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4145e7e98a758049", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-synopses-wikipedia.js:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-synopses-wikipedia.js: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-0d687c627c24b038", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-west-end-reviews.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-west-end-reviews.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e89bea1833fb9dfc", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-seatplan-links.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-seatplan-links.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac335336e7dda3f7", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-review-texts.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-review-texts.js: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-6ca2c093e446700d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-review-dedup-gaps.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-review-dedup-gaps.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bee41b8d99015dc", "name": "Stray `console.log` in TS/JS \u2014 scripts/batch-correct-reviews.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-correct-reviews.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c906c5a40042600a", "name": "Stray `console.log` in TS/JS \u2014 scripts/backup-reviews.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backup-reviews.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f3174180c1057989", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-domain-mismatches.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-domain-mismatches.js:163"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-058b4ad8ad068870", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team-vs-synopsis.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team-vs-synopsis.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ef9a77be4cc8e79", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-original-scores.js:144", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-original-scores.js:144"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63535f6f17d82e55", "name": "Stray `console.log` in TS/JS \u2014 scripts/assess-review-baseline.js:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assess-review-baseline.js: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-b381746591800bdf", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-sources.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-sources.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-632f3e92c0ef5813", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-roundup-parser.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-roundup-parser.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77211ec92ea78630", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-quality.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-quality.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-acc3f425b8d97301", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-multishow-flags.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-multishow-flags.js: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-6eb183a316ea81fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-url-dates.js:137", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-url-dates.js:137"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae0832ad7f8e749f", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-cross-outlet-duplicates.js:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-cross-outlet-duplicates.js: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-b512714d7810523c", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-playwright-evaluate-click.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-playwright-evaluate-click.js:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71baae5a8ee194a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-commercial-data.js:330", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-commercial-data.js: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-eff031901676c99a", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-synopsis.js:176", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-synopsis.js:176"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1a1af5d2acbd679", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-status.js:387", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-status.js: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-b51a228478c1025e", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-btc-results.js:211", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-btc-results.js: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-78a350a0486395ef", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-unknown-dedup.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-unknown-dedup.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0dfc655d643f8b2e", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-image-fetch.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-image-fetch.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-92eac2d7bfdbfa13", "name": "Stray `console.log` in TS/JS \u2014 scripts/retry-wrong-urls.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/retry-wrong-urls.js: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-7184cfe53841b3b3", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-metadata-reset.js:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-metadata-reset.js: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-14545afaa30f4a71", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-fantasy-api.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-fantasy-api.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c213e5f2ef2bd80", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-commercial-o4mini.js:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-commercial-o4mini.js:191"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d430cb99eeb9d9d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/compute-gold-lists.js:455", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-gold-lists.js: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-30f10b9ca03a2d49", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-show-status.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-show-status.js: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-4c8450cc05947d52", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-name-duplicates.js:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-name-duplicates.js: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-fe4e2ad2eee5ffb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-lbo-individual-stars.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-lbo-individual-stars.js:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6a0181b037f6bb12", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-scores.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-scores.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-009232f0a5655473", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-manual-review.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-manual-review.js:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-707d6a9e02b69e01", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-we-attribution.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-we-attribution.js:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6e24ae7bca0f0740", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-text-dates.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-text-dates.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-26c48ecf46775051", "name": "Stray `console.log` in TS/JS \u2014 scripts/quarantine-wrong-production-reviews.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quarantine-wrong-production-reviews.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f9888603b6131c8f", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lottery-rush.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lottery-rush.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b6aa09ef8719136", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-outlet-reviews-serp.js:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-outlet-reviews-serp.js: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-d0ee3aa5d3ea8a76", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-playwright-credits.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-playwright-credits.js: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-b62d698467593a9a", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-texts.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-texts.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1aed31a1e9ae6088", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-we-longrunner-fps-2026-04-24.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-we-longrunner-fps-2026-04-24.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1a57455d4a5cf04", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-and-me.js:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-and-me.js: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-3e9624dcca3c03ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-consensus-contamination.js:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-consensus-contamination.js:147"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bb57d03c203474e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-and-invalid.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-and-invalid.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b1218ccf7839b78", "name": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-tier-configs.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-tier-configs.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-082041b21765446d", "name": "Stray `console.log` in TS/JS \u2014 scripts/mark-excerpt-scores.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mark-excerpt-scores.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc725d2e6e75a31a", "name": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-award-scores.js:278", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-award-scores.js: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-c89d73e93308bb7d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-duplicates-same-show.js:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-duplicates-same-show.js: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-a7335141df9775f0", "name": "Stray `console.log` in TS/JS \u2014 scripts/poll-trade-press-rss.js:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poll-trade-press-rss.js: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-35a1fda649705a94", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-reroute-backlog.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-reroute-backlog.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee8f773d6f314698", "name": "Stray `console.log` in TS/JS \u2014 scripts/filter-scrapable.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/filter-scrapable.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f46032a2a73b589d", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-slug-misroute-whitelist.js:145", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-slug-misroute-whitelist.js:145"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ba56d9ea5a1c9a19", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-url-redirects.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-url-redirects.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a97f5466199994b1", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-critical-errors.js:9", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critical-errors.js:9"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ba269428075d829", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-rebuild-drops.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-rebuild-drops.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb73f0000f2bc05b", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-slug-match-routing.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-slug-match-routing.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5447415d78ddf524", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-activity.js:231", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-activity.js: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-8f6a3bd87664a9d3", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-duplicates.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-duplicates.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1a0aa3a8ee800c66", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-aggregator-originalscores.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-aggregator-originalscores.js:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-586d2f6ead4f11e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-priority-reviews.js:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-priority-reviews.js: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-2f308262e5574288", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-star-scales.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-star-scales.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22a12e776b73372c", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-ai-citations.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-ai-citations.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0aa4b32aefdcf39d", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-integrity-report.js:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-integrity-report.js: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-7f1ac308ba457dee", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-cast-from-files.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-cast-from-files.js: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-99f8b56a840bc4f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/posthog-weekly-insights.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/posthog-weekly-insights.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-77a649e82c47002e", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-restaurant-names.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-restaurant-names.js: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-d7deca61befa2aa8", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-grosses-history.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-grosses-history.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-85796cda48cca094", "name": "Stray `console.log` in TS/JS \u2014 scripts/show-pilot-details.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-pilot-details.js:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64fe2b729735ce41", "name": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-seat-research.js:109", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-seat-research.js:109"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f92da35582cb5fe1", "name": "Stray `console.log` in TS/JS \u2014 scripts/gap-analysis-outlets.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gap-analysis-outlets.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ce627cb051ba86d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-admin.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-admin.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ccbc2fce8bf5771", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-human-review-fixes.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-human-review-fixes.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72c777b02fe950e5", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-score-extraction-soak.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-score-extraction-soak.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c326b4b2d6a2657", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-thestage-roundups.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-thestage-roundups.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-397b6270a46df2e7", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-cloud-secrets.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cloud-secrets.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4895e4f5c457045d", "name": "Stray `console.log` in TS/JS \u2014 scripts/split-multi-show-roundups.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-multi-show-roundups.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6836eff04de8d03c", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-unique-outlets.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-unique-outlets.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f2a079f23d45213", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-single-author-mismatches.js:191", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-single-author-mismatches.js:191"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef98b7397bd6e7f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-text-quality.js:93", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-text-quality.js:93"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35f3f694b63b52b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-phantom-outlets.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-phantom-outlets.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a418fb2e733c3554", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-bad-images.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-bad-images.js: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-9d5e3077c9da21e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/download-aggregator-pages.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/download-aggregator-pages.js:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40571da4a5de4705", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-harry-potter.js:8", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-harry-potter.js:8"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-00d4146f79ebfec7", "name": "Stray `console.log` in TS/JS \u2014 scripts/count-pool.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/count-pool.ts:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5ce0ced79c81337", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-theater-tips.js:239", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-theater-tips.js: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-77b8430ce5ee4986", "name": "Stray `console.log` in TS/JS \u2014 scripts/preview-btc-results.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-btc-results.js: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-f33d31c6cc99bc01", "name": "Stray `console.log` in TS/JS \u2014 scripts/dedupe-reviews-json.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dedupe-reviews-json.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38d929c63309d042", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-model-recoupment.js:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-model-recoupment.js: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-6fa8790f5d31f255", "name": "Stray `console.log` in TS/JS \u2014 scripts/reverify-promoted-reviews.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reverify-promoted-reviews.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1088b620e655aeae", "name": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-scores.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-scores.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6ddb25050889008", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-aggregator-pages.ts:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-aggregator-pages.ts:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5e6cb0ea5b24360", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-reviews.js:148", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-reviews.js: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-60e3629c0e56ac31", "name": "Stray `console.log` in TS/JS \u2014 scripts/tune-stereophonic.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tune-stereophonic.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e8625c2b5b49bb66", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-show-ranks.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-show-ranks.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-8ac7cc4fce764e70", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-curated-images.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-curated-images.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ad8dd9db6c6bd44", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-alltime.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-alltime.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-7351b1561ec8691a", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-historical-shows.js:126", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-historical-shows.js: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-ded7ce2dc9300528", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-off-broadway-alliance.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-off-broadway-alliance.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c57ca1be3cc0078", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-nysr-scores.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-nysr-scores.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e534f4b5da56439", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-outlet-from-sitemap.js:331", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-outlet-from-sitemap.js: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-26e286e23d128f59", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-reviews-for-scoring.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-reviews-for-scoring.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aeae4d0e8a2bd3df", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-brand-tokens.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-brand-tokens.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f467e78502437c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/preview-gold-lists.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-gold-lists.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-917d7ea0de476c0a", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-og-images.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-og-images.js: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-9f80074a49785142", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-latency-report.js:193", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-latency-report.js: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-e0241037dec4ad54", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-embedded-grades.js:238", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-embedded-grades.js:238"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6189712c3fa903fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-ob-venues.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-ob-venues.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-899662d8cd959401", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-consensus.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-consensus.js: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-bb3d9fb680cbc890", "name": "Stray `console.log` in TS/JS \u2014 scripts/search-tony-best-play-weights.ts:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/search-tony-best-play-weights.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-d018e64a322ba13a", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-wsj-subscriber.js:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-wsj-subscriber.js: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-608091612c1aa749", "name": "Stray `console.log` in TS/JS \u2014 scripts/process-feedback.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-feedback.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e9482d993b6ca0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-pull-quote-chrome-skip.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-pull-quote-chrome-skip.js:31"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a97116104433d7d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-show-changes.js:296", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-show-changes.js:296"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2ec6ad7a015332f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/social-image-generator.js:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-image-generator.js: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-541a03dbd4105eed", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-good-outlets.js:218", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-good-outlets.js:218"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2dcd726d27a70d1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-score-conversions.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-score-conversions.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ad0ce61aee9cda05", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-reviews.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-reviews.js:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cbdbf1c5f3356449", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-article.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-article.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ad2a4d177181c22", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-llm-score-extractor.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-llm-score-extractor.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-941f0efbd8e99711", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-daily-digest.js:214", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-daily-digest.js:214"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3913d003e83bce6", "name": "Stray `console.log` in TS/JS \u2014 scripts/notion-brain.js:530", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notion-brain.js: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-784d1402d9481d85", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ibdb.ts:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ibdb.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-729710d3114dee02", "name": "Stray `console.log` in TS/JS \u2014 scripts/rediscover-review-urls.js:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rediscover-review-urls.js:147"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-729fc801a89e4604", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-show-flags.js:143", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-show-flags.js:143"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38a4a85fed0ccc59", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-touring-contamination.js:568", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-touring-contamination.js:568"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-415b79b7eaac1b07", "name": "Stray `console.log` in TS/JS \u2014 scripts/precursor-rebuild-delta.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precursor-rebuild-delta.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e60dfdc205a881fd", "name": "Stray `console.log` in TS/JS \u2014 scripts/seed-subscribers.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-subscribers.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-039a8efffa8875ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-adjudication-prompt.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-adjudication-prompt.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09c5cd2f1a5de4a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/compress-existing-images.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compress-existing-images.js:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f73a07debd1872f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-production.js:206", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-production.js:206"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc5c8890a3ef955b", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-cast-changes.js:190", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-cast-changes.js: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-c575fe5c0e2b0b55", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-opera-images.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-opera-images.js: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-700abead498142e7", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-ocr-extract.js:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-ocr-extract.js: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-e464ee3a209e5bef", "name": "Stray `console.log` in TS/JS \u2014 scripts/morning-radar.js:70", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/morning-radar.js: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-1f65fde4e7db8934", "name": "Stray `console.log` in TS/JS \u2014 scripts/derive-noms-pool-ceilings.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/derive-noms-pool-ceilings.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-55c8195b74aa3121", "name": "Stray `console.log` in TS/JS \u2014 scripts/asc-review-status.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/asc-review-status.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b5eea07d605b580", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-review-texts.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-review-texts.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-162d592d82b2d667", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-hygiene.js:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-hygiene.js:151"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fc3f0bdf182667c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-checkout.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-checkout.js:163"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0a9229cba90c86f", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-audit-flags.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-audit-flags.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d99336f5bf4b1d3c", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-research.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-research.js: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-3e8b1229c0c10da5", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-outlet-logos.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-outlet-logos.js: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-a2fd088cca4cba95", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ob-dates-from-showscore.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ob-dates-from-showscore.js: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-24d90f9a6fbc1a08", "name": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-audience-grades.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-audience-grades.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81ebd4377388ad27", "name": "Stray `console.log` in TS/JS \u2014 scripts/convert-show-score-to-review-texts.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/convert-show-score-to-review-texts.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-df6620579a603c04", "name": "Stray `console.log` in TS/JS \u2014 scripts/delete-misroute-orphans.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-misroute-orphans.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c84450a7887d721", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-non-review-misclassifications.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-non-review-misclassifications.js:172"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0dbafce815cb1a8", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-scores.js:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-scores.js: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-e3617e694c52eb76", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-syndicated-duplicates.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-syndicated-duplicates.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b10c889a47dc6a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/health-check-urls.js:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-check-urls.js: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-3f2bca1b4d3deb14", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores-round2.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores-round2.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da8c151b2705c42c", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-null-dates.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-null-dates.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3316e3dda40d926a", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-we-cross-market.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-we-cross-market.js: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-0e81187bc38a166d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scoring-parity.js:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scoring-parity.js: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-285bcd8f0e43a150", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-budget-preflight.js:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-budget-preflight.js: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-9e848daae24aef98", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-dtli-excerpts.js:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-dtli-excerpts.js:131"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0203da2fae2003d7", "name": "Stray `console.log` in TS/JS \u2014 scripts/unabandon-non-serp-cycles.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unabandon-non-serp-cycles.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0d26c4689a3260e", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-completeness.js:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-completeness.js: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-bc305b5e39b85743", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-loso.ts:424", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-loso.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-c2c812170e33c2ec", "name": "Stray `console.log` in TS/JS \u2014 scripts/gather-reviews.js:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gather-reviews.js: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-3316f13ffcf754f4", "name": "Stray `console.log` in TS/JS \u2014 scripts/sync-review-texts.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-review-texts.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aec5f4ac26dd9fb7", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-pull-quotes.js:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-pull-quotes.js:225"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e9c7c1492b9b08c", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-incomplete-reasons.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-incomplete-reasons.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ffeea537a4a7e5f", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-playbill-urls.js:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-playbill-urls.js:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c099763b10bf81aa", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-bww-reviews.js:248", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-bww-reviews.js: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-9d73d667f9ae6b6b", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-gd-snapshot-timing.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-gd-snapshot-timing.js: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-dc16b5ccb51cc77f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-image-aspect.js:159", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-image-aspect.js: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-e08752f524d4f9f7", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-all-seasons.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-all-seasons.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-38ed0bca5b38e51f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-urls.js:184", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-urls.js: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-60a8c646d1f2cf23", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-playbill-verdict.js:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-playbill-verdict.js: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-3a4bf8e0dde3e775", "name": "Stray `console.log` in TS/JS \u2014 scripts/sweep-pending-commercial.js:167", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sweep-pending-commercial.js:167"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e26f9439505c8e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-guardian-reviews.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-guardian-reviews.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a2a9ee129aa2ba9", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-search-shows.js:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-search-shows.js:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4ce8a1a7aebb2dd0", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-bww-thumbs.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-bww-thumbs.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0b58c6a8b4f4c5f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-reviews.js:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-reviews.js:121"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d015d4b4852a0959", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-aggregator-truth.js:339", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-aggregator-truth.js:339"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-56db03e0522d9a61", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reviews-to-sanity.js:204", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reviews-to-sanity.js: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-da5dc581dbff08b6", "name": "Stray `console.log` in TS/JS \u2014 scripts/re-ensemble-scores.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/re-ensemble-scores.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-03e5f428b1d67d67", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-runtimes.js:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-runtimes.js:240"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6b1ba4e2e86e1c34", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts-v2.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts-v2.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41a7960275e8682a", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-model-health.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-model-health.js: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-ec9ca2345f7cb3b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/probe-wrong-show-staleness.js:161", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-wrong-show-staleness.js:161"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6fe5d4f9b41e9d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-commercial-export.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-commercial-export.js:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-468d09d864da1f1d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-weekly-email.js:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-weekly-email.js: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-a8e428eaa31d87d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/resolve-remaining-collisions.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resolve-remaining-collisions.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20ad03f4ea1d6844", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-ss-score-labels.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-ss-score-labels.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a902482e8612527f", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-cruft.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-cruft.js:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5743eebe05077c2", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-misattribution.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-misattribution.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33a8e2d5a79c9498", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-numeric-scores.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-numeric-scores.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-81c1b6f4e47f64da", "name": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-sla-dispatch.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-sla-dispatch.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-463c073ddbd6329f", "name": "Stray `console.log` in TS/JS \u2014 scripts/evaluate-brightdata-serp.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evaluate-brightdata-serp.js:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36ee38262481c7c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-readiness.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-readiness.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8addb998ad0d069c", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-duplicates-and-zeros.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-duplicates-and-zeros.js: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-f12b6b82b3b8b472", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-bundle-size.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-bundle-size.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee1be0108f56bd6e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-bad-ibdb-cast.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-bad-ibdb-cast.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6bd856a746b7c73d", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-candidate-validator.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-candidate-validator.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0eb1fcacdad2e64a", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critics-archive-org.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critics-archive-org.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f8da22ff607b7c7", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-ob-historical.js:155", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-ob-historical.js:155"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fde7443bd3286979", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nysr-reviews.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nysr-reviews.js:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a39f28d5fd641fee", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-show-venue.js:345", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-show-venue.js:345"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b132062f38d16f67", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-data.js:821", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-data.js:821"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cb4d4347cb86688", "name": "Stray `console.log` in TS/JS \u2014 scripts/remediate-duplicate-images.js:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/remediate-duplicate-images.js:209"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3e629f2329abfbf", "name": "Stray `console.log` in TS/JS \u2014 scripts/calculate-recoupment.js:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/calculate-recoupment.js:151"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8732f87e00721b3", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-obie.js:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-obie.js: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-e03410ad3c250522", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images.js:343", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images.js: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-347444d6f09fd308", "name": "Stray `console.log` in TS/JS \u2014 scripts/research-theater-scores.js:122", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/research-theater-scores.js: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-3b9abfc97e865c16", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-critics-circle.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-critics-circle.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-171d7dfb43dc728e", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-excerpt-as-fulltext.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-excerpt-as-fulltext.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a58a4a5b95653d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-we-cross-production.js:111", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-we-cross-production.js:111"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a8eaba002ca9b4f9", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-tests-vs-derived-data.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tests-vs-derived-data.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20a71cede3c885c1", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-images-llm.js:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-images-llm.js: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-f8889411390ebcc5", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-showscore-reviews.js:202", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-showscore-reviews.js: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-299e129a12f72050", "name": "Stray `console.log` in TS/JS \u2014 scripts/show-mismatches.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-mismatches.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2909ab875a8be293", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-review-gap.js:366", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-review-gap.js:366"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-464a52edeb3ae3f0", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tony-history.ts:403", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tony-history.ts:403"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-47389465142898b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/reverify-with-haiku.js:177", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reverify-with-haiku.js: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-2b2a113097f50103", "name": "Stray `console.log` in TS/JS \u2014 scripts/retry-pending-scores.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/retry-pending-scores.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-feefb4ddfe037665", "name": "Stray `console.log` in TS/JS \u2014 scripts/outlet-listing-poller.js:386", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/outlet-listing-poller.js:386"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c4626794fc69077", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-explicit-ratings.js:259", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-explicit-ratings.js:259"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fb44eb27fb9ab17", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-gold-derby-tonys.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-gold-derby-tonys.js: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-57d999fd920d639e", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-showscore-we.js:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-showscore-we.js: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-84464dfe08219ed0", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-title-normalization.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-title-normalization.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcfb7d7c3f90895a", "name": "Stray `console.log` in TS/JS \u2014 scripts/block-review.js:139", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/block-review.js:139"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf12f74fe0d928c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-market-expansion.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-market-expansion.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-328690a54048d6af", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-locks-index.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-locks-index.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73930f565246ccbd", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-time-backfill-opening-date-source.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-time-backfill-opening-date-source.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1f57ef9b5da260a3", "name": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-venue-candidates.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-venue-candidates.js: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-58e3bc5744aac888", "name": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-com-extract.js:269", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-com-extract.js: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-cddea626c9e2c5af", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-show-category.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-show-category.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60e73347dbb063a6", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-registry.js:384", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-registry.js:384"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-161f4cf7e29e92d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-structural-markers.js:17", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-structural-markers.js:17"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a214018090b0dad6", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-market.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-market.js:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0d2291cd63ef0438", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ibdb-urls.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ibdb-urls.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec17b6fd1c6ea294", "name": "Stray `console.log` in TS/JS \u2014 scripts/compare-gd-vs-broadwayscore.ts:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-gd-vs-broadwayscore.ts:165"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6986fb7fc257b7aa", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-unknown-critics.js:186", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-unknown-critics.js:186"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cfd08ea7b5a2f526", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-file-integrity.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-file-integrity.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dbcb896e5bb00401", "name": "Stray `console.log` in TS/JS \u2014 scripts/dd-67-68-transcription.js:696", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dd-67-68-transcription.js:696"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4bce1ba0f67b358a", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-mobile-shows.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-mobile-shows.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5446461ae11f921e", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-matching.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-matching.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-30924bf3f4c3e79c", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-all-reviews.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-all-reviews.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de6c7024543a6249", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage.js: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-38bc57e3f5771205", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-supabase.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-supabase.js:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1d0a82f8401b521", "name": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-awards-from-precursors.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-awards-from-precursors.js: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-678ea924a606e4ed", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-with-playwright.js:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-with-playwright.js:23"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b94c18c3c822a077", "name": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-feedback-bug.js:464", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-feedback-bug.js:464"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ba434da525ff89c", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-off-broadway-dates.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-off-broadway-dates.js:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3d8f61f153edfdcb", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-sqlite.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sqlite.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fab37c3860f1cd9a", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-night-broadcast.js:209", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-night-broadcast.js:209"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-74e8fd230ce1c103", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nydcc.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nydcc.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29452c1ef6bf0ece", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production.js:523", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production.js: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-4443970604645524", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-prices.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-prices.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c7f9033d73281571", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-null-dates.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-null-dates.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76d2237a58e076ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-reviews.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-reviews.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-27172c5269bf53cc", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lbo-audience.js:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lbo-audience.js: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-e90863780ec97998", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-rescore-needed.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-rescore-needed.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c3742826ca3cfe0", "name": "Stray `console.log` in TS/JS \u2014 scripts/refresh-nyt-critics-picks.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/refresh-nyt-critics-picks.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-52e1f30d419f15f3", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-tips.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-tips.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-18294f72187f321b", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-show-url-collisions.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-show-url-collisions.js:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a463ef102712fde9", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-data.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-data.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa1953cafcbda1b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-fantasy-config.js:327", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-fantasy-config.js: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-e61e0a7b1531a5f5", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-nysr-scores.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-nysr-scores.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86fdd79d25350558", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-all-scored.js:398", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-all-scored.js:398"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c4748127f30f221b", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-default-scores.js:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-default-scores.js:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d153d10ba6a6411d", "name": "Stray `console.log` in TS/JS \u2014 scripts/wp-classifier-parity.js:338", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wp-classifier-parity.js:338"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc9bf3c3fcfd43b9", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-explicit-scores.js:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-explicit-scores.js:192"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8cd772c79d340408", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-wp-theater-blogs.js:194", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-wp-theater-blogs.js:194"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8700d59f0c16b01f", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-tony-attribution.js:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-tony-attribution.js:168"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e3bfa807cb44dc30", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-p0-score-corruption.js:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-p0-score-corruption.js:151"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45a589836acd1794", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-scores.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-scores.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e60d6532e57980a", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-olivier-awards.js:221", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-olivier-awards.js: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-06b048c951bee0cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-deduplication.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-deduplication.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5ef0fdcce7f7fb6c", "name": "Stray `console.log` in TS/JS \u2014 scripts/re-extract-aggregator-reviews.js:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/re-extract-aggregator-reviews.js: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-414794a4494ba58b", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-theatre-record.js:346", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-theatre-record.js:346"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-456b7a6ade6fbd72", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-opening-night-reviews.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-opening-night-reviews.js: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-b77cf2aeb8a171e7", "name": "Stray `console.log` in TS/JS \u2014 scripts/import-mezzanine-historical.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-mezzanine-historical.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e16ce7606e3b5bb", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-check.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-check.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d626266a59bf0293", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-single-review.js:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-single-review.js:14"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94e632822e1fb866", "name": "Stray `console.log` in TS/JS \u2014 scripts/archive-show-images.js:195", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archive-show-images.js: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-2afa3a1811c30a57", "name": "Stray `console.log` in TS/JS \u2014 scripts/collection-coverage-dashboard.js:353", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collection-coverage-dashboard.js: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-7592dfa4658d7f78", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-awards-data.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-awards-data.js:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2413ab45ff1b8b1", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-extraction.js:350", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-extraction.js:350"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c7db385c236c9f8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-show-ids.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-show-ids.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee31b27cb2724c33", "name": "Stray `console.log` in TS/JS \u2014 scripts/predict-review-count.js:165", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/predict-review-count.js:165"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-118a5d8751f30c4a", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-remediation-plan.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-remediation-plan.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-288cb4d45f131beb", "name": "Stray `console.log` in TS/JS \u2014 scripts/triage-human-review.js:132", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage-human-review.js: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-cb5436500759b92f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast-web.js:201", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast-web.js: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-0febe01d1a8af37b", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-synopsis-markup.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-synopsis-markup.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-45e60f3eb4963bb5", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-boring-waltz-costs.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-boring-waltz-costs.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99e99df15e60982d", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-url-date.js:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-url-date.js:97"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b1e012c72166188", "name": "Stray `console.log` in TS/JS \u2014 scripts/query.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query.js: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-254386447adadb59", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-combined-reviews.js:69", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-combined-reviews.js:69"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-40e11ba80c3a48b5", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-pending.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-pending.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-71e6fcbb9a0c1af8", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production-reviews.js:511", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production-reviews.js:511"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b669949281c1358c", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-review-urls.js:149", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-review-urls.js: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-676c77a7b93bc20a", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-aggregator-candidates.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-aggregator-candidates.js: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-c7d4c7a4bf8f467d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-show-statuses.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-show-statuses.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-022a652d9efdb9e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-broadcast-state.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-broadcast-state.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3973842920ad052f", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-data-health.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-data-health.js: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-496339fd1e321223", "name": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-digest.js:800", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-digest.js:800"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd152cbb92a7caea", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-html-entities.js:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-html-entities.js: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-d3fc2912c84391de", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-data.js:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-data.js: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-6e1784560f228a0d", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critic-name-truncation.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critic-name-truncation.js:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-95600fdb2180e21f", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-tony-nominations.js:58", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-tony-nominations.js:58"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f37e0e0a1e09fb2", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-close-expired-shows.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-close-expired-shows.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e077e27a7a72c793", "name": "Stray `console.log` in TS/JS \u2014 scripts/ob-expansion-final-report.js:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ob-expansion-final-report.js:99"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-908043057384ffb2", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-geo-bots.js:82", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-geo-bots.js:82"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7f7176d80fb1e8a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-real-urls.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-real-urls.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06bc862296e4ecdc", "name": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-all-reviews.js:517", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-all-reviews.js:517"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a994139b6cda65ad", "name": "Stray `console.log` in TS/JS \u2014 scripts/monitor-brand-mentions.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-brand-mentions.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cf27fd9d9735443f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-multiauthor-attributions.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-multiauthor-attributions.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca6c007244f85215", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-coverage.js:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-coverage.js:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f03763875ce9e95", "name": "Stray `console.log` in TS/JS \u2014 scripts/mark-uncalculated-reviews.js:77", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mark-uncalculated-reviews.js:77"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f7a4713f2f38b7a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-scored.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-scored.js: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-214c599f1d1b9c55", "name": "Stray `console.log` in TS/JS \u2014 scripts/seo-utils.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo-utils.js: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-1d6efa669013aa52", "name": "Stray `console.log` in TS/JS \u2014 scripts/recalculate-audience-buzz.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recalculate-audience-buzz.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea8bf637d9b8f0e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-feedback-bug.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-feedback-bug.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-abdf6aaa3cf5a224", "name": "Stray `console.log` in TS/JS \u2014 scripts/normalize-venues.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/normalize-venues.js:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3749f561af5b7bca", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-nominees.js:291", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-nominees.js: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-a55112673cfc2fa4", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-reviews.ts:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-reviews.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-e63ac434c58a8677", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-review-from-url.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-review-from-url.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35b477d6ca92fbee", "name": "Stray `console.log` in TS/JS \u2014 scripts/run-bulk-historical-import.js:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-bulk-historical-import.js:200"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-290e8bb5ad84f53d", "name": "Stray `console.log` in TS/JS \u2014 scripts/notify-pending-commercial-notion.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify-pending-commercial-notion.js:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f467ec1796d0485", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-reviews.js:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-reviews.js: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-052a082cfd01d6dd", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-nft-excluded-runtime-reads.js:151", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-nft-excluded-runtime-reads.js:151"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2fa3dfff8b2aa78d", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-reviews.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-reviews.js: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-6fb0d0af2370950f", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-locked-reasons.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-locked-reasons.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09a2aad515f12112", "name": "Stray `console.log` in TS/JS \u2014 scripts/scoring-delta.js:477", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scoring-delta.js: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-01cc6de04d880824", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-reddit-shards.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-reddit-shards.js:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-83cb0b63726b24c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-dates.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-dates.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b3f0b2498dcc968", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-title-validation.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-title-validation.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc639901647bc6fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-dtli.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-dtli.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-317492e623bdd9cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-date.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-date.js: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-663dcbf752958671", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-archive-productions.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-archive-productions.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9274570364ba28c1", "name": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-review-queue.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-review-queue.js:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-996025165faf201d", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-review-urls.js:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-review-urls.js: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-ec75221a24694838", "name": "Stray `console.log` in TS/JS \u2014 scripts/protect-review-field.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/protect-review-field.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4af23a546f395f1e", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-flags.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-flags.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-146ae9fcbb9923ff", "name": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-extract.js:261", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-extract.js: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-1939bb8bb99ed39b", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-showscore-stars.js:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-showscore-stars.js:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fd50c571d5e0d486", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-html-override-rename.js:288", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-html-override-rename.js:288"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eced2a7071398e67", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-aggregator-excerpts.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-aggregator-excerpts.js:172"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-69310312386d4b14", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-square-images.js:219", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-square-images.js:219"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdeaad7d0dd846fa", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-images-auto.js:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-images-auto.js:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a75b61bee683e24", "name": "Stray `console.log` in TS/JS \u2014 scripts/backup-llm-scores.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backup-llm-scores.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-89b2864fad55efab", "name": "Stray `console.log` in TS/JS \u2014 scripts/scan-we-cross-market.ts:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scan-we-cross-market.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-def4d122c92674c4", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-outlet-reviews.js:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-outlet-reviews.js: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-4c1697dca3178f0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-platform-links.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-platform-links.js:163"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-892c7e121cacb927", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-orphan-show-ids.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-orphan-show-ids.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db1d4284e71905d1", "name": "Stray `console.log` in TS/JS \u2014 scripts/identify-unknown-outlets.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/identify-unknown-outlets.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-22c5d46e68ff5731", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-chrome-pullquotes.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-chrome-pullquotes.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b93341fdd3f8043", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-unknown-critics.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-unknown-critics.js:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d41137cd4e74531", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-texts.js:364", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-texts.js:364"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6fc2bed4bae239af", "name": "Stray `console.log` in TS/JS \u2014 scripts/list-unscored.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/list-unscored.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a911b0866f4f0f3b", "name": "Stray `console.log` in TS/JS \u2014 scripts/eval-v52.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-v52.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0f5e3a72eb047557", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-runtimes.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-runtimes.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-695464d76186878e", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-drift.js:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-drift.js: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-bb9b8ee0fd78486d", "name": "Stray `console.log` in TS/JS \u2014 scripts/assign-scores-from-quotes.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assign-scores-from-quotes.js: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-875a669e4854f10a", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-reviews.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-reviews.js:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-536c551a9a1ea312", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-consistency.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-consistency.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9200c7174809494c", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-show-score-urls-from-listings.js:275", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-show-score-urls-from-listings.js: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-ba461d90fc133318", "name": "Stray `console.log` in TS/JS \u2014 scripts/freeze-tony-audience-grades.ts:128", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/freeze-tony-audience-grades.ts:128"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2d75a54b5258de1", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-integrity.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-integrity.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bdf58ee1cb39708b", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatr-audience.js:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatr-audience.js: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-52fa093ef45e7b93", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-outlet-mismatches.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-outlet-mismatches.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-20f0c33458718430", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-audience-urls.js:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-audience-urls.js:103"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2eb378d2f2ea54d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-calibration-set.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-calibration-set.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46dac6dd3e1fe434", "name": "Stray `console.log` in TS/JS \u2014 scripts/process-commercial-tip.js:192", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-commercial-tip.js:192"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-897c478a1996d520", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-cutoff-freshness.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cutoff-freshness.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe15df8bc09687c3", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-extractor-rescore.js:278", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-extractor-rescore.js: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-b0e8072c4fcac31d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-bww-rr-critic-mismatches.js:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-bww-rr-critic-mismatches.js: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-29010b75a2ba82ed", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-json.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-json.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-319e0e2550c576be", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-westendtheatre-roundups.js:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-westendtheatre-roundups.js: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-59f8ade1fd207b30", "name": "Stray `console.log` in TS/JS \u2014 scripts/fetch-bww-roundups.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-bww-roundups.js: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-0f3904a7a0ca35ee", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-full-reviews.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-full-reviews.js:89"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3628b808538a8298", "name": "Stray `console.log` in TS/JS \u2014 scripts/reaudit-garbage-content.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reaudit-garbage-content.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-046e0cf2322f4d3c", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-llm-dates.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-llm-dates.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e78a1094b1513ca0", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-timeout-junk.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-timeout-junk.js:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d635e8f7258d0596", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-evening-standard.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-evening-standard.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eeba93a1344b3fde", "name": "Stray `console.log` in TS/JS \u2014 scripts/recover-wayback-reviews.js:171", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-wayback-reviews.js:171"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0cbe8b6e2eecdc5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/triage-sentry.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage-sentry.js:224"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f78acbdd5d3f7b96", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-creative.js:172", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-creative.js:172"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f3b2b2d41777aa1", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reroute-backlog.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reroute-backlog.js:224"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0fe05680f00ac9b0", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-preview-placeholders.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-preview-placeholders.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93b8d5475f52a870", "name": "Stray `console.log` in TS/JS \u2014 scripts/discover-dtli-slugs.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-dtli-slugs.js:95"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b4c43e65eaa03a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-calibrated.js:240", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-calibrated.js:240"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d296c8669a7db2c", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reddit-sentiment.js:312", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reddit-sentiment.js:312"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a3211f353c145c0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/pre-deploy-check.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pre-deploy-check.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e66c833ac31ca6d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/affiliate-report.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/affiliate-report.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1ed562870e23ce9", "name": "Stray `console.log` in TS/JS \u2014 scripts/sanity-check-awards-scoring.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sanity-check-awards-scoring.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-578b55fc42bd8138", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ibdb-dates.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ibdb-dates.js:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2db2402d8a33d585", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-archive-integrity.js:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-archive-integrity.js:131"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c588437c081959ef", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-show.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-show.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f0150feadf7bb7eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-scores-from-archives.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-scores-from-archives.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbde02c9376c25c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/smoke-ob-discovery.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-ob-discovery.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-974901899d17a68c", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-eligibility.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-eligibility.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3562d5d82e0d62f1", "name": "Stray `console.log` in TS/JS \u2014 scripts/agent-update.ts:207", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/agent-update.ts:207"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-33d18aa78a67c0ca", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-friction-card.js:297", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-friction-card.js:297"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f17bedf5998b33cb", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-cookie-login.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-cookie-login.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4776b6a92d5f02d9", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-master-review-list.js:405", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-master-review-list.js: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-cbe52a4791f74503", "name": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-critics.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-critics.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3db5d911cb4c8940", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-todaytix-urls.js:131", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-todaytix-urls.js:131"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9116fca00dc5300d", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-gd-historical-accuracy.js:170", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-gd-historical-accuracy.js: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-d708048c112f2985", "name": "Stray `console.log` in TS/JS \u2014 scripts/process-review-formspree.js:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-review-formspree.js:54"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16a6b17517dd1447", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-failed-fetches.js:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-failed-fetches.js: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-fcd347b6f96eee94", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-recovery-list.js:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-recovery-list.js: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-3faeede580bf1d78", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-aggregator-truth.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-aggregator-truth.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3bd2033feae71984", "name": "Stray `console.log` in TS/JS \u2014 scripts/classify-non-reviews.js:272", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-non-reviews.js: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-93620bd22f477206", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-cookie-health.js:444", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cookie-health.js:444"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d5e726516b84f987", "name": "Stray `console.log` in TS/JS \u2014 scripts/reddit-engagement-digest.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reddit-engagement-digest.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-94cc7f97fe03b50b", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-discovery-flow.js:98", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-discovery-flow.js:98"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce21ebaa42485399", "name": "Stray `console.log` in TS/JS \u2014 scripts/merge-bww-excerpts.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-bww-excerpts.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a6aec280e1d6b5ef", "name": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7cfbbcb96ee5b272", "name": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-suspected-misattribution-flags.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-suspected-misattribution-flags.js:67"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e69e3874eca42a0", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-review-count-drift.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-review-count-drift.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a916fd4e90b189d", "name": "Stray `console.log` in TS/JS \u2014 scripts/watch-aggregator-urls.js:205", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-aggregator-urls.js:205"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf79790a8f63e6d6", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-verifier-wiring.js:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-verifier-wiring.js:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-960ce76ef2833161", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-url-validation.js:130", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-url-validation.js: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-702e7eba4198b59a", "name": "Stray `console.log` in TS/JS \u2014 scripts/clean-orphan-pending.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-orphan-pending.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5d3901fd3f81f599", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-content-quality.js:197", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-content-quality.js: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-6a51908996448f4f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-content.js:385", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-content.js:385"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-401923b0a3efa50c", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-revivals-ibdb.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-revivals-ibdb.js:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e394a758812b561f", "name": "Stray `console.log` in TS/JS \u2014 scripts/ingest-urls.js:85", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-urls.js:85"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2f88ecfb09810ac", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-tests.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-tests.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3c0e8fe5e45f3098", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-changes.js:289", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-changes.js: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-dd4dc1c25d9484ab", "name": "Stray `console.log` in TS/JS \u2014 scripts/reset-adjudication.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reset-adjudication.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a70473ed1593da9f", "name": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-coverage.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-coverage.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a6b4a874f142881", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ltd-audience.js:224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ltd-audience.js:224"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97000e87b0abcbe1", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-serp-abandonment.js:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-serp-abandonment.js: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-293e96de09e2ecce", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-paywalled-access.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-paywalled-access.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a51f0f6cfb7dff44", "name": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-prices.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-prices.js: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-1a6d8c297417aa2e", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-misroute-content.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-misroute-content.js:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51ffc3cfb723fd2a", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-normalized-scores.js:119", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-normalized-scores.js:119"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec72c8b90f0c4411", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-content-verifier.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-content-verifier.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-061c65897ca76f85", "name": "Stray `console.log` in TS/JS \u2014 scripts/apply-llm-hallucination-fix.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-llm-hallucination-fix.js: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-230041fb6a35fec3", "name": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-fake-publish-dates.js:55", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-fake-publish-dates.js: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-55eab68f40e5343c", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-review-recovery.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-review-recovery.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82d7ee809cd93ef9", "name": "Stray `console.log` in TS/JS \u2014 scripts/fix-nav-contaminated.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-nav-contaminated.js:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24510ebd86d07887", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theater-tips.js:198", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theater-tips.js: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-ae7b0141f78cd460", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-reviews.js:361", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-reviews.js: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-793860b3e037d9bd", "name": "Stray `console.log` in TS/JS \u2014 scripts/reclean-truncated.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclean-truncated.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82aa2b3d4ba3ed5b", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-grosses-data.js:631", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-grosses-data.js:631"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc52e030b94d1a16", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-audience.js:100", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-audience.js:100"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-370deb9cbf6cff0d", "name": "Stray `console.log` in TS/JS \u2014 scripts/test-preview-dedup.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-preview-dedup.js:189"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5a4845eac2dfc37", "name": "Stray `console.log` in TS/JS \u2014 scripts/poll-loureviews.js:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poll-loureviews.js:83"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50aac2707ecffed5", "name": "Stray `console.log` in TS/JS \u2014 scripts/check-formspree-health.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-formspree-health.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-23254c3115f19b1f", "name": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-buzz-contamination.js:256", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-buzz-contamination.js: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-130ba8a922981ec1", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/select-best-reviews.js:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/select-best-reviews.js: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-ea9cb9ef4087dad8", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/extract-transcripts.js:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/extract-transcripts.js: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-6a49c0c13b316853", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/pre-classify-titles.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/pre-classify-titles.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1cf7e1e79ec1dc84", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/classify-reviews.js:152", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/classify-reviews.js:152"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f85515365a879636", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/collect-transcripts.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/collect-transcripts.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-661b36dd70c8f135", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/audit-before-share.js:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/audit-before-share.js: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-178ca69f9afa6962", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/eval-prompts.js:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/eval-prompts.js:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49cdaaf4a857e2e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/discover-videos.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/discover-videos.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e7e6f7485987f08", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/backfill-thumbnails.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/backfill-thumbnails.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5c5f7ff21a8136a6", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/build-video-reviews.js:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/build-video-reviews.js:71"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c8fb2cccbbcbda28", "name": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/score-video-reviews.js:92", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/score-video-reviews.js:92"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a4043bbb8fbf4ea0", "name": "Stray `console.log` in TS/JS \u2014 scripts/cli/opening-night-budget.js:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cli/opening-night-budget.js:81"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e45af0823cfa467", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/merge-commercial-conflict.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/merge-commercial-conflict.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-59f7237c77656f71", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/bd-telemetry.js:60", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bd-telemetry.js:60"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8d2490d9d497b556", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/cookie-loader.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/cookie-loader.js: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-9c5ea37987673a8b", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/site-search-discovery.js:983", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/site-search-discovery.js:983"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d598b7de622bf4d0", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/omc-discovery.js:200", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/omc-discovery.js:200"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e045827cc2e97e5a", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/list-running-shows.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/list-running-shows.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8e8f336035004d4c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/trade-press-scraper.js:487", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/trade-press-scraper.js:487"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f098620e5c2d683f", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/bww-rr-discover.js:187", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bww-rr-discover.js: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-e924ca2ce9e07f08", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-extractor.js:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-extractor.js: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-b61a9f5560bd1362", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/twitter-client.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/twitter-client.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d2440f5c7f1b7518", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-history-snapshot.js:141", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-history-snapshot.js: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-853786257ebdbd65", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/theatermania-discovery.js:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/theatermania-discovery.js:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd2a29a3e9c3ebdb", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-sla.js:76", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-sla.js:76"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a35a829e16f50aab", "name": "TODO/FIXME marker in shipping code \u2014 scripts/lib/venue-listing-discover.js:171", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/lib/venue-listing-discover.js:171"}, "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-192e42142227d416", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/content-verifier.js:251", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/content-verifier.js:251"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f47025c203dcef19", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-cast.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-cast.js:66"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdf56f09235b63eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/source-validator.js:282", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/source-validator.js:282"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9bcc0680927da3a2", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-verdict-discover.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-verdict-discover.js: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-3a7c4667175cd42a", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/per-category-precursor.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/per-category-precursor.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bb82d9d63b43f8b7", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/opera-discovery-cache.js:123", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opera-discovery-cache.js: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-97c117c30d642241", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/compress-image.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/compress-image.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-61cc251d8d689ab3", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-budget.js:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-budget.js:286"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0af6422a321043c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-score-extractor.js:506", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-score-extractor.js:506"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a10a113b7ec92736", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/reddit-api.js:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/reddit-api.js:11"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d364454a28f5273d", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/year-page-precursor.js:228", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/year-page-precursor.js:228"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-908ed3f21c998271", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/discord-notify.js:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discord-notify.js:22"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-568a1e572eaf7c0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/precursor-wikipedia.js:232", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/precursor-wikipedia.js: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-f3edde7870e9068e", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/exclusion-logger.js:63", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/exclusion-logger.js:63"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3dae04ea34898d8c", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/brand-mention-email.js:181", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/brand-mention-email.js: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-c07b6dbc386abbea", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-sb-credits.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-sb-credits.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82234c729515e84a", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/rss-discovery.js:338", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/rss-discovery.js:338"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab692b4544cbc5e7", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper.js:179"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7ac15c71b27e3f7", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/sec-edgar-scraper.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/sec-edgar-scraper.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c4d866cd301aff0", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/serp-slug-discovery.js:117", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/serp-slug-discovery.js:117"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3832f1e601ff6279", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/buzz-classifier.js:401", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/buzz-classifier.js:401"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ef1a10532496da7d", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-roundup-discover.js:87", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-roundup-discover.js:87"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b5b4e42e32b2d65", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/broadway-com-runtimes.js:324", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/broadway-com-runtimes.js:324"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b70189e9a95a14e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/deep-research-guardian.js:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/deep-research-guardian.js:20"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fdbc81baf8428234", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-dates.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-dates.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-187074c6756546e3", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/page-validator.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/page-validator.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb9d194a74790a99", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/restore-protected-fields.js:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/restore-protected-fields.js: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-724ef43d10e328b8", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/title-match.test.js:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/title-match.test.js:114"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36a8cfecc81dc543", "name": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-checks/coverage-drift.check.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-checks/coverage-drift.check.js:94"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6f5070004f714efe", "name": "Stray `console.log` in TS/JS \u2014 scripts/helpers/find-ss-gaps.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/find-ss-gaps.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ac336696e5e4328b", "name": "Stray `console.log` in TS/JS \u2014 scripts/helpers/shows-needing-scoring.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/shows-needing-scoring.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7b63f1fd6211eb35", "name": "Stray `console.log` in TS/JS \u2014 scripts/helpers/check-coverage.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/check-coverage.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-09f212f5fa7015bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/admin/compute-composite.js:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/admin/compute-composite.js: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-48dbbeb43921dd1b", "name": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/generate-all-posts.js:622", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/generate-all-posts.js:622"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb94adf5a77a5e0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/regen-posts.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/regen-posts.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3f230aa1ab8ebd8", "name": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/gather-post-data.js:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/gather-post-data.js:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63895867db2819e4", "name": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/schedule-buffer.js:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/schedule-buffer.js: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-d95c6082056b38eb", "name": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/test-llm-classification.js:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/test-llm-classification.js:28"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d34307e91973c552", "name": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/validate-social-pulse-tiers.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/validate-social-pulse-tiers.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-028a3cc6fabdf6d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-gemini.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-gemini.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-4b7239db62d4bfe0", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comprehensive-experiment.ts:268", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comprehensive-experiment.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-6e62a1c1c18b883a", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/kimi-scorer.ts:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/kimi-scorer.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-847589cf8d7ddee3", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/status.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/status.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-de8199cfdc3bdf82", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comparative-rescore.ts:285", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comparative-rescore.ts:285"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2cb4b0a4f074d4e", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/index.ts:121", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/index.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-0df7f56cd0dd0e0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/evaluate.ts:376", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/evaluate.ts:376"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ab6e2ea72d8d4885", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-ensemble.ts:101", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-ensemble.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-a57eeb33c6abb93d", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/multi-model-critique.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/multi-model-critique.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-68e92c6c2b5d86ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/calibration.ts:290", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/calibration.ts:290"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3388315e7ca26628", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/star-anchor-sample.ts:300", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/star-anchor-sample.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-8cad65811b31dc8c", "name": "TODO/FIXME marker in shipping code \u2014 scripts/llm-scoring/ensemble-scorer.ts:568", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/llm-scoring/ensemble-scorer.ts:568"}, "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-e33239efc0cff9e1", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ensemble-scorer.ts:252", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ensemble-scorer.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-370d27f02e9b4aa3", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-helen-shaw-fixture.ts:134", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-helen-shaw-fixture.ts:134"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5eb1ffca3b642ee9", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-consistency.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-consistency.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-01e30aaaafc9468b", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/gemini-scorer.ts:97", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/gemini-scorer.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-9e53d9404b88bc28", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/validation.ts:226", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/validation.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-1c96b34228f026ee", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/scorer.ts:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/scorer.ts:179"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f81bc011f0442bd3", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-structural-ab.ts:495", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-structural-ab.ts:495"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28c2ff880746c18c", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/openai-scorer.ts:156", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/openai-scorer.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-bb2894f5b1c141c0", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-variations.ts:220", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-variations.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-e3094975342d3e20", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ground-truth.ts:302", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ground-truth.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-2c8423e29ec6d640", "name": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/model-comparison-experiment.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/model-comparison-experiment.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-c9745f0468d27f1e", "name": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-model-sweep.js:325", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-model-sweep.js: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-50b1faf46e6f58c9", "name": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-scorecard-eval.js:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-scorecard-eval.js:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa5d9090b7e6973b", "name": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-eval.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-eval.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72b7c80727219403", "name": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-tips-eval.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-tips-eval.js: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-25c3af304a656a18", "name": "Stray `console.log` in TS/JS \u2014 scripts/evals/buzz-classifier-eval.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/buzz-classifier-eval.js:48"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c9dff7d33875a84f", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-off/recover-wp-cv-valid.js:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/recover-wp-cv-valid.js:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8ed8891b5ef1703", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-off/audit-wp-cv-valid.js:342", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/audit-wp-cv-valid.js: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-44db32234a154832", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-off/sweep-revival-wrong-production.js:74", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/sweep-revival-wrong-production.js: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-33a2deab8da48a21", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-stale-ensemble-data.js:73", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-stale-ensemble-data.js:73"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-905c14130db80915", "name": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-mincemeat-wrongprod.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-mincemeat-wrongprod.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-438d16d22b782d07", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:432", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:432"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1c899c07ed7ea116", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrations/sweep-cv-promoted-fps-2026-05.js:208", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/sweep-cv-promoted-fps-2026-05.js: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-81fb8d04d059edf5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/CompareShowPicker.tsx:75", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/CompareShowPicker.tsx:75"}, "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-8f567b36105a22de", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/HeaderSearch.tsx:256", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HeaderSearch.tsx:256"}, "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-4cedfb4972afd335", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpot.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpot.tsx:178"}, "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-6485c16ee235bbf0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/HamburgerMenu.tsx:99", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HamburgerMenu.tsx:99"}, "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-05975cd3ffa6a366", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/HomepageExplainerShelf.tsx:113", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HomepageExplainerShelf.tsx:113"}, "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-a8dccccd0cf2a2be", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpotSlim.tsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpotSlim.tsx:116"}, "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-bafc83b9572e9fce", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/SortableLotteryRushTables.tsx:223", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/SortableLotteryRushTables.tsx:223"}, "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-8301f4ee128f78b6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/StickyScoreHeader.tsx:83", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/StickyScoreHeader.tsx:83"}, "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-bee742d1af6c309d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-page/ShowHeroRedesign.tsx:555", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-page/ShowHeroRedesign.tsx:555"}, "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-743c10ef337e0a6e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeShowCard.tsx:60", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeShowCard.tsx:60"}, "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-a1eedbe54e82fda3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeIndexClient.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeIndexClient.tsx:58"}, "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-e79e934b9a11b84f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/ReviewBody.tsx:14", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/ReviewBody.tsx:14"}, "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-33ba36e178fbccf5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/StressTest.tsx:15", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/StressTest.tsx:15"}, "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-3a75ca41167118f1", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony-noms/CategorySection.tsx:311", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony-noms/CategorySection.tsx:311"}, "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-40375f1f91fa92e7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowSearchDropdown.tsx:98", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowSearchDropdown.tsx:98"}, "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-8cf4e0ea903b733b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowListCard.tsx:198", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowListCard.tsx:198"}, "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-97f2b10ad32bac2a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/StatGrid.tsx:32", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/StatGrid.tsx:32"}, "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-3181371def72ae04", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ShowPageAddToListButton.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ShowPageAddToListButton.tsx:174"}, "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-10b3e84e7d9a3551", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ReviewPanel.tsx:57", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ReviewPanel.tsx:57"}, "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-08b31dc0724881bd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyShowPicker.tsx:67", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyShowPicker.tsx:67"}, "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-e59c116a899dfd8c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyLeaderboardTable.tsx:115", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyLeaderboardTable.tsx:115"}, "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-88eec037af648cda", "name": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony/TrackRecord.tsx:76", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony/TrackRecord.tsx:76"}, "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-74cc62684b6440db", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:277", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:277"}, "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-0bd9255b8ab71aa9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:119", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:119"}, "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-5b3dd0ed16fa855a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/CriticIndexClient.tsx:49", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/CriticIndexClient.tsx:49"}, "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-dfe810965a44d9ff", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/page.tsx:56", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/page.tsx:56"}, "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-3839949cff5945f3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/page.tsx:57", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/page.tsx:57"}, "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-ccc50a08dbf1f762", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/OutletIndexClient.tsx:65", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/OutletIndexClient.tsx:65"}, "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-f46b3b6cdfb2ba6a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/[slug]/page.tsx:75", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/[slug]/page.tsx:75"}, "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-ce747f4eaa369ee7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/[slug]/OutletDetailClient.tsx:48", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/[slug]/OutletDetailClient.tsx:48"}, "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-b7f0088663c2b79b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/[slug]/CriticDetailClient.tsx:58", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/[slug]/CriticDetailClient.tsx:58"}, "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-77d149b9214c98ba", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/[slug]/page.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/[slug]/page.tsx:70"}, "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-0334db5f4b0fc349", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/creative/[slug]/page.tsx:59", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/creative/[slug]/page.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-554537b63fe7ae7a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/brand/BrandPageClient.tsx:483", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/brand/BrandPageClient.tsx:483"}, "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-869c2826a626ba2c", "name": "Stray `console.log` in TS/JS \u2014 src/app/brand/BrandPageClient.tsx:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/brand/BrandPageClient.tsx:163"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d980c19436d53ce0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/partners/PartnersPageClient.tsx:148", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/partners/PartnersPageClient.tsx:148"}, "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-81a0ca492d2dc1ac", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/ListsTab.tsx:299", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/ListsTab.tsx:299"}, "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-5596eda0c212e971", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MyShowsClient.tsx:599", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MyShowsClient.tsx:599"}, "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-0167f2db16b74db4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MezzanineImport.tsx:532", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MezzanineImport.tsx:532"}, "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-64ef3badcb8072bf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/beat-the-critics/BeatTheCriticsClient.tsx:625", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/beat-the-critics/BeatTheCriticsClient.tsx:625"}, "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-2dffe46e5b5d28e4", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/playwrights/page.tsx:45", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/playwrights/page.tsx:45"}, "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-d40e655549016fb5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-broadway/page.tsx:74", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-broadway/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-a025643f745a636e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/browse/[slug]/page.tsx:183", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/browse/[slug]/page.tsx:183"}, "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-9867687f79c38f30", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/resend-webhook/route.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/resend-webhook/route.ts:120"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4e27fca8abedb657", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/lock-score/route.ts:412", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/lock-score/route.ts:412"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06ee98ad8426ad29", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/list/[slug]/SharedListClient.tsx:330", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/list/[slug]/SharedListClient.tsx:330"}, "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-fda92963019d26a9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/olivier-awards/page.tsx:156", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/olivier-awards/page.tsx:156"}, "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-7b8f882d3336f4e5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/page.tsx:107", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/page.tsx:107"}, "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-257cbf1e86b8b901", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/[season]/page.tsx:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/[season]/page.tsx:193"}, "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-cbaacc2c315b2ef3", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/[season]/page.tsx:114", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/[season]/page.tsx:114"}, "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-352b5f30df339788", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/all-time/page.tsx:174", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/all-time/page.tsx:174"}, "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-5a3deedea8408136", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/all-time/page.tsx:99", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/all-time/page.tsx:99"}, "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-f4fe8cd6ce36e2c3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/lotteries/page.tsx:139", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lotteries/page.tsx:139"}, "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-77408e7fa52b3e12", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lotteries/page.tsx:213", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lotteries/page.tsx:213"}, "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-75c5f13a2303f950", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/trending/page.tsx:88", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/trending/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-76c224e8f6a5a8f5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast-changes/page.tsx:166", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast-changes/page.tsx:166"}, "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-2ac1007932ff34d6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast-changes/page.tsx:264", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast-changes/page.tsx:264"}, "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-f7c286075b289e72", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/reviews/[slug]/page.tsx:126", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/reviews/[slug]/page.tsx:126"}, "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-5cd9eba15534e741", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/BestValueTable.tsx:156", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/BestValueTable.tsx:156"}, "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-00a213443beee025", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/page.tsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/page.tsx:283"}, "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-dedad76d7a89ba5c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best-value/page.tsx:254", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best-value/page.tsx:254"}, "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-d669cee2508f1ae9", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/page.tsx:53", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/page.tsx:53"}, "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-aad3d99b74292d9a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast/[slug]/ActorDetailClient.tsx:51", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast/[slug]/ActorDetailClient.tsx:51"}, "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-55d5a65c89635dbc", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/[slug]/page.tsx:63", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/[slug]/page.tsx:63"}, "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-75dff10baada699c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ingest/IngestForm.tsx:176", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ingest/IngestForm.tsx:176"}, "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-120eeb63eab826c0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/locks/LocksTable.tsx:289", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/locks/LocksTable.tsx:289"}, "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-d0b1109e0285c9c7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/nvp/NVPClient.tsx:311", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/nvp/NVPClient.tsx:311"}, "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-e7b554d20382e940", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/broadway-theaters-map/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/broadway-theaters-map/page.tsx:55"}, "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-743ca2fd24caed1a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/opera/page.tsx:87", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/opera/page.tsx:87"}, "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-ec45a58e7035b4e5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/box-office/page.tsx:90", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/box-office/page.tsx:90"}, "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-f1caa25f7cd05eba", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/page.tsx:142", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/page.tsx:142"}, "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-5b5dce5af783a8e8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/page.tsx:101", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/page.tsx:101"}, "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-565177481293ac27", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/page.tsx:265", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/page.tsx:265"}, "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-7b576a58c7bf8d60", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/page.tsx:139", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/page.tsx:139"}, "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-35bb535fab0949b7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/[season]/page.tsx:442", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/[season]/page.tsx:442"}, "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-7162507a7d4d5470", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/[season]/page.tsx:299", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/[season]/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-669dac3a4090d085", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/press-picks/PressPicksBoard.tsx:131", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/press-picks/PressPicksBoard.tsx:131"}, "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-6e6fd66b490a84a0", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/press-picks/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/press-picks/page.tsx:55"}, "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-3ea71953e69570f8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/winners-2026/page.tsx:83", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/winners-2026/page.tsx:83"}, "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-c84c589ae7eb5bf6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/winners-2026/page.tsx:176", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/winners-2026/page.tsx:176"}, "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-1858873f6769431c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/nominees/page.tsx:74", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/nominees/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-6ef9a86cbcadbf6f", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/people/page.tsx:97", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/people/page.tsx:97"}, "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-4b7165c1677d055b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/audience-buzz/page.tsx:182", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/audience-buzz/page.tsx:182"}, "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-ec4180f1ef971ff7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/audience-buzz/page.tsx:114", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/audience-buzz/page.tsx:114"}, "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-a03ab4dc3fc14dca", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/aggregate-catalog/page.tsx:60", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/aggregate-catalog/page.tsx:60"}, "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-f51f1665119a689f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/catalog/page.tsx:77", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/catalog/page.tsx:77"}, "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-fe2f55fe95d91329", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/directors/page.tsx:45", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/directors/page.tsx:45"}, "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-5cfc509294f12907", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/discount-tickets/DiscountTicketsTable.tsx:318", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/discount-tickets/DiscountTicketsTable.tsx:318"}, "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-90e1ce76cba31266", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/discount-tickets/page.tsx:149", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/discount-tickets/page.tsx:149"}, "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-4bc26be37958a8a9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/show/[slug]/page.tsx:731", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/show/[slug]/page.tsx:731"}, "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-4c9741d943759c9a", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/show/[slug]/page.tsx:366", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/show/[slug]/page.tsx:366"}, "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-6513f8c0a981d2bb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/award-score/page.tsx:171", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/award-score/page.tsx:171"}, "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-a45ec26ae6fe91ea", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/page.tsx:101", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/page.tsx:101"}, "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-9635b20f29b2b93c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/[season]/page.tsx:86", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/[season]/page.tsx:86"}, "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-5a20da2c44d4b5de", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lyricists/page.tsx:45", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lyricists/page.tsx:45"}, "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-be3cfe344e904cb7", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/composers/page.tsx:45", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/composers/page.tsx:45"}, "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-97fc69120a508be6", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/league/[code]/page.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/league/[code]/page.tsx:118"}, "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-32a9ac214fb19c57", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/preview/FantasyPreviewClient.tsx:334", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/preview/FantasyPreviewClient.tsx:334"}, "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-52ad7a448a535494", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/standing-room/page.tsx:207", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/standing-room/page.tsx:207"}, "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-b2f322787288fdc8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/standing-room/page.tsx:178", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/standing-room/page.tsx:178"}, "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-8fd9517818d859c8", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-west-end/page.tsx:72", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-west-end/page.tsx:72"}, "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-cb96016783de7509", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/page.tsx:130", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/page.tsx:130"}, "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-cf0a6c08d3571e67", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/[shows]/page.tsx:310", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/[shows]/page.tsx:310"}, "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-bb3b662d00a12582", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:44", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:44"}, "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-f4e6148762e74e9d", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:626", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:626"}, "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-592393e98e920353", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:139", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:139"}, "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-b1298a0d7b9de505", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/off-broadway-vs-broadway/page.tsx:77", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/off-broadway-vs-broadway/page.tsx:77"}, "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-c06664757b2582ca", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/broadway-first-timer-guide/page.tsx:74", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/broadway-first-timer-guide/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-a822c0acf634712b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/what-to-wear-to-broadway/page.tsx:70", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/what-to-wear-to-broadway/page.tsx:70"}, "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-e3707278f46a30ad", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/[slug]/page.tsx:341", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/[slug]/page.tsx:341"}, "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-63960f49a9f065ea", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/[slug]/page.tsx:204", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/[slug]/page.tsx:204"}, "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-a3cd8790f6c2581b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/page.tsx:58", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/page.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-d786f4e6366ab7b8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/TheaterIndexClient.tsx:45", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/TheaterIndexClient.tsx:45"}, "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-5077034f081ed033", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/TheaterDetailClient.tsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/TheaterDetailClient.tsx:135"}, "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-77180b81333facb7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/page.tsx:255", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/page.tsx:255"}, "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-1b288f4530b0b322", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/[slug]/page.tsx:143", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/[slug]/page.tsx:143"}, "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-745b08ff9b9012e5", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/rush/page.tsx:158", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/rush/page.tsx:158"}, "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-98f838ea1cbf53c5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rush/page.tsx:248", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rush/page.tsx:248"}, "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-435815a4fdc0fd32", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best/[category]/page.tsx:109", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best/[category]/page.tsx:109"}, "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-14e68d7776bcf2a1", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rankings/page.tsx:177", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rankings/page.tsx:177"}, "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-940d3a8fd5200932", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/VideoCriticIndexClient.tsx:63", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/VideoCriticIndexClient.tsx:63"}, "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-da3681bd60902151", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/[slug]/VideoCreatorDetailClient.tsx:108", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/[slug]/VideoCreatorDetailClient.tsx:108"}, "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-80577b5984224761", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/methodology/page.tsx:133", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/methodology/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-e78a461ebc7cad8b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/biz/page.tsx:190", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/biz/page.tsx:190"}, "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-cdc05a59c1c1973c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/page.tsx:124", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/page.tsx:124"}, "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-5bdea6ceab5e9ab9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/lotteries/page.tsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/lotteries/page.tsx:136"}, "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-c602b7b6dd500d95", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/lotteries/page.tsx:207", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/lotteries/page.tsx:207"}, "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-448b265bcfcd6418", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/trending/page.tsx:90", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/trending/page.tsx:90"}, "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-0edbd715d1a4c496", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/best-value/page.tsx:265", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/best-value/page.tsx:265"}, "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-548bb5c1437dc51c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/best-value/page.tsx:238", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/best-value/page.tsx:238"}, "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-3f0bcd384a64e9d0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/audience-buzz/page.tsx:153", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/audience-buzz/page.tsx:153"}, "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-d729993247c82d06", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/audience-buzz/page.tsx:86", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/audience-buzz/page.tsx:86"}, "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-82b3716a19e57c1c", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/discount-tickets/page.tsx:152", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/discount-tickets/page.tsx:152"}, "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-35bdb89e9ed2e0d4", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/standing-room/page.tsx:194", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/standing-room/page.tsx:194"}, "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-0b26c72623f228e6", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/standing-room/page.tsx:167", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/standing-room/page.tsx:167"}, "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-7866fb5e788edecf", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/page.tsx:55", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/page.tsx:55"}, "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-c269007600f48ba2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/LondonTheaterIndexClient.tsx:36", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/LondonTheaterIndexClient.tsx:36"}, "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-164a81f93af00564", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/[slug]/page.tsx:171", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/[slug]/page.tsx:171"}, "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-4ac6bb5f21054676", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/[slug]/page.tsx:97", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/[slug]/page.tsx:97"}, "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-4e75cae5ac9ac610", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/rush/page.tsx:151", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/rush/page.tsx:151"}, "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-0b3fe8f11234f40e", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/rush/page.tsx:238", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/rush/page.tsx:238"}, "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-147d3436ab957f43", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/methodology/page.tsx:134", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/methodology/page.tsx:134"}, "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-24edeb738b1a7de9", "name": "Privileged port 16 in use", "shortDescription": {"text": "Privileged port 16 in use"}, "fullDescription": {"text": "Port 16 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4ee7e8d43ed7f6b6", "name": "Privileged port 19 in use", "shortDescription": {"text": "Privileged port 19 in use"}, "fullDescription": {"text": "Port 19 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c80e69828e7a4174", "name": "Privileged port 54 in use", "shortDescription": {"text": "Privileged port 54 in use"}, "fullDescription": {"text": "Port 54 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e4805ba2648e0675", "name": "Privileged port 58 in use", "shortDescription": {"text": "Privileged port 58 in use"}, "fullDescription": {"text": "Port 58 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e90749495b050a84", "name": "Privileged port 59 in use", "shortDescription": {"text": "Privileged port 59 in use"}, "fullDescription": {"text": "Port 59 is privileged (<1024). Make sure the service runs with the right caps or front it with a non-privileged port via a load balancer."}, "properties": {"scanner": "scanner-primary", "layer": "network", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d8a70207cc7421f2", "name": "Insecure pattern 'node_child_process' in scripts/watch-proof-tonight.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/watch-proof-tonight.js: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-8b593ea8665d60fc", "name": "Insecure pattern 'node_child_process' in scripts/verify-existing-reviews.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/verify-existing-reviews.js: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-b5e313fcc31ca36e", "name": "Insecure pattern 'node_child_process' in scripts/run-full-data-audit.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-full-data-audit.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a08760008528468", "name": "Insecure pattern 'node_child_process' in scripts/opening-night-readiness.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/opening-night-readiness.js: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-94e6fe0a2869dfd1", "name": "Insecure pattern 'node_child_process' in scripts/apply-commercial-pending.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/apply-commercial-pending.js: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-edd30c8c126ad605", "name": "Insecure pattern 'node_child_process' in scripts/deploy-now.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/deploy-now.js: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-e748836591b3dcdb", "name": "Insecure pattern 'node_child_process' in scripts/pause-rebuild.js:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/pause-rebuild.js: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-87eb567362fe2c7c", "name": "Insecure pattern 'node_child_process' in scripts/notion-action-poll.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/notion-action-poll.js: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-538a0639e7fba2f1", "name": "Insecure pattern 'node_child_process' in scripts/test-send-lock.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-send-lock.js:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cd38aa55cfa23e5f", "name": "Insecure pattern 'node_child_process' in scripts/test-commercial-integration.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-commercial-integration.js: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-a50af10ef783218f", "name": "Insecure pattern 'node_child_process' in scripts/migrate-outlet-id-canonicalization.js:130", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/migrate-outlet-id-canonicalization.js:130"}, "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-17ca24f66b7cca9f", "name": "Insecure pattern 'node_child_process' in scripts/btc-smoke-test.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/btc-smoke-test.js: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-9555a64659f9fdad", "name": "Insecure pattern 'new_function_used' in scripts/scrape-seatplan-audience.js:126", "shortDescription": {"text": "Insecure pattern 'new_function_used' in scripts/scrape-seatplan-audience.js:126"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c37806ab7d301c37", "name": "Insecure pattern 'node_child_process' in scripts/test-gd-scraper-parity.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-gd-scraper-parity.js: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-268b16c8a0da0139", "name": "Insecure pattern 'node_child_process' in scripts/audit-closing-dates.js:190", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-closing-dates.js:190"}, "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-e5edf8a888e79fb6", "name": "Insecure pattern 'node_child_process' in scripts/test-sync-tracker.js:15", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/test-sync-tracker.js:15"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-520023a1cd54c404", "name": "Insecure pattern 'node_child_process' in scripts/deep-research-commercial.js:889", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/deep-research-commercial.js:889"}, "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-dbb4be10d263e61d", "name": "Insecure pattern 'node_child_process' in scripts/execute-approved-fix.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/execute-approved-fix.js:22"}, "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-7206705c8f9e35b6", "name": "Insecure pattern 'node_child_process' in scripts/run-cohort-recovery.js:65", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-cohort-recovery.js:65"}, "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-f07805b7f5ffc41b", "name": "Insecure pattern 'node_child_process' in scripts/validate-stubhub-urls.js:29", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/validate-stubhub-urls.js: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-6cf237e400dd48b8", "name": "Insecure pattern 'node_child_process' in scripts/check-post-rebase-survival.js:44", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-post-rebase-survival.js:44"}, "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-29730edc04052289", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/generate-status-page.js:413", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/generate-status-page.js:413"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac3028307f4eb693", "name": "Insecure pattern 'insert_adjacent_html' in scripts/generate-status-page.js:616", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in scripts/generate-status-page.js:616"}, "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-a94a0653c46724f7", "name": "Insecure pattern 'node_child_process' in scripts/manual-review-direct.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/manual-review-direct.js: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-bfc397a954e0d557", "name": "Insecure pattern 'node_child_process' in scripts/scrape-show-score-audience.js:956", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scrape-show-score-audience.js:956"}, "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-e81175e7ff79ecca", "name": "Insecure pattern 'node_child_process' in scripts/health-check.js:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/health-check.js: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-0b6af93a22fd74ff", "name": "Insecure pattern 'node_child_process' in scripts/check-image-aspect.js:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-image-aspect.js: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-12462c109aabe8a7", "name": "Insecure pattern 'node_child_process' in scripts/check-secrets-health.js:201", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-secrets-health.js:201"}, "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-75af3e6ce8602c05", "name": "Insecure pattern 'node_child_process' in scripts/sweep-we-aggregators.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sweep-we-aggregators.js: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-cf2e9e274e499e74", "name": "Insecure pattern 'node_child_process' in scripts/visual-qa.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/visual-qa.mjs: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-ab776ccf70c3a5f8", "name": "Insecure pattern 'node_child_process' in scripts/enrich-west-end-dates.js:688", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-west-end-dates.js:688"}, "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-3254de8a22e83680", "name": "Insecure pattern 'node_child_process' in scripts/batch-correct-reviews.js:151", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/batch-correct-reviews.js:151"}, "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-087df8368baa2a27", "name": "Insecure pattern 'node_child_process' in scripts/opening-night-status.js:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/opening-night-status.js: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-90db50e94da70080", "name": "Insecure pattern 'node_child_process' in scripts/ingest-manual-review.js:286", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ingest-manual-review.js:286"}, "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-30415011506a377f", "name": "Insecure pattern 'node_child_process' in scripts/scrape-lottery-rush.js:1934", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scrape-lottery-rush.js:1934"}, "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-1e5b75653daab822", "name": "Insecure pattern 'node_child_process' in scripts/backfill-playwright-credits.js:54", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/backfill-playwright-credits.js:54"}, "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-37a9da4757e1c89c", "name": "Insecure pattern 'node_child_process' in scripts/analyze-rebuild-drops.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/analyze-rebuild-drops.js: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-9f7c8cc6dcb7979c", "name": "Insecure pattern 'node_child_process' in scripts/fantasy-admin.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/fantasy-admin.js: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-073ee187556fa23f", "name": "Insecure pattern 'node_child_process' in scripts/analyze-score-extraction-soak.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/analyze-score-extraction-soak.js:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19534ed455b73194", "name": "Insecure pattern 'node_child_process' in scripts/fetch-aggregator-pages.ts:510", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-aggregator-pages.ts:510"}, "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-5bec819df3e17f5d", "name": "Insecure pattern 'node_child_process' in scripts/preflight-recovery-budget.js:41", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/preflight-recovery-budget.js: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-22d5fbc61452f8a0", "name": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scrape-off-broadway-alliance.js:168", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scrape-off-broadway-alliance.js:168"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f04242c102c10c47", "name": "Insecure pattern 'node_child_process' in scripts/recover-wsj-subscriber.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/recover-wsj-subscriber.js: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-238beb9abda11f5f", "name": "Insecure pattern 'node_child_process' in scripts/rediscover-review-urls.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/rediscover-review-urls.js:22"}, "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-98ebe815600dde46", "name": "Insecure pattern 'node_child_process' in scripts/classify-wrong-production.js:305", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/classify-wrong-production.js:305"}, "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-e212f16132f9b049", "name": "Insecure pattern 'node_child_process' in scripts/gather-reviews.js:4214", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/gather-reviews.js:4214"}, "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-4090f92a9b58c975", "name": "Insecure pattern 'node_child_process' in scripts/bundle-show-page-catalog-pdf.mjs:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/bundle-show-page-catalog-pdf.mjs:16"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-78680ebd6dcf4263", "name": "Insecure pattern 'node_child_process' in scripts/check-bundle-size.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-bundle-size.js: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-43487ef54b092e2c", "name": "Insecure pattern 'node_child_process' in scripts/audit-show-review-gap.js:51", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-show-review-gap.js:51"}, "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-fc9b5f075a585ba0", "name": "Insecure pattern 'node_child_process' in scripts/newspapers-com-extract.js:297", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/newspapers-com-extract.js:297"}, "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-17ad91b7283dcb50", "name": "Insecure pattern 'node_child_process' in scripts/rebuild-awards-from-precursors.js:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/rebuild-awards-from-precursors.js: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-34e4d0b109b972d9", "name": "Insecure pattern 'node_child_process' in scripts/enrich-off-broadway-dates.js:994", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-off-broadway-dates.js:994"}, "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-40ba253eeb56df87", "name": "Insecure pattern 'node_child_process' in scripts/send-opening-night-broadcast.js:24", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/send-opening-night-broadcast.js: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-7d9126ec06736ae8", "name": "Insecure pattern 'node_child_process' in scripts/extract-theatre-record.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/extract-theatre-record.js: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-e2e2e09f8bbd3cf6", "name": "Insecure pattern 'node_child_process' in scripts/sync-review-texts.sh:89", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/sync-review-texts.sh:89"}, "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-9399379918e51bff", "name": "Insecure pattern 'node_child_process' in scripts/query.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/query.js: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-5cf95da1dee00273", "name": "Insecure pattern 'node_child_process' in scripts/check-data-health.js:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-data-health.js:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1f85722435894025", "name": "Insecure pattern 'node_child_process' in scripts/validate-data.js:1264", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/validate-data.js:1264"}, "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-6a033c33299ccad0", "name": "Insecure pattern 'node_child_process' in scripts/audit-opening-night-coverage.js:311", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-opening-night-coverage.js:311"}, "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-3ea5208c257f3509", "name": "Insecure pattern 'node_child_process' in scripts/auto-fix-feedback-bug.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/auto-fix-feedback-bug.js: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-7236f73a0701b7dc", "name": "Insecure pattern 'node_child_process' in scripts/run-bulk-historical-import.js:46", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-bulk-historical-import.js:46"}, "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-9afe37827dbf09f7", "name": "Insecure pattern 'node_child_process' in scripts/notify-pending-commercial-notion.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/notify-pending-commercial-notion.js:22"}, "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-b5766b0f1a39d055", "name": "Insecure pattern 'node_child_process' in scripts/scoring-delta.js:43", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/scoring-delta.js:43"}, "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-5b4a619c2c0fa5a6", "name": "Insecure pattern 'node_child_process' in scripts/audit-opening-dates.js:84", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/audit-opening-dates.js:84"}, "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-40e8070a70998825", "name": "Insecure pattern 'node_child_process' in scripts/fetch-square-images.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-square-images.js:22"}, "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-4557e66e3f72c430", "name": "Insecure pattern 'node_child_process' in scripts/simulate-opening-night-full.sh:113", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/simulate-opening-night-full.sh:113"}, "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-3e1703639f5b9c1b", "name": "Insecure pattern 'node_child_process' in scripts/check-cutoff-freshness.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-cutoff-freshness.js: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-c31b6302642d5ad3", "name": "Insecure pattern 'node_child_process' in scripts/recover-wayback-reviews.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/recover-wayback-reviews.js: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-c3dd6af4c59ab2a6", "name": "Insecure pattern 'node_child_process' in scripts/bundle-aggregate-catalog-pdf.mjs:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/bundle-aggregate-catalog-pdf.mjs: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-663ec03ec5821343", "name": "Insecure pattern 'node_child_process' in scripts/enrich-ibdb-dates.js:341", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-ibdb-dates.js:341"}, "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-b5929afef83a5bfd", "name": "Insecure pattern 'node_child_process' in scripts/auto-fix-friction-card.js:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/auto-fix-friction-card.js: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-a97c2398348e759e", "name": "Insecure pattern 'node_child_process' in scripts/rebuild-memory-index.js:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/rebuild-memory-index.js: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-5af98c403fd7398a", "name": "Insecure pattern 'node_child_process' in scripts/merge-bww-excerpts.js:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/merge-bww-excerpts.js: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-3b5c0a836d2e232e", "name": "Insecure pattern 'node_child_process' in scripts/collect-review-texts.js:5195", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/collect-review-texts.js:5195"}, "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-a0694044a3de5307", "name": "Insecure pattern 'node_child_process' in scripts/watch-aggregator-urls.js:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/watch-aggregator-urls.js: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-49fd40baefbff16e", "name": "Insecure pattern 'node_child_process' in scripts/clean-orphan-pending.js:35", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/clean-orphan-pending.js:35"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c990c7ba7fd89961", "name": "Insecure pattern 'node_child_process' in scripts/detect-revivals-ibdb.js:193", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/detect-revivals-ibdb.js:193"}, "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-ff85f76f3cc09717", "name": "Insecure pattern 'node_child_process' in scripts/ingest-urls.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ingest-urls.js: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-ba56d307fe566b42", "name": "Insecure pattern 'node_child_process' in scripts/verify-review-recovery.js:37", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/verify-review-recovery.js:37"}, "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-b7daec57c7a7646d", "name": "Insecure pattern 'node_child_process' in scripts/video-reviews/extract-transcripts.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/extract-transcripts.js:10"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-022dbd9a213cd999", "name": "Insecure pattern 'node_child_process' in scripts/video-reviews/collect-transcripts.js:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/collect-transcripts.js: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-08c05e5e9d3d214e", "name": "Insecure pattern 'node_child_process' in scripts/video-reviews/discover-videos.js:26", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/discover-videos.js: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-0f78954a86904e48", "name": "Insecure pattern 'node_child_process' in scripts/video-reviews/backfill-thumbnails.js:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/backfill-thumbnails.js: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-76e7abbd3b9f7951", "name": "Insecure pattern 'node_child_process' in scripts/lib/merge-commercial-conflict.js:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/merge-commercial-conflict.js: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-3af92cc60a61e605", "name": "Insecure pattern 'eval_used' in scripts/lib/dom-article-extractor.js:211", "shortDescription": {"text": "Insecure pattern 'eval_used' in scripts/lib/dom-article-extractor.js:211"}, "fullDescription": {"text": "Found a known-risky pattern (eval_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ca305a5895b5b7c5", "name": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.test.mjs:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.test.mjs:9"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9100eb9b9ee21014", "name": "Insecure pattern 'node_child_process' in scripts/lib/send-lock.js:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/send-lock.js: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-23fe9907e1310c1c", "name": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.mjs:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.mjs: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-8d785ebcce8b4b86", "name": "Insecure pattern 'node_child_process' in scripts/lib/restore-protected-fields.js:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lib/restore-protected-fields.js:22"}, "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-d7ad420d4536d388", "name": "Insecure pattern 'node_child_process' in scripts/llm-scoring/index.ts:56", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/llm-scoring/index.ts:56"}, "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-92f6e81c90ad38ed", "name": "Insecure pattern 'node_child_process' in scripts/one-off/clear-stale-ensemble-data.js:19", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/one-off/clear-stale-ensemble-data.js: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-d7a1594dd43f2c96", "name": "Insecure pattern 'node_child_process' in scripts/newsletter/create-broadcast-draft.mjs:39", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/create-broadcast-draft.mjs:39"}, "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-1938108c5787cb4a", "name": "Insecure pattern 'node_child_process' in scripts/newsletter/generate.mjs:6", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/generate.mjs:6"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3965a5952959b57f", "name": "Insecure pattern 'node_child_process' in scripts/newsletter/regression-test.mjs:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/regression-test.mjs: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-2606ee42ccb3b92d", "name": "Insecure pattern 'tls_verify_false' in .claude/hooks/verify-edits.sh:392", "shortDescription": {"text": "Insecure pattern 'tls_verify_false' in .claude/hooks/verify-edits.sh:392"}, "fullDescription": {"text": "Found a known-risky pattern (tls_verify_false). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1221915e8bcb851", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/status.html:145", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/status.html:145"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e99bc2b09952dd73", "name": "Insecure pattern 'insert_adjacent_html' in public/status.html:348", "shortDescription": {"text": "Insecure pattern 'insert_adjacent_html' in public/status.html:348"}, "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-ab8a0ab57dc0020d", "name": "Insecure pattern 'direct_innerhtml_assignment' in public/og/social/top5-running.html:293", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/og/social/top5-running.html:293"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87ca94236e6c4f18", "name": "Insecure pattern 'node_child_process' in .github/workflows/check-cwv-health.yml:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .github/workflows/check-cwv-health.yml: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-b1d277df8721d47a", "name": "Insecure pattern 'node_child_process' in .github/workflows/check-performance.yml:109", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .github/workflows/check-performance.yml:109"}, "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-4b8866c37e6323fd", "name": "Insecure pattern 'node_child_process' in .github/actions/push-review-texts/action.yml:69", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .github/actions/push-review-texts/action.yml:69"}, "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-994f77bbbe494776", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/ReviewBody.tsx:14", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/ReviewBody.tsx:14"}, "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-1e7ec9eb72ecd612", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/StressTest.tsx:15", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/StressTest.tsx:15"}, "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-7920925c7bec26a5", "name": "Possible secret in src/components/show-cards/ShowListCard.tsx", "shortDescription": {"text": "Possible secret in src/components/show-cards/ShowListCard.tsx"}, "fullDescription": {"text": "Detected pattern matching generic_api_key. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4e5850ed80e8746c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:277", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:277"}, "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-c7513ee7dfab1ed8", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:119", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:119"}, "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-63e629cbf3a0831e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/page.tsx:56", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/page.tsx:56"}, "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-990dbfd551d04535", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/page.tsx:57", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/page.tsx:57"}, "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-d3654935a292a086", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/[slug]/page.tsx:75", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/[slug]/page.tsx:75"}, "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-c47affdfe8f177fb", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/[slug]/page.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/[slug]/page.tsx:70"}, "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-28e8d14f5af79f61", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/creative/[slug]/page.tsx:59", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/creative/[slug]/page.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-519d1560a575949d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/playwrights/page.tsx:45", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/playwrights/page.tsx:45"}, "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-2d0abf50db231721", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/off-broadway/page.tsx:74", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/off-broadway/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-ea28252191076b63", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/browse/[slug]/page.tsx:183", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/browse/[slug]/page.tsx:183"}, "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-64e9134507610524", "name": "Insecure pattern 'cors_wildcard' in src/app/api/badge/[slug]/route.ts:75", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/badge/[slug]/route.ts:75"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da8fa5b3e96fc6a6", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/olivier-awards/page.tsx:156", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/olivier-awards/page.tsx:156"}, "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-6127a0cbc40e9326", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/page.tsx:107", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/page.tsx:107"}, "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-ad775a2918ef4e29", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/[season]/page.tsx:114", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/[season]/page.tsx:114"}, "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-d4c6170ce8c6ba12", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/all-time/page.tsx:99", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/all-time/page.tsx:99"}, "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-3bf68031cbb52ce2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/lotteries/page.tsx:213", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lotteries/page.tsx:213"}, "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-b4f01b7725efc1d3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/trending/page.tsx:88", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/trending/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-b3d7b8694c9ec075", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/cast-changes/page.tsx:264", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast-changes/page.tsx:264"}, "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-b0a5f81be761e872", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/reviews/[slug]/page.tsx:126", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/reviews/[slug]/page.tsx:126"}, "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-748b6a21aa6b98e6", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/best-value/page.tsx:254", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/best-value/page.tsx:254"}, "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-d8a0ef8466c5bf8c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/page.tsx:53", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/page.tsx:53"}, "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-036b275cdb96fe13", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/[slug]/page.tsx:63", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/[slug]/page.tsx:63"}, "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-1f4f41fd44e6216f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/broadway-theaters-map/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/broadway-theaters-map/page.tsx:55"}, "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-8215ef75d907a6f3", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/opera/page.tsx:87", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/opera/page.tsx:87"}, "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-abba110706ab2db0", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/box-office/page.tsx:90", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/box-office/page.tsx:90"}, "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-99646c2fc3c69816", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/page.tsx:101", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/page.tsx:101"}, "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-a60b7f04a3afd2a9", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/page.tsx:139", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/page.tsx:139"}, "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-fe1ab6e7257710bf", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/[season]/page.tsx:299", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/[season]/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-b2829ef74a66a9fc", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/press-picks/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/press-picks/page.tsx:55"}, "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-83e7508a632ae190", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/winners-2026/page.tsx:176", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/winners-2026/page.tsx:176"}, "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-813012bb38926a6c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/nominees/page.tsx:74", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/nominees/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-ef472306e52b175e", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/people/page.tsx:97", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/people/page.tsx:97"}, "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-8199b3691b8b8619", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/audience-buzz/page.tsx:114", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/audience-buzz/page.tsx:114"}, "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-5b0b40bf257f6c6d", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/directors/page.tsx:45", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/directors/page.tsx:45"}, "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-0afc4123d5d0b410", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/discount-tickets/page.tsx:149", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/discount-tickets/page.tsx:149"}, "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-6d5fed38f6463625", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/show/[slug]/page.tsx:366", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/show/[slug]/page.tsx:366"}, "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-f8903b621394effa", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/page.tsx:101", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/page.tsx:101"}, "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-4c6a3f002c5d98eb", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/[season]/page.tsx:86", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/[season]/page.tsx:86"}, "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-c711012db1c75091", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/lyricists/page.tsx:45", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lyricists/page.tsx:45"}, "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-42af3ce100c48aca", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/composers/page.tsx:45", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/composers/page.tsx:45"}, "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-2bd0207363fad08f", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/standing-room/page.tsx:178", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/standing-room/page.tsx:178"}, "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-589b12e79dfb4dcf", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/off-west-end/page.tsx:72", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/off-west-end/page.tsx:72"}, "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-7ddf9dd12c7e1346", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/page.tsx:130", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/page.tsx:130"}, "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-e1ffc8b914c3ead2", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/[shows]/page.tsx:310", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/[shows]/page.tsx:310"}, "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-b93d013817857947", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:44", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:44"}, "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-da037a0ea4129d94", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/cheap-broadway-tickets/page.tsx:139", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/cheap-broadway-tickets/page.tsx:139"}, "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-6eca46afd407e5bd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/off-broadway-vs-broadway/page.tsx:77", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/off-broadway-vs-broadway/page.tsx:77"}, "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-47f34334741f0d88", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/broadway-first-timer-guide/page.tsx:74", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/broadway-first-timer-guide/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-f4df8b4f1b50fc1c", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/what-to-wear-to-broadway/page.tsx:70", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/what-to-wear-to-broadway/page.tsx:70"}, "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-46fe982b26e30ee7", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/[slug]/page.tsx:204", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/[slug]/page.tsx:204"}, "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-db64a48f8a7be4d5", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/page.tsx:58", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/page.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-61706615437d4f88", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/[slug]/page.tsx:143", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/[slug]/page.tsx:143"}, "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-b54d39914241bbd4", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/rush/page.tsx:248", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/rush/page.tsx:248"}, "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-ec66e45273b4edbd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/best/[category]/page.tsx:109", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/best/[category]/page.tsx:109"}, "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-ac791c44cb34386a", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/rankings/page.tsx:177", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/rankings/page.tsx:177"}, "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-f5c8659aa8edac92", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/methodology/page.tsx:133", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/methodology/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-3eaecd9e5a90ac82", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/biz/page.tsx:190", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/biz/page.tsx:190"}, "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-058dc650073bf3d1", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/page.tsx:124", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/page.tsx:124"}, "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-f78f17ed4157d362", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/lotteries/page.tsx:207", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/lotteries/page.tsx:207"}, "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-e64d0e84ac279268", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/trending/page.tsx:90", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/trending/page.tsx:90"}, "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-6ad3b3a604ec8107", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/best-value/page.tsx:238", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/best-value/page.tsx:238"}, "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-68f2f45c55f3a7fd", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/audience-buzz/page.tsx:86", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/audience-buzz/page.tsx:86"}, "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-2cc4b69e87101a19", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/discount-tickets/page.tsx:152", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/discount-tickets/page.tsx:152"}, "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-3540581e185f9bdf", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/standing-room/page.tsx:167", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/standing-room/page.tsx:167"}, "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-b2cbb25a0c3248cc", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/page.tsx:55", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/page.tsx:55"}, "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-e5a0352731a74b75", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/[slug]/page.tsx:97", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/[slug]/page.tsx:97"}, "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-2ad8cfdc72b81674", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/rush/page.tsx:238", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/rush/page.tsx:238"}, "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-94699df299e7fc21", "name": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/methodology/page.tsx:134", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/methodology/page.tsx:134"}, "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-b4ee01d1e475c219", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b77b11e995da0bfb", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-37f7bb238d1ed86a", "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-3a3aada82aead542", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ac4b718508d11a5f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4f148fe8928fe406", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b68182cdad78ebfc", "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-d687d1b763f74f4c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-f5f0501b53174559", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-8c2c22c083ddd702", "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-59bda82f3491b6e6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-164979f738d2da72", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-a718d4463c5387c2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4e6c78610559b7d7", "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-f78b6f5eae8546e2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b516010b6c00e07d", "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-1838e20eff47c243", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-0f9a13f7a7a11cb4", "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-494d2ab9d1b28d08", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ba7fa7889334b075", "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-029bae6adc723538", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-438549277c388942", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4bc8b5ad0012f628", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-43fb83fcc7a0e8c0", "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-634f2322402e8f14", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-1acb52d4e0d39142", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c8f9b6dd6fe7657c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-d6f2b40effb1b947", "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-124aeb9a3b39c589", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-0a435f836c14b168", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-25c64c1e94da26d1", "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-71298f45e512e29c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-f94c2632685d3ec7", "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-973e67a9fcfcc421", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-927c1275740a7015", "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-82ccd87f67e2696e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-38165696de186def", "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-f705e42328f48380", "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@v5 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-65de013c2bb2c02d", "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-dc1ba2f5ff2c577c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-7efbda965f283c17", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-88f74990bb0c23b6", "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-874036cb92b64a11", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-fba0716278390204", "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-eded304b74aff7ad", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-fb7f628c3275d342", "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-ab5dacc467a1e8e1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-02a5bf5ca594efe4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d19e8a5691227781", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-068220d4baa42b17", "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-d4cf19cfa4b9da52", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-7d823060b78ae6ab", "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-9ccab4da98dac2f2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9fc4ac5db94f0352", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-be572a3e14f724fb", "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-cf25df0c38e818eb", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3333b53e43f87d94", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-87a073f00d152d22", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4988a1544115a5f8", "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-d31abb5adfc9d21c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-89b61e4892c2fc3d", "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-5af718beb5c27d8b", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4018610f40d4734e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c2cc91ae9a754aaf", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-8b64bd78ccdd27f5", "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-9d9943a0e4f233d9", "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-c9875116a8efdbec", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-61f14ae75b1ff2bd", "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-c9381c3ce31692d7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9f7a650150efb205", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-daae9be1d8e4c5ae", "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-b1a13a1221df2dde", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-86fa9106e377c666", "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-3ec614558519ad2e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ac137dfb572754c4", "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-e771207ce4ab5fbe", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c2c868b4ecad7e45", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-740b88ab8dd23d2f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "dependabot/fetch-metadata@v2 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": "medium", "confidence": 1.0}}, {"id": "scanner-768e8f28c1850d98", "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-429b68e36d54e39a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-254d4053bc05a90c", "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-68a9d5d7769213e4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3d0d875ce95264ad", "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-de57233602c29cad", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-a6ae904a6ca84128", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-0c30a707be861c86", "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-9b6d38602c8a560f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-7c5eeb37aebf50e8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-6fe8776d08270eb1", "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-c658478b77f69c4c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-93e4d2074a065174", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-87e40684c071dcbb", "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-317097cab128c5d1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-07680721fec652d6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9bbba250e15d8332", "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-11520ff4f93e1467", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-f49941c28c2d0162", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c45495dbbc741096", "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-557662b746f43e69", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ce963c1841b4626b", "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-4588c05b82ed5a1f", "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-2beb0f7b70ad8b07", "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-cef6b037dfbbb9fd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-702f9d36bcd1f174", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-327fc655b6ab2346", "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-1f35182d1d693c97", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c6fab7f0efc30817", "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-ebedf27064be6f28", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c7cf78fa3a09ed80", "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-0154d973bef90b52", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-23643ba4bca9ea88", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b422f6e5827efbff", "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-6125950232cefb24", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-a91a9c73589db7fd", "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-98ac6ca60da12cdc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-7cfbf63fbdcb6371", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-9a94069a01e1d4c9", "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-09444d738bb05870", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c13996a625c627bd", "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-61a4a3f8c1ecf51d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-40ca47343ea3cab6", "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-f80658b4f3ce1096", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b46d82c63879b9d6", "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-a0b9070b54fb5ea0", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-118baaba32d5635e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-22f7d4c216a9c70a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b632eceb1f70241a", "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-7c9b40f1f37ec153", "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@v5 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-fe204cb068c00788", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-11f5033bae061e52", "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-b3ab93879f89dfba", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9b1e071724e70895", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3b1f4dec56efb74f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-25c0a02f5097b9f8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-29d1301b7d6027b1", "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-95c9a50fe586b738", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-214b03a4de64a30d", "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-d84e2ede32c06472", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-34b62f685771fd93", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-4c5a64db1a7aa5d1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b5deeaed505fac35", "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-1f408696a5a20867", "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-1648082d55df8ec3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ab0423d02612241f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d2448c8b70d383d8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-5bc935b941dc5c5c", "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-92ddb36f941e6c26", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-b04b4e131f266e06", "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-6437f83c151ddf4e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-0baa046a51d581a3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-6556987b686a8bfb", "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-7f8567acaac9976e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-aec70a3c9b88cc03", "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-407bf7391077be3a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-15522be4298f8ae0", "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-8ccf698f55001422", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-6b69815c4e233e59", "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-1b842ad343352ce2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-a3a73a1ce4a42542", "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-dc751497a6779957", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-1b1378f5ba915d8a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-489470981dc8fe05", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9b5c046248d1428a", "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-5a205277d0eefc45", "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-c03763772a90ed9c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d6a3978d6d1aacb5", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-bc703cb1879b86e1", "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-db7460f3afaf0b7a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9251c19510322527", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-2db0435aa444f180", "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-f0b6b47a53b6eb15", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-1dd7cfc521ff046d", "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-39257fcb7f831561", "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-f400c4c44a0a90d6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-c75a9cbf1632f180", "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-c12c118879fa42bc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-623be6692706c631", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d96f43e8756d0210", "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-1e4543b79e8afd91", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-cbf960a7df917f37", "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-722017defef35979", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-da174d37e2ec7f03", "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-343c0cf04d660ee6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-6d5af7f4a8a87bec", "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-8d7ce54bd5b12589", "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@v5 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-b2677cce2121e17d", "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-61a4e62b76fbe903", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ac0cdb2342f986ba", "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-6fba8e6bf8d68148", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-0008a9e6f4a94949", "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-b3b3fcfab4e52a68", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-fb72c86538f34af0", "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-37a2d1a4a3d1f587", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-76b6ed319d826690", "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-82b8d37f6f7b8ad8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3a8084da8ea5006f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4c638c3213c345d1", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3987494f8df7b7b9", "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-25654135f16de797", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-cdb8fbb31decef93", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-e4485e31951dd505", "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-84719a021226e1c8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9a3bdf39bf9b253c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-8c7322583fa50d23", "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-89b6398f9145b50a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d3009165781cdbd7", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ebd3018b3c2c5d65", "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-9acc7c35f58d4c39", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d9c0cfd2397c8480", "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-a1e79da8dedcc865", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-2d68ccf4e3b0a7a0", "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-af8bf37e347ec248", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-a6a83eb434f51be3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-241a6d1bf125b372", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-96f8148945a0c3e4", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-403572a102a8d782", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-cf442b3b214a4078", "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-4268d310ab658cdb", "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-8c31b10d9f4fd058", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-67c5f4784f82d27a", "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-3bc4d2dd9551c7e9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-6186272a989a04f3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/setup-node@v5 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-cb753fbb4a34cffe", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-dc6909a18805e19e", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-bc6ccfac12f2fce9", "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-123cb418b0a214b6", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-20e687ddf7932db8", "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-943cdee77d1a7a33", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-9e08de1abf3b6c1b", "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-2aecf3b7b2694dbd", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-7145a82e8760c71a", "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-c9d505a4f82adf7f", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-f0ac083251c2e0bc", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-2ac7683548257673", "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-e5aa8b48075bbda9", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d851545ad9fff774", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d4e806cd939ffb37", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-ab8714ac38b8590d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-06aa09540f8e4882", "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-01662f5aa984103a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-d9dc60f60336e098", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v5 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-1645a29d355b8914", "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-e01f85c2b621f181", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-4898583257e704d4", "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-2311f6849c7fdfca", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-44eae67a8ea5f1ed", "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-075351f18de902b3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-3e65c3631d7b0a5a", "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-fffcf6d8637d74f8", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 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-bc7b843392a9a0fe", "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-eb234ad64f9d9b48", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v5 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9eea9754a61708be", "name": "Very large file: tests/unit/review-normalization.test.js (1278 lines)", "shortDescription": {"text": "Very large file: tests/unit/review-normalization.test.js (1278 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-0fb51fc42da0c939", "name": "Very large file: scripts/enrich-awards-with-precursors.js (1079 lines)", "shortDescription": {"text": "Very large file: scripts/enrich-awards-with-precursors.js (1079 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-6befe6e898fbdab9", "name": "Very large file: scripts/scrape-bww-reviews.js (1400 lines)", "shortDescription": {"text": "Very large file: scripts/scrape-bww-reviews.js (1400 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-6e315aa21b91c24d", "name": "Very large file: scripts/opening-night-poller.js (2087 lines)", "shortDescription": {"text": "Very large file: scripts/opening-night-poller.js (2087 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-1864c7c324d7dec4", "name": "Very large file: scripts/health-check.js (1865 lines)", "shortDescription": {"text": "Very large file: scripts/health-check.js (1865 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-32883b7162378ba2", "name": "Very large file: scripts/test-opening-night-fixes.js (2194 lines)", "shortDescription": {"text": "Very large file: scripts/test-opening-night-fixes.js (2194 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-3576619852401d17", "name": "Very large file: scripts/sweep-we-aggregators.js (1319 lines)", "shortDescription": {"text": "Very large file: scripts/sweep-we-aggregators.js (1319 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-001b7cd98c92bdcf", "name": "Very large file: scripts/discover-new-shows.js (2293 lines)", "shortDescription": {"text": "Very large file: scripts/discover-new-shows.js (2293 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-9f5d2cb3d1a9ba47", "name": "Very large file: scripts/update-commercial-data.js (2603 lines)", "shortDescription": {"text": "Very large file: scripts/update-commercial-data.js (2603 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-9b9bcbd89c4dedc4", "name": "Very large file: scripts/scrape-lottery-rush.js (1947 lines)", "shortDescription": {"text": "Very large file: scripts/scrape-lottery-rush.js (1947 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-03b60535d01aba96", "name": "Very large file: scripts/audit-touring-contamination.js (1105 lines)", "shortDescription": {"text": "Very large file: scripts/audit-touring-contamination.js (1105 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-2dcab6b45d2ad8b5", "name": "Very large file: scripts/scrape-cast-changes.js (1885 lines)", "shortDescription": {"text": "Very large file: scripts/scrape-cast-changes.js (1885 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-1f651d6e2de5de8a", "name": "Very large file: scripts/gather-reviews.js (5265 lines)", "shortDescription": {"text": "Very large file: scripts/gather-reviews.js (5265 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-faa0ef649fbcec01", "name": "Very large file: scripts/validate-data.js (4655 lines)", "shortDescription": {"text": "Very large file: scripts/validate-data.js (4655 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-7ab7f2d184d57862", "name": "Very large file: scripts/rebuild-all-reviews.js (4791 lines)", "shortDescription": {"text": "Very large file: scripts/rebuild-all-reviews.js (4791 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-512960a993413da9", "name": "Very large file: scripts/fetch-show-images-auto.js (2792 lines)", "shortDescription": {"text": "Very large file: scripts/fetch-show-images-auto.js (2792 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-7e2c48066eba575a", "name": "Very large file: scripts/recover-wayback-reviews.js (1368 lines)", "shortDescription": {"text": "Very large file: scripts/recover-wayback-reviews.js (1368 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-df5283e632855540", "name": "Very large file: scripts/classify-non-reviews.js (1221 lines)", "shortDescription": {"text": "Very large file: scripts/classify-non-reviews.js (1221 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-17de5288e0d92b2c", "name": "Very large file: scripts/collect-review-texts.js (6847 lines)", "shortDescription": {"text": "Very large file: scripts/collect-review-texts.js (6847 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-ac2e178309233965", "name": "Very large file: scripts/lib/show-matching.js (1322 lines)", "shortDescription": {"text": "Very large file: scripts/lib/show-matching.js (1322 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-bfd870dfd941e972", "name": "Very large file: scripts/lib/score-extractors.js (1511 lines)", "shortDescription": {"text": "Very large file: scripts/lib/score-extractors.js (1511 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-12fbbffe9dfc468b", "name": "Very large file: scripts/lib/site-search-discovery.js (1205 lines)", "shortDescription": {"text": "Very large file: scripts/lib/site-search-discovery.js (1205 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-597936264b195ed8", "name": "Very large file: scripts/lib/review-normalization.js (1469 lines)", "shortDescription": {"text": "Very large file: scripts/lib/review-normalization.js (1469 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-fa4ba4c8a3dc7362", "name": "Very large file: scripts/lib/review-guards.js (2584 lines)", "shortDescription": {"text": "Very large file: scripts/lib/review-guards.js (2584 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-cc2eb60cae3ed673", "name": "Very large file: scripts/lib/content-quality.js (2747 lines)", "shortDescription": {"text": "Very large file: scripts/lib/content-quality.js (2747 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-c4dd0332d720dde8", "name": "Very large file: scripts/llm-scoring/index.ts (1789 lines)", "shortDescription": {"text": "Very large file: scripts/llm-scoring/index.ts (1789 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-4d410472e070653a", "name": "Very large file: scripts/newsletter/generate.mjs (2162 lines)", "shortDescription": {"text": "Very large file: scripts/newsletter/generate.mjs (2162 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-15b1e899984ce58b", "name": "Very large file: src/config/browse-pages.ts (1113 lines)", "shortDescription": {"text": "Very large file: src/config/browse-pages.ts (1113 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-a2aa910100284c64", "name": "Very large file: src/app/my-shows/MyShowsClient.tsx (1538 lines)", "shortDescription": {"text": "Very large file: src/app/my-shows/MyShowsClient.tsx (1538 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-1021456353cd895d", "name": "Very large file: src/app/beat-the-critics/BeatTheCriticsClient.tsx (852 lines)", "shortDescription": {"text": "Very large file: src/app/beat-the-critics/BeatTheCriticsClient.tsx (852 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-650d9f83af7e6cd7", "name": "Very large file: src/lib/data-tony-predictions.ts (2177 lines)", "shortDescription": {"text": "Very large file: src/lib/data-tony-predictions.ts (2177 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 15246 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 300 placeholder/mock markers across 95 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-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-5b170f97ef09ca5e", "name": "Agent authority lacks a verifier contract: .claude/skills/scraper-reference/skill.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/skills/scraper-reference/skill.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-455f45929563e765", "name": "Commented-code block (5 lines) in next.config.js:22", "shortDescription": {"text": "Commented-code block (5 lines) in next.config.js: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-ad2b16a6581faa67", "name": "Commented-code block (5 lines) in tests/unit/is-includable-for-rebuild.test.mjs:267", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/is-includable-for-rebuild.test.mjs:267"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb5e8afc9f232705", "name": "Commented-code block (9 lines) in tests/unit/review-write-guard-topology.test.mjs:158", "shortDescription": {"text": "Commented-code block (9 lines) in tests/unit/review-write-guard-topology.test.mjs:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba26ce44a367d7a8", "name": "Commented-code block (5 lines) in tests/unit/playbill-verdict-discover.test.mjs:102", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/playbill-verdict-discover.test.mjs: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-5b98600bacc90b1d", "name": "Commented-code block (8 lines) in tests/unit/is-likely-stale-wrong-show.test.mjs:118", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/is-likely-stale-wrong-show.test.mjs:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d81cf989c4e398fb", "name": "Commented-code block (6 lines) in tests/unit/wrong-production-rebuild-guard.test.mjs:122", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/wrong-production-rebuild-guard.test.mjs:122"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e38029d2d89ae38", "name": "Commented-code block (7 lines) in tests/unit/backfill-html-override-rename.test.mjs:24", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/backfill-html-override-rename.test.mjs: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-70d73b877ac4d33d", "name": "Commented-code block (7 lines) in tests/unit/collect-review-texts-rename-helper.test.mjs:119", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/collect-review-texts-rename-helper.test.mjs: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-e45bf7921769271a", "name": "Commented-code block (5 lines) in tests/unit/url-content-sanity.test.mjs:223", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/url-content-sanity.test.mjs:223"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-206cc0b603b47cc0", "name": "Commented-code block (5 lines) in tests/unit/theater-scorecard-regression.test.mjs:43", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/theater-scorecard-regression.test.mjs: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-969c43adf1e1ca03", "name": "Commented-code block (6 lines) in tests/unit/dtli-slug-discover.test.mjs:67", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/dtli-slug-discover.test.mjs:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e528462a465f08d", "name": "Commented-code block (6 lines) in tests/unit/review-normalization.test.js:920", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/review-normalization.test.js:920"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abf6c3480c320b2d", "name": "Commented-code block (5 lines) in tests/unit/cv-stale-wrongproduction-selfheal.test.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/cv-stale-wrongproduction-selfheal.test.mjs: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-043e5c5308727826", "name": "Commented-code block (8 lines) in tests/unit/compute-critic-score.test.mjs:73", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/compute-critic-score.test.mjs: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-7ff420c8d7b11fbd", "name": "Commented-code block (5 lines) in tests/unit/classify-market-routing-siblings.test.mjs:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/classify-market-routing-siblings.test.mjs: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-782d97547daf376c", "name": "Commented-code block (5 lines) in tests/unit/reconcile-broadcast-state.test.mjs:80", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/reconcile-broadcast-state.test.mjs:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0632c3be885d320b", "name": "Commented-code block (5 lines) in tests/unit/classify-market-routing-parity.test.mjs:14", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/classify-market-routing-parity.test.mjs:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cabb9f0b6d99ced", "name": "Commented-code block (5 lines) in tests/unit/rss-single-author-defaultcritic.test.mjs:82", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/rss-single-author-defaultcritic.test.mjs: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-9b952ce9a46e2555", "name": "Commented-code block (5 lines) in tests/unit/orchestrator-guardian-dispatch.test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/orchestrator-guardian-dispatch.test.mjs: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-af4ac88e075265ea", "name": "Commented-code block (5 lines) in tests/unit/content-quality-nyt-bot-stub.test.mjs:114", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/content-quality-nyt-bot-stub.test.mjs: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-845175b37d99506a", "name": "Commented-code block (6 lines) in tests/unit/tier-config-consistency.test.ts:91", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/tier-config-consistency.test.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d9886fc08620b8c", "name": "Commented-code block (7 lines) in tests/unit/url-or-title-guard.test.mjs:92", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/url-or-title-guard.test.mjs: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-e215c4f169c37aaa", "name": "Commented-code block (5 lines) in tests/unit/dom-article-extractor.test.mjs:128", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/dom-article-extractor.test.mjs: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-ff63ec463ac0d6f1", "name": "Commented-code block (5 lines) in tests/unit/tb-mailto-byline.test.mjs:94", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/tb-mailto-byline.test.mjs:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2789dd1a679ec7c", "name": "Commented-code block (5 lines) in tests/unit/llm-scoring-stale-roundup-flag.test.mjs:7", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/llm-scoring-stale-roundup-flag.test.mjs: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-36e904d07285e08d", "name": "Commented-code block (7 lines) in tests/unit/engine.test.ts:115", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/engine.test.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-a90a6d9ee6ae3c10", "name": "Commented-code block (6 lines) in tests/unit/ensemble.test.mjs:254", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/ensemble.test.mjs:254"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c370b8aa676b7e6", "name": "Commented-code block (5 lines) in tests/unit/verify-all-scored.test.mjs:27", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/verify-all-scored.test.mjs: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-5d13feeec7d91072", "name": "Commented-code block (5 lines) in tests/unit/enrich-thumbs.test.mjs:140", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/enrich-thumbs.test.mjs:140"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c020e9ae7af9587", "name": "Legacy-named symbol `hoursOld` in tests/unit/rss-poller-state.test.mjs:13", "shortDescription": {"text": "Legacy-named symbol `hoursOld` in tests/unit/rss-poller-state.test.mjs:13"}, "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-e9e728931bda46ab", "name": "Commented-code block (5 lines) in tests/unit/clear-failure-flags.test.mjs:192", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/clear-failure-flags.test.mjs: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-6ce50e04ceb4452c", "name": "Commented-code block (6 lines) in tests/unit/article-boundary-dedupe.test.mjs:58", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/article-boundary-dedupe.test.mjs: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-0634256beae8b973", "name": "Commented-code block (5 lines) in tests/unit/bww-roundup-extractor.test.mjs:21", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/bww-roundup-extractor.test.mjs: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-df1eddf4ffa9a07d", "name": "Commented-code block (5 lines) in tests/unit/outlet-logos-generated.test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/outlet-logos-generated.test.mjs: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-a0c3d104cd44f500", "name": "Commented-code block (7 lines) in tests/unit/review-guards.test.mjs:158", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/review-guards.test.mjs:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e9b27c758170fe5a", "name": "Commented-code block (5 lines) in tests/unit/poller-idempotency.test.mjs:75", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/poller-idempotency.test.mjs: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-d9ce26efb43cf33b", "name": "Commented-code block (5 lines) in tests/unit/cast-changes-filters.test.mjs:314", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/cast-changes-filters.test.mjs:314"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b7c42818b97c60c", "name": "Commented-code block (5 lines) in tests/unit/opening-night-bypass-corpus.test.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/opening-night-bypass-corpus.test.mjs: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-b758445325a88d2f", "name": "Commented-code block (5 lines) in tests/unit/ob-candidates-digest.test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/ob-candidates-digest.test.mjs: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-d1916b7e31d13772", "name": "Commented-code block (6 lines) in tests/unit/cast-extraction-guards.test.mjs:120", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/cast-extraction-guards.test.mjs:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3ffc45917583876", "name": "Commented-code block (5 lines) in tests/unit/outlet-listing-poller.test.mjs:342", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/outlet-listing-poller.test.mjs:342"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30788073344a83af", "name": "Commented-code block (10 lines) in tests/unit/awards-person-winner-pairing.test.mjs:96", "shortDescription": {"text": "Commented-code block (10 lines) in tests/unit/awards-person-winner-pairing.test.mjs: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-aad6a7ee79c3df11", "name": "Commented-code block (5 lines) in tests/unit/opening-night-checks-juan-a-ramirez-bypass.test.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/opening-night-checks-juan-a-ramirez-bypass.test.mjs: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-baf9d4f71196450e", "name": "Commented-code block (6 lines) in tests/unit/season-stats-enhancement-filter.test.mjs:6", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/season-stats-enhancement-filter.test.mjs: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-4b8fcb359e31c915", "name": "Commented-code block (5 lines) in tests/unit/rebuild-helpers.test.mjs:107", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/rebuild-helpers.test.mjs: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-4b4279e2aaa51174", "name": "Commented-code block (5 lines) in tests/unit/btc-send-picks.test.mjs:163", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/btc-send-picks.test.mjs:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c7a4f00e56e49627", "name": "Commented-code block (5 lines) in tests/unit/regression-guards.test.mjs:58", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/regression-guards.test.mjs: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-6ba0a0da8bbebf31", "name": "Commented-code block (5 lines) in tests/unit/cast-changes-real-data.test.mjs:97", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/cast-changes-real-data.test.mjs:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a7f99232e633160", "name": "Commented-code block (6 lines) in tests/unit/promote-dedup-jaccard.test.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/promote-dedup-jaccard.test.mjs: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-b715d71cdf0fa929", "name": "Commented-code block (5 lines) in tests/unit/serp-defer-iterations.test.mjs:85", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/serp-defer-iterations.test.mjs:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a3b9b627362fef6", "name": "Commented-code block (5 lines) in tests/unit/multi-critic-serp.test.mjs:270", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/multi-critic-serp.test.mjs:270"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21ceee04f84acd7d", "name": "Commented-code block (5 lines) in tests/unit/fantasy-validate-picks.test.ts:77", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/fantasy-validate-picks.test.ts:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f44f444f00fd6e4a", "name": "Commented-code block (7 lines) in tests/unit/manual-content-tier-survives-reclassify.test.mjs:1", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/manual-content-tier-survives-reclassify.test.mjs: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-4f6ca4f3350e724e", "name": "Legacy-named symbol `onlyOld` in tests/unit/long-runner-registry.test.mjs:139", "shortDescription": {"text": "Legacy-named symbol `onlyOld` in tests/unit/long-runner-registry.test.mjs:139"}, "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-f0795679a627eb40", "name": "Commented-code block (5 lines) in tests/unit/pending-promote-validation.test.mjs:36", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/pending-promote-validation.test.mjs: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-240e679106583a44", "name": "Commented-code block (9 lines) in tests/unit/tony-deny-list.test.mjs:28", "shortDescription": {"text": "Commented-code block (9 lines) in tests/unit/tony-deny-list.test.mjs:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5f29a9831ea53c2", "name": "Commented-code block (6 lines) in tests/unit/bww-roundup-method2-fallthrough.test.mjs:34", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/bww-roundup-method2-fallthrough.test.mjs:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbd9f48b5a6cfcb3", "name": "Commented-code block (8 lines) in tests/unit/cast-changes-filters-parity.test.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/cast-changes-filters-parity.test.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-615840bb288cb815", "name": "Commented-code block (8 lines) in tests/unit/review-file-writer-roundup-autoflag.test.mjs:4", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/review-file-writer-roundup-autoflag.test.mjs: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-72babd2e22a30627", "name": "Commented-code block (5 lines) in tests/unit/stage-extractor.test.mjs:61", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/stage-extractor.test.mjs: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-fb9185ea50031d05", "name": "Commented-code block (5 lines) in tests/unit/content-quality-wsj-paywall-gate.test.mjs:43", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/content-quality-wsj-paywall-gate.test.mjs: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-a267364206c27cb0", "name": "Commented-code block (6 lines) in tests/unit/bulk-import-preflight.test.mjs:106", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/bulk-import-preflight.test.mjs:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f7d987f1c86659b", "name": "Commented-code block (6 lines) in tests/unit/show-dedup-slug-prefix.test.mjs:5", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/show-dedup-slug-prefix.test.mjs:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fad6db8b16e0a448", "name": "Commented-code block (6 lines) in tests/unit/bww-roundup-multi-critic.test.mjs:114", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/bww-roundup-multi-critic.test.mjs: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-7ebc747550fc57be", "name": "Commented-code block (5 lines) in tests/unit/review-write-guard.test.mjs:115", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/review-write-guard.test.mjs: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-af1780180a606773", "name": "Commented-code block (5 lines) in tests/e2e/biz-dashboard.spec.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/biz-dashboard.spec.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f716f9a1b50d0628", "name": "Commented-code block (6 lines) in tests/e2e/my-shows-mock.spec.ts:486", "shortDescription": {"text": "Commented-code block (6 lines) in tests/e2e/my-shows-mock.spec.ts:486"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d129a3e8454eedb0", "name": "Commented-code block (5 lines) in tests/e2e/tony-nominees-row-height.spec.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in tests/e2e/tony-nominees-row-height.spec.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4ca7df9c35144edd", "name": "Commented-code block (6 lines) in tests/e2e/beat-the-critics.spec.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in tests/e2e/beat-the-critics.spec.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d77aabc4dfa34cee", "name": "Commented-code block (5 lines) in scripts/enrich-awards-with-precursors.js:59", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/enrich-awards-with-precursors.js: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-845c787868a08848", "name": "Commented-code block (6 lines) in scripts/audit-cross-production.js:17", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-cross-production.js:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df6fe80c9b457466", "name": "Commented-code block (8 lines) in scripts/scrape-bww-reviews.js:436", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/scrape-bww-reviews.js:436"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e5a92ace0af9496", "name": "Commented-code block (7 lines) in scripts/scrape-mezzanine-audience.js:397", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scrape-mezzanine-audience.js:397"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b81fd8aca72e8f6a", "name": "Commented-code block (5 lines) in scripts/scrape-polymarket-tony-history.ts:51", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-polymarket-tony-history.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-a5782b190d06b399", "name": "Commented-code block (9 lines) in scripts/scrape-stagedoor-critics.js:209", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/scrape-stagedoor-critics.js: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-078cd3e07ddd768c", "name": "Commented-code block (5 lines) in scripts/auto-fix-show-data.js:144", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/auto-fix-show-data.js: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-c8d657396d1f0a8d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/submit-google-indexing.js:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/submit-google-indexing.js: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-e2bd4744800dff47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-browserbase-login.js:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-browserbase-login.js:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4de5aee8d588c137", "name": "Commented-code block (5 lines) in scripts/opening-night-readiness.js:163", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/opening-night-readiness.js:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbc4cbbb5cec34b2", "name": "Commented-code block (7 lines) in scripts/apply-commercial-pending.js:148", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/apply-commercial-pending.js:148"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80f99f8a43c7a99f", "name": "Commented-code block (6 lines) in scripts/audit-aggregator-coverage.js:263", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-aggregator-coverage.js: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-47430c9f662f88dd", "name": "Commented-code block (6 lines) in scripts/build-actor-slugs-manifest.js:5", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/build-actor-slugs-manifest.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9f710ecf554cc8f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-actor-images.js:62", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-actor-images.js: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-c7131271af4de5ce", "name": "Commented-code block (5 lines) in scripts/deploy-now.js:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/deploy-now.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c28729de51a3e7f5", "name": "Commented-code block (9 lines) in scripts/opening-night-checklist.js:159", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/opening-night-checklist.js:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6154c0c806f780d7", "name": "Commented-code block (8 lines) in scripts/extract-dtli-reviews.js:142", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/extract-dtli-reviews.js:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9865dd4e7e515d40", "name": "Commented-code block (6 lines) in scripts/audit-critic-outlets.js:54", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-critic-outlets.js: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-459b08dfe2822dde", "name": "Commented-code block (6 lines) in scripts/audit-duplicate-of-url-mismatch.js:32", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-duplicate-of-url-mismatch.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcf71e9b8d3c7d8e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-production-flags.js:129", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-production-flags.js: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-7444f01825900b6b", "name": "Commented-code block (10 lines) in scripts/notion-action-poll.js:339", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/notion-action-poll.js:339"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c3de6240349bdcba", "name": "Commented-code block (5 lines) in scripts/scrape-grosses.ts:171", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-grosses.ts:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c77648254ff3a599", "name": "Commented-code block (7 lines) in scripts/generate-mobile-show-details.js:31", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/generate-mobile-show-details.js: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-e61131ec03231e44", "name": "Commented-code block (5 lines) in scripts/sync-followers.js:80", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/sync-followers.js:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c90b791470842b74", "name": "Commented-code block (6 lines) in scripts/audit-show-director-consensus.js:153", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-show-director-consensus.js: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-17e1577d96655a45", "name": "Commented-code block (6 lines) in scripts/audit-review-contamination.js:105", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-review-contamination.js:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d64101efb8cfac24", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-seo-health.js:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-seo-health.js: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-4f62af1686cf6dab", "name": "Commented-code block (5 lines) in scripts/generate-mobile-data.js:250", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate-mobile-data.js:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b236f6a8ab0a9349", "name": "Commented-code block (5 lines) in scripts/comprehensive-score-audit.js:25", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/comprehensive-score-audit.js:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5005b3fbad77905e", "name": "Commented-code block (5 lines) in scripts/migrate-outlet-id-canonicalization.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/migrate-outlet-id-canonicalization.js: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-5891b6690ab090b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/btc-smoke-test.js:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/btc-smoke-test.js: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-70568a4e497542a1", "name": "Commented-code block (5 lines) in scripts/batch-commercial-research.js:531", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/batch-commercial-research.js: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-90c6adde30da895a", "name": "Commented-code block (5 lines) in scripts/paywall-browser-login.js:93", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/paywall-browser-login.js: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-f2daf67972901f2e", "name": "Commented-code block (5 lines) in scripts/audit-closing-dates.js:61", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-closing-dates.js:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6de6e89533d2244f", "name": "Commented-code block (7 lines) in scripts/audit-regex-patterns.js:90", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/audit-regex-patterns.js:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-688ab0232a775f12", "name": "Commented-code block (6 lines) in scripts/deep-research-commercial.js:560", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/deep-research-commercial.js: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-e8fc1353d341ef2f", "name": "Commented-code block (5 lines) in scripts/validate-stubhub-urls.js:202", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/validate-stubhub-urls.js:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f412cf4409fd1714", "name": "Commented-code block (5 lines) in scripts/scrape-tony-awards.js:257", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-tony-awards.js:257"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9ca76fc2d8485a4", "name": "Commented-code block (5 lines) in scripts/check-post-rebase-survival.js:74", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-post-rebase-survival.js: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-a4bbb718ae42f853", "name": "Commented-code block (10 lines) in scripts/opening-night-poller.js:223", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/opening-night-poller.js:223"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b02b0fa3b0d6d4e", "name": "Commented-code block (5 lines) in scripts/scrape-pulitzer.js:41", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-pulitzer.js: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-2cc2257f5479759f", "name": "Commented-code block (5 lines) in scripts/generate-status-page.js:68", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate-status-page.js: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-724dc719019d6adf", "name": "Commented-code block (5 lines) in scripts/scrape-show-score-audience.js:87", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-show-score-audience.js: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-541124efec975171", "name": "Commented-code block (7 lines) in scripts/analyze-ab-test.js:139", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/analyze-ab-test.js:139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-120b16fb1fa5129e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-ab-test.js:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-ab-test.js:79"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3301da0b6864be80", "name": "Commented-code block (5 lines) in scripts/lint-design-tokens.js:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lint-design-tokens.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b092fb9c0447bdf9", "name": "Legacy-named symbol `daysOld` in scripts/health-check.js:606", "shortDescription": {"text": "Legacy-named symbol `daysOld` in scripts/health-check.js:606"}, "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-eb53b23aff9dad1c", "name": "Commented-code block (5 lines) in scripts/health-check.js:54", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/health-check.js: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-218bd7cbbd1b0991", "name": "Commented-code block (5 lines) in scripts/test-opening-night-fixes.js:29", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-opening-night-fixes.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-421dbed952d56e35", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/get-ai-feedback.js:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/get-ai-feedback.js: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-ad1a14b963bf343b", "name": "Commented-code block (5 lines) in scripts/strip-stale-single-model-scores.js:84", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/strip-stale-single-model-scores.js: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-d81910e2091773c0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recover-login-page-reviews.js:249", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recover-login-page-reviews.js:249"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-63763315424ba78a", "name": "Commented-code block (7 lines) in scripts/replay-pending-bylines.js:32", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/replay-pending-bylines.js:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d53394681460bc3d", "name": "Commented-code block (5 lines) in scripts/apply-image-cleanup.js:27", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/apply-image-cleanup.js: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-06428508a578d3ff", "name": "Commented-code block (6 lines) in scripts/fetch-social-pulse.js:44", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/fetch-social-pulse.js: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-0b2bd2b074ed4aab", "name": "Commented-code block (7 lines) in scripts/scrape-recoupment-announcements.js:104", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/scrape-recoupment-announcements.js:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90f2bab6b407a852", "name": "Legacy-named symbol `expectedLegacy` in scripts/validate-ab-test.js:216", "shortDescription": {"text": "Legacy-named symbol `expectedLegacy` in scripts/validate-ab-test.js:216"}, "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-fe392c271e54e362", "name": "Commented-code block (5 lines) in scripts/validate-ab-test.js:114", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/validate-ab-test.js: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-b2645f6657519ac2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/validate-ab-test.js:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/validate-ab-test.js: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-a89c554debc77985", "name": "Legacy-named symbol `closedOld` in scripts/test-serp-retry-guard.js:62", "shortDescription": {"text": "Legacy-named symbol `closedOld` in scripts/test-serp-retry-guard.js:62"}, "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-58b41e5fc2abd8f9", "name": "Commented-code block (7 lines) in scripts/build-cast-manifest.js:51", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/build-cast-manifest.js: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-fe0d08561c93989e", "name": "Commented-code block (5 lines) in scripts/sweep-we-aggregators.js:121", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/sweep-we-aggregators.js:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b5b6e9b227db257", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sweep-we-aggregators.js:766", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sweep-we-aggregators.js:766"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ccd69a577e0e4556", "name": "Commented-code block (5 lines) in scripts/discover-new-shows.js:36", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/discover-new-shows.js: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-4817086fb57de726", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-new-shows.js:864", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-new-shows.js:864"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6aac898af01f3754", "name": "Commented-code block (5 lines) in scripts/test-temporal-override-regression.js:71", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-temporal-override-regression.js: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-1bbfc3e53be939e5", "name": "Commented-code block (5 lines) in scripts/scrape-london-box-office-roundups.js:382", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-london-box-office-roundups.js:382"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-621a94fbf4b353b0", "name": "Commented-code block (5 lines) in scripts/build-slug-redirects.js:55", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/build-slug-redirects.js:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0c224c1b64d4a527", "name": "Commented-code block (6 lines) in scripts/visual-qa.mjs:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/visual-qa.mjs: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-4afb0a70b49e4131", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/visual-qa.mjs:449", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/visual-qa.mjs:449"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7ca9b26705ed8e3b", "name": "Legacy-named symbol `nLegacy` in scripts/export-cookies.js:186", "shortDescription": {"text": "Legacy-named symbol `nLegacy` in scripts/export-cookies.js:186"}, "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-babfeb4c4e53df25", "name": "Commented-code block (10 lines) in scripts/enrich-west-end-dates.js:455", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/enrich-west-end-dates.js:455"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-494ce80e5ba785ab", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-west-end-dates.js:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-west-end-dates.js: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-ffa83a968f8d7628", "name": "Commented-code block (6 lines) in scripts/fix-remaining-domain-mismatches.js:133", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/fix-remaining-domain-mismatches.js: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-ffdb94eb671b6ffd", "name": "Commented-code block (8 lines) in scripts/audit-playwright-evaluate-click.js:38", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/audit-playwright-evaluate-click.js: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-e34ff769f0697906", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/send-btc-results.js:177", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/send-btc-results.js:177"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7f9eaddf9018856d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-fantasy-api.js:61", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-fantasy-api.js: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-f5c9289acd9dc8d5", "name": "Commented-code block (8 lines) in scripts/update-show-status.js:586", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/update-show-status.js:586"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f9d40d25449d105", "name": "Commented-code block (7 lines) in scripts/ingest-manual-review.js:184", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/ingest-manual-review.js: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-a7e66c13c262061c", "name": "Commented-code block (5 lines) in scripts/scrape-lottery-rush.js:1765", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-lottery-rush.js:1765"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b9fb4f636e7d5d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-lottery-rush.js:485", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-lottery-rush.js:485"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dcb2280b34ff6628", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-outlet-reviews-serp.js:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-outlet-reviews-serp.js:25"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-741e9a302674f69a", "name": "Commented-code block (5 lines) in scripts/poll-trade-press-rss.js:66", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/poll-trade-press-rss.js: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-ce0a6475f234bce4", "name": "Commented-code block (5 lines) in scripts/apply-slug-misroute-whitelist.js:67", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/apply-slug-misroute-whitelist.js:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4b57468cf5ab8c3", "name": "Commented-code block (6 lines) in scripts/analyze-rebuild-drops.js:34", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/analyze-rebuild-drops.js:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe167bdb606f8c2a", "name": "Commented-code block (10 lines) in scripts/audit-slug-match-routing.js:160", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/audit-slug-match-routing.js: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-0662f15071731bb1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/posthog-weekly-insights.js:98", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/posthog-weekly-insights.js:98"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b392d28a76eff946", "name": "Commented-code block (6 lines) in scripts/cleanup-phantom-outlets.js:130", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/cleanup-phantom-outlets.js:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77e9c34ed1d8c9b5", "name": "Commented-code block (9 lines) in scripts/fetch-aggregator-pages.ts:143", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/fetch-aggregator-pages.ts:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e059df0ffbf90400", "name": "Commented-code block (6 lines) in scripts/scrape-alltime.ts:397", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scrape-alltime.ts:397"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef701ce0173c10a8", "name": "Commented-code block (6 lines) in scripts/discover-historical-shows.js:241", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/discover-historical-shows.js:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d11e7420990e1055", "name": "Commented-code block (6 lines) in scripts/backfill-outlet-from-sitemap.js:204", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-outlet-from-sitemap.js:204"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-db5a3b3a52e89708", "name": "Commented-code block (8 lines) in scripts/extract-embedded-grades.js:31", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/extract-embedded-grades.js: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-c849453ff26db7d4", "name": "Commented-code block (5 lines) in scripts/process-feedback.js:388", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/process-feedback.js:388"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b03fa078b511e6f", "name": "Commented-code block (8 lines) in scripts/notion-brain.js:196", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/notion-brain.js:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8a0e4bf2218f87a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-show-flags.js:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-show-flags.js: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-e8cb2031fdbf9f66", "name": "Commented-code block (6 lines) in scripts/scrape-cast-changes.js:324", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scrape-cast-changes.js:324"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b58d400cf83fb35d", "name": "Commented-code block (6 lines) in scripts/delete-misroute-orphans.js:36", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/delete-misroute-orphans.js: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-f9a3f4a67525d434", "name": "Legacy-named symbol `closedOld` in scripts/unabandon-non-serp-cycles.js:17", "shortDescription": {"text": "Legacy-named symbol `closedOld` in scripts/unabandon-non-serp-cycles.js:17"}, "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-cfd2ed6c2063bdaf", "name": "Commented-code block (6 lines) in scripts/audit-tony-loso.ts:91", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-tony-loso.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a115071df483d0ba", "name": "Commented-code block (7 lines) in scripts/gather-reviews.js:424", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/gather-reviews.js:424"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a0a49600ca8093b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/gather-reviews.js:673", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/gather-reviews.js:673"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-53a27dba2294f65e", "name": "Commented-code block (5 lines) in scripts/extract-pull-quotes.js:128", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/extract-pull-quotes.js: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-d8c4ccf43c91d0f7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-gd-snapshot-timing.js:48", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-gd-snapshot-timing.js: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-48695af98a87d1cd", "name": "Commented-code block (5 lines) in scripts/audit-image-aspect.js:46", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-image-aspect.js: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-771a1a1273e7e313", "name": "Commented-code block (5 lines) in scripts/scrape-playbill-verdict.js:122", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-playbill-verdict.js:122"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-86111896b03fe67b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts-v2.js:242", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts-v2.js:242"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-109b466f01368741", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fantasy-weekly-email.js:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fantasy-weekly-email.js:188"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f3793e17c920adcb", "name": "Commented-code block (7 lines) in scripts/check-opening-night-readiness.js:178", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/check-opening-night-readiness.js: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-c5751d890f2f0926", "name": "Commented-code block (6 lines) in scripts/validate-show-venue.js:171", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/validate-show-venue.js:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-834678de8552c6bb", "name": "Commented-code block (5 lines) in scripts/audit-commercial-data.js:44", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-commercial-data.js: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-4b86b94668485362", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-obie.js:99", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-obie.js: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-826b372eb0dccf68", "name": "Commented-code block (6 lines) in scripts/audit-images-llm.js:70", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-images-llm.js: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-1f295d50fd09d93e", "name": "Commented-code block (7 lines) in scripts/audit-show-review-gap.js:83", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/audit-show-review-gap.js: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-2dcefc562bbba971", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-kalshi-tony-history.ts:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-kalshi-tony-history.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-9cd82e0dbabf064c", "name": "Commented-code block (7 lines) in scripts/retry-pending-scores.js:115", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/retry-pending-scores.js: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-ac26128bd295b662", "name": "Commented-code block (6 lines) in scripts/outlet-listing-poller.js:76", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/outlet-listing-poller.js: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-e8f8e69748a34189", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-gold-derby-tonys.js:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-gold-derby-tonys.js:7"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b1cea8881efb0b3", "name": "Commented-code block (7 lines) in scripts/validate-market-expansion.js:148", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/validate-market-expansion.js:148"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1519f39ea230a2f4", "name": "Commented-code block (5 lines) in scripts/generate-locks-index.js:16", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/generate-locks-index.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6851feb80d7468b", "name": "Commented-code block (8 lines) in scripts/promote-ob-venue-candidates.js:100", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/promote-ob-venue-candidates.js: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-f5fbc512c29883af", "name": "Commented-code block (6 lines) in scripts/newspapers-com-extract.js:892", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/newspapers-com-extract.js:892"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7e504c9e17a7cf65", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-com-extract.js:907", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-com-extract.js:907"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-22a7e0966f38322e", "name": "Commented-code block (6 lines) in scripts/backfill-unknown-critics.js:125", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-unknown-critics.js: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-66cc20de42a58d12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-all-reviews.js:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-all-reviews.js: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-e3de3950590a50cc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-critic-coverage.js:174", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-critic-coverage.js:174"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e7355ec9d2654c73", "name": "Commented-code block (7 lines) in scripts/enrich-off-broadway-dates.js:143", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/enrich-off-broadway-dates.js:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f6fdd7793cadf33", "name": "Commented-code block (5 lines) in scripts/send-opening-night-broadcast.js:50", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/send-opening-night-broadcast.js: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-098891e47170a5ac", "name": "Commented-code block (5 lines) in scripts/scrape-nydcc.js:80", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-nydcc.js:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa490bded862d6e5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-nydcc.js:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-nydcc.js: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-e6f8f854560dc998", "name": "Commented-code block (5 lines) in scripts/audit-wrong-production.js:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-wrong-production.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d73b80ca463b0eb8", "name": "Commented-code block (6 lines) in scripts/verify-all-scored.js:153", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/verify-all-scored.js: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-c722e029e6f807aa", "name": "Commented-code block (7 lines) in scripts/wp-classifier-parity.js:277", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/wp-classifier-parity.js: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-2bef4baaa1ca637c", "name": "Commented-code block (5 lines) in scripts/fix-tony-attribution.js:146", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fix-tony-attribution.js: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-2ceb4c8e45b85e15", "name": "Commented-code block (5 lines) in scripts/fix-p0-score-corruption.js:113", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/fix-p0-score-corruption.js:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4fa93bdeaa8fe42f", "name": "Commented-code block (12 lines) in scripts/enrich-olivier-awards.js:332", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/enrich-olivier-awards.js:332"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c12f524a8a34ecc7", "name": "Commented-code block (5 lines) in scripts/extract-theatre-record.js:877", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/extract-theatre-record.js:877"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ee9218ae104d87d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collection-coverage-dashboard.js:356", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collection-coverage-dashboard.js:356"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9101904641f62d54", "name": "Commented-code block (5 lines) in scripts/audit-awards-data.js:798", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-awards-data.js:798"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ed06f4c35f9aea3", "name": "Commented-code block (5 lines) in scripts/audit-opening-night-extraction.js:318", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-opening-night-extraction.js:318"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5277cd1165d93164", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-opening-night-extraction.js:188", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-opening-night-extraction.js:188"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-dafa42739ba308c3", "name": "Commented-code block (5 lines) in scripts/backfill-cast-web.js:166", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/backfill-cast-web.js:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-104a9f75089a8a42", "name": "Commented-code block (7 lines) in scripts/flag-combined-reviews.js:35", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/flag-combined-reviews.js: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-b50a99f4016299cb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/extract-aggregator-candidates.js:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/extract-aggregator-candidates.js:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6ac20969739bc6a9", "name": "Commented-code block (8 lines) in scripts/send-opening-digest.js:79", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/send-opening-digest.js: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-b6f6964ee026a38e", "name": "Commented-code block (6 lines) in scripts/validate-data.js:37", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/validate-data.js: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-8d7c6a7901ee35e7", "name": "Commented-code block (7 lines) in scripts/rebuild-all-reviews.js:63", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/rebuild-all-reviews.js:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a4490ca4c8c043c", "name": "Commented-code block (8 lines) in scripts/monitor-brand-mentions.js:147", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/monitor-brand-mentions.js: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-57cbf25f87a98d3a", "name": "Commented-code block (8 lines) in scripts/audit-opening-night-coverage.js:38", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/audit-opening-night-coverage.js: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-64100e972a730d0f", "name": "Commented-code block (7 lines) in scripts/ingest-review-from-url.js:65", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/ingest-review-from-url.js: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-f1b3a665fd73c27c", "name": "Commented-code block (5 lines) in scripts/notify-pending-commercial-notion.js:52", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/notify-pending-commercial-notion.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3efb1c82a0a7333", "name": "Commented-code block (5 lines) in scripts/extract-show-score-reviews.js:44", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/extract-show-score-reviews.js: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-be03fe570a83abb1", "name": "Commented-code block (5 lines) in scripts/audit-nft-excluded-runtime-reads.js:2", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-nft-excluded-runtime-reads.js:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c061715aefe5ebe6", "name": "Commented-code block (6 lines) in scripts/backfill-locked-reasons.js:42", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-locked-reasons.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8039e7bb27a0b3a1", "name": "Commented-code block (18 lines) in scripts/scoring-delta.js:139", "shortDescription": {"text": "Commented-code block (18 lines) in scripts/scoring-delta.js:139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7eb2163aebfa4d73", "name": "Commented-code block (6 lines) in scripts/fetch-show-images-auto.js:69", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/fetch-show-images-auto.js: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-869254736aa056d3", "name": "Commented-code block (7 lines) in scripts/audit-chrome-pullquotes.js:41", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/audit-chrome-pullquotes.js: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-5e92bee26e957b70", "name": "Commented-code block (5 lines) in scripts/validate-review-texts.js:180", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/validate-review-texts.js:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c521a0a863571e12", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval-v52.js:185", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval-v52.js:185"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4b6c0b6a58ac1e6a", "name": "Commented-code block (5 lines) in scripts/discover-show-score-urls-from-listings.js:62", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/discover-show-score-urls-from-listings.js: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-2212b971ff56cbfd", "name": "Commented-code block (5 lines) in scripts/scrape-theatr-audience.js:150", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-theatr-audience.js: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-e81068a11a709161", "name": "Commented-code block (8 lines) in scripts/backfill-extractor-rescore.js:36", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/backfill-extractor-rescore.js: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-bda83887a0eaca6b", "name": "Commented-code block (6 lines) in scripts/scrape-westendtheatre-roundups.js:35", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scrape-westendtheatre-roundups.js: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-a65705affa1ee625", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-westendtheatre-roundups.js:548", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-westendtheatre-roundups.js:548"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-664f6e47b150a139", "name": "Commented-code block (5 lines) in scripts/recover-wayback-reviews.js:1335", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/recover-wayback-reviews.js:1335"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d30e1d7c4c477f5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/triage-sentry.js:82", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/triage-sentry.js:82"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b1b9a28c63977f93", "name": "Commented-code block (5 lines) in scripts/scrape-reddit-sentiment.js:236", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/scrape-reddit-sentiment.js:236"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-470fba440ba01cde", "name": "Commented-code block (5 lines) in scripts/pre-deploy-check.js:188", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/pre-deploy-check.js:188"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-821aeea8acfdeac9", "name": "Commented-code block (5 lines) in scripts/audit-aggregator-archive-integrity.js:42", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/audit-aggregator-archive-integrity.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f03453813c6a1ae0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/process-review-formspree.js:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/process-review-formspree.js: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-2fa5a9b6f725f4d2", "name": "Commented-code block (6 lines) in scripts/cleanup-failed-fetches.js:35", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/cleanup-failed-fetches.js: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-1ac776c0ac091eee", "name": "Commented-code block (5 lines) in scripts/classify-non-reviews.js:541", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/classify-non-reviews.js:541"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8ab03886627bd257", "name": "Commented-code block (5 lines) in scripts/check-cookie-health.js:72", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-cookie-health.js: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-cf62f95523f36b51", "name": "Commented-code block (6 lines) in scripts/collect-review-texts.js:299", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/collect-review-texts.js: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-9794c179ed1ea090", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts.js:3266", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts.js:3266"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-438366529d5182ae", "name": "Commented-code block (5 lines) in scripts/check-review-count-drift.js:65", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-review-count-drift.js: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-9f722379312c4086", "name": "Commented-code block (6 lines) in scripts/watch-aggregator-urls.js:227", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/watch-aggregator-urls.js:227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-852627ff6a217326", "name": "Commented-code block (7 lines) in scripts/audit-cast-changes.js:60", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/audit-cast-changes.js: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-73bc60e371735df9", "name": "Legacy-named symbol `closedOld` in scripts/backfill-serp-abandonment.js:7", "shortDescription": {"text": "Legacy-named symbol `closedOld` in scripts/backfill-serp-abandonment.js:7"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9b652d8fd348b1b5", "name": "Commented-code block (7 lines) in scripts/verify-misroute-content.js:56", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/verify-misroute-content.js: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-81671358793983d8", "name": "Commented-code block (5 lines) in scripts/extract-safari-cookies.py:601", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/extract-safari-cookies.py:601"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-820bcdb7969af4ac", "name": "Commented-code block (6 lines) in scripts/scrape-theater-tips.js:81", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/scrape-theater-tips.js:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5891299a846b4213", "name": "Commented-code block (6 lines) in scripts/audit-grosses-data.js:323", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-grosses-data.js: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-9d773cfc54da2779", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-broadway-com-audience.js:181", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-broadway-com-audience.js:181"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d14693da38b7580c", "name": "Commented-code block (5 lines) in scripts/test-preview-dedup.js:202", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/test-preview-dedup.js:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69104781f2224802", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/poll-loureviews.js:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/poll-loureviews.js: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-8140cf495aa90d60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-formspree-health.js:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-formspree-health.js: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-07ac1d23828a659a", "name": "Commented-code block (6 lines) in scripts/audit-audience-buzz-contamination.js:89", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/audit-audience-buzz-contamination.js:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6187b3d9dbacc92", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/pre-classify-titles.js:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/pre-classify-titles.js:34"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e213e5713960f0d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/classify-reviews.js:67", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/classify-reviews.js: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-59de78fadc24103a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/audit-before-share.js:70", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/audit-before-share.js:70"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ebab901ffc1102db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/eval-prompts.js:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/eval-prompts.js: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-695f979ce2f366e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/score-video-reviews.js:60", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/score-video-reviews.js: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-f02a429d2b8427d4", "name": "Commented-code block (5 lines) in scripts/lib/incomplete-reason.js:118", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/incomplete-reason.js:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1a869ed363bbb83", "name": "Commented-code block (5 lines) in scripts/lib/show-matching.test.mjs:3", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/show-matching.test.mjs: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-5f7b27936e2a57c2", "name": "Commented-code block (5 lines) in scripts/lib/show-matching.js:584", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/show-matching.js:584"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-772e59766f49960d", "name": "Commented-code block (10 lines) in scripts/lib/review-text-scoreable.js:45", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/lib/review-text-scoreable.js:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bb0bb24650b987bd", "name": "Commented-code block (11 lines) in scripts/lib/score-extractors.js:434", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/score-extractors.js:434"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24e03a476526e894", "name": "Commented-code block (6 lines) in scripts/lib/dom-article-extractor.js:94", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/dom-article-extractor.js:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d7b3e6d2afeaf42", "name": "Commented-code block (6 lines) in scripts/lib/site-search-discovery.js:64", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/site-search-discovery.js: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-21427f92a361e29d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/site-search-discovery.js:894", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/site-search-discovery.js:894"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-838bd37e38c66ec7", "name": "Commented-code block (6 lines) in scripts/lib/omc-discovery.js:72", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/omc-discovery.js: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-1df379419e1892fc", "name": "Commented-code block (5 lines) in scripts/lib/closing-date-discovery.js:205", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/closing-date-discovery.js: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-868b949dfa34d3a7", "name": "Commented-code block (7 lines) in scripts/lib/bww-rr-discover.js:174", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/bww-rr-discover.js:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5873b003184a913", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/bww-rr-discover.js:258", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/bww-rr-discover.js:258"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ac11751ee2f7ba7b", "name": "Commented-code block (5 lines) in scripts/lib/llm-extractor.js:105", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/llm-extractor.js:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56bb333c6b769777", "name": "Commented-code block (5 lines) in scripts/lib/content-filters.js:318", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/content-filters.js:318"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b3a1d1c90d3313e", "name": "Commented-code block (6 lines) in scripts/lib/date-guard.js:21", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/date-guard.js: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-67e565deb0b91ef9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/gd-api.js:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/gd-api.js: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-78c93733c47e31ef", "name": "Commented-code block (5 lines) in scripts/lib/theatermania-discovery.js:30", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/theatermania-discovery.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d8437f3b656622a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/posthog-query.js:20", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/posthog-query.js:20"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9c82ce9ae602d703", "name": "Commented-code block (7 lines) in scripts/lib/verdict-hash.test.mjs:4", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/verdict-hash.test.mjs: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-fa3a34945444bc52", "name": "Commented-code block (6 lines) in scripts/lib/serp-candidate-validator.js:261", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/serp-candidate-validator.js:261"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ceb4e9ae82bad63f", "name": "Commented-code block (7 lines) in scripts/lib/venue-listing-discover.js:39", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/venue-listing-discover.js: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-3681eb7a519c1c25", "name": "Commented-code block (6 lines) in scripts/lib/clear-failure-flags.js:141", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/clear-failure-flags.js:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e01ef70618c10849", "name": "Commented-code block (5 lines) in scripts/lib/content-verifier.js:355", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/content-verifier.js:355"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5318a76eba40b04a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/ibdb-cast.js:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/ibdb-cast.js: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-5818ede7618cb011", "name": "Commented-code block (7 lines) in scripts/lib/playbill-verdict-discover.js:24", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/playbill-verdict-discover.js: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-93d1d52ac88a9f72", "name": "Commented-code block (10 lines) in scripts/lib/cast-changes-filters.js:60", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/lib/cast-changes-filters.js: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-b628254a52b65fea", "name": "Commented-code block (5 lines) in scripts/lib/per-category-precursor.js:78", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/per-category-precursor.js:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ed9b1908a901517", "name": "Commented-code block (5 lines) in scripts/lib/multi-show-splitter.js:166", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/multi-show-splitter.js:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b807218698c149", "name": "Commented-code block (5 lines) in scripts/lib/market-routing.js:143", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/market-routing.js:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d0f7d77989f11ab", "name": "Commented-code block (5 lines) in scripts/lib/review-write-guard.js:120", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/review-write-guard.js:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c27edc0fafe2f58", "name": "Commented-code block (5 lines) in scripts/lib/opera-discovery-cache.js:126", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/opera-discovery-cache.js: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-90433aa815b2adc2", "name": "Commented-code block (5 lines) in scripts/lib/wrong-production-autoclear.js:108", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/wrong-production-autoclear.js: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-523524942e8d725c", "name": "Commented-code block (7 lines) in scripts/lib/bww-roundup-parser.js:19", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/bww-roundup-parser.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc3e52b0b631f25a", "name": "Commented-code block (6 lines) in scripts/lib/opening-night-budget.js:136", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/opening-night-budget.js:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d95d8259a031cd93", "name": "Commented-code block (8 lines) in scripts/lib/title-match.js:30", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/title-match.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50012d6fb701903c", "name": "Commented-code block (6 lines) in scripts/lib/precursor-category-parser.js:16", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/precursor-category-parser.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7d88f64e5d744a1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/precursor-category-parser.js:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/precursor-category-parser.js:33"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3f27ebfd8850b9ff", "name": "Commented-code block (5 lines) in scripts/lib/brand-mention-serp.js:176", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/brand-mention-serp.js:176"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab29829d41ba6844", "name": "Commented-code block (6 lines) in scripts/lib/critic-canonicalization.js:39", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/critic-canonicalization.js: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-e20dc655092e6da2", "name": "Commented-code block (5 lines) in scripts/lib/compute-critic-score.js:22", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/compute-critic-score.js: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-4f929ba460904b2f", "name": "Commented-code block (13 lines) in scripts/lib/transcript-scan.mjs:6", "shortDescription": {"text": "Commented-code block (13 lines) in scripts/lib/transcript-scan.mjs: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-9d830d0d3e86372c", "name": "Commented-code block (7 lines) in scripts/lib/review-normalization.js:593", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/review-normalization.js:593"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21919714b078a671", "name": "Commented-code block (5 lines) in scripts/lib/ui-paths.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/ui-paths.mjs:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-112fab869883eca2", "name": "Commented-code block (5 lines) in scripts/lib/byline-normalization.js:26", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/byline-normalization.js:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ac334b4b16b1b2e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-plain.js:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-plain.js: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-8c280d256e889752", "name": "Legacy-named symbol `closedOld` in scripts/lib/review-guards.js:1690", "shortDescription": {"text": "Legacy-named symbol `closedOld` in scripts/lib/review-guards.js:1690"}, "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-75c8b6f184b17ab8", "name": "Commented-code block (5 lines) in scripts/lib/review-guards.js:98", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/review-guards.js: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-aaaebae699482f12", "name": "Commented-code block (7 lines) in scripts/lib/year-page-precursor.js:172", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/year-page-precursor.js: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-3efa2e772acff629", "name": "Commented-code block (6 lines) in scripts/lib/cast-extraction-guards.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/cast-extraction-guards.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-388fe7be33b5318f", "name": "Commented-code block (6 lines) in scripts/lib/url-discovery.js:424", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/url-discovery.js:424"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfb651a73aa58326", "name": "Commented-code block (5 lines) in scripts/lib/precursor-wikipedia.js:185", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/precursor-wikipedia.js:185"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-250a21ca600b9041", "name": "Commented-code block (5 lines) in scripts/lib/orphan-pending-decision.js:134", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/orphan-pending-decision.js:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4b2daaf221dc443", "name": "Commented-code block (7 lines) in scripts/lib/bww-roundup-validator.js:111", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/bww-roundup-validator.js: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-64f398da59a89d81", "name": "Commented-code block (7 lines) in scripts/lib/verdict-hash.mjs:27", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/verdict-hash.mjs: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-3e94b944a5e6861c", "name": "Commented-code block (7 lines) in scripts/lib/poller-idempotency.js:30", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/poller-idempotency.js:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bda5ce6ea3195a9", "name": "Commented-code block (5 lines) in scripts/lib/transcript-scan.test.mjs:206", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/transcript-scan.test.mjs:206"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5503558383440b2", "name": "Commented-code block (6 lines) in scripts/lib/classify-stale-closure.js:6", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/classify-stale-closure.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ac1a4e7756c456d", "name": "Commented-code block (6 lines) in scripts/lib/recoupment-model.js:255", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/recoupment-model.js:255"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8c3bcf1bfeb31f0", "name": "Commented-code block (9 lines) in scripts/lib/pull-quote-guards.js:109", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/lib/pull-quote-guards.js:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0573c5b25c842d07", "name": "Commented-code block (12 lines) in scripts/lib/article-extractor.js:190", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/lib/article-extractor.js:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a039fa432f33fbb", "name": "Commented-code block (5 lines) in scripts/lib/check-sb-credits.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/check-sb-credits.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6910a35f34d94fe5", "name": "Commented-code block (5 lines) in scripts/lib/deduplication.js:147", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/deduplication.js: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-f894ea275c6df335", "name": "Commented-code block (11 lines) in scripts/lib/rss-discovery.js:15", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/rss-discovery.js: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-ab8047c6ab55d147", "name": "Commented-code block (5 lines) in scripts/lib/scraper.js:84", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/scraper.js: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-b1090c6298bbaee5", "name": "Commented-code block (11 lines) in scripts/lib/visual-qa-ledger.mjs:6", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/visual-qa-ledger.mjs: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-34dbcdcf6744541b", "name": "Commented-code block (8 lines) in scripts/lib/merge-commercial-data.js:3", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/merge-commercial-data.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56f3ae61609a6792", "name": "Commented-code block (7 lines) in scripts/lib/score-parsers.js:52", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/score-parsers.js:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-922ec7db16caa87d", "name": "Commented-code block (7 lines) in scripts/lib/review-file-writer.js:187", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/review-file-writer.js:187"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e00dacbf42f30e3", "name": "Commented-code block (5 lines) in scripts/lib/apify-fetchers.js:220", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/apify-fetchers.js:220"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b54ef9f57b95e064", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/apify-fetchers.js:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/apify-fetchers.js:36"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c84915ddc5a26120", "name": "Commented-code block (5 lines) in scripts/lib/loureviews-match.js:107", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/loureviews-match.js: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-bf2a99128868711d", "name": "Commented-code block (5 lines) in scripts/lib/commercial-apply-gate.js:19", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/commercial-apply-gate.js:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02d855f0db79eb87", "name": "Commented-code block (5 lines) in scripts/lib/wrongprod-replacement-preserve.js:46", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/wrongprod-replacement-preserve.js: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-95dfde16befd3c9f", "name": "Commented-code block (11 lines) in scripts/lib/content-quality.js:48", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/content-quality.js: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-e684fb25f6b17692", "name": "Commented-code block (5 lines) in scripts/lib/rebuild-helpers.js:339", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/rebuild-helpers.js:339"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8bcd88bd98b872e", "name": "Commented-code block (7 lines) in scripts/lib/star-reliability.js:57", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/star-reliability.js: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-d990e13183c9ff1c", "name": "Commented-code block (7 lines) in scripts/lib/bww-opera-discover.js:64", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/bww-opera-discover.js: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-62d3336293c8b52a", "name": "Commented-code block (6 lines) in scripts/lib/email-utm.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/email-utm.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c680efd0392456f6", "name": "Commented-code block (7 lines) in scripts/lib/broadcast-state.js:45", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/broadcast-state.js:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-31f14e1e126008cd", "name": "Commented-code block (7 lines) in scripts/lib/critics-circle-parser.js:146", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/critics-circle-parser.js: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-0c514a009d5fd263", "name": "Commented-code block (6 lines) in scripts/lib/non-review-patterns.js:42", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/non-review-patterns.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-441e989d2b9c1e0e", "name": "Commented-code block (6 lines) in scripts/lib/playbill-roundup-discover.js:102", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/playbill-roundup-discover.js: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-ea3e0241eb6a2e48", "name": "Commented-code block (10 lines) in scripts/lib/tb-direct-url.js:6", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/lib/tb-direct-url.js:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e6b4d7b76e0c2f8", "name": "Commented-code block (5 lines) in scripts/lib/feedback-dedup.js:111", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/feedback-dedup.js: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-cc016f44d0c4e864", "name": "Commented-code block (6 lines) in scripts/lib/owner-accounts.js:41", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/owner-accounts.js: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-c080ebd57bc8ab39", "name": "Commented-code block (8 lines) in scripts/lib/domain-filters.js:33", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/domain-filters.js: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-f3ba0958f4a0ee40", "name": "Commented-code block (7 lines) in scripts/lib/show-match-verifier.js:82", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/lib/show-match-verifier.js: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-d656cc431eab9867", "name": "Commented-code block (5 lines) in scripts/lib/page-validator.js:143", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/page-validator.js:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a3f94b73644928e", "name": "Commented-code block (8 lines) in scripts/lib/aggregator-candidate-extract.js:54", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/lib/aggregator-candidate-extract.js: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-955dbb06093da5be", "name": "Commented-code block (11 lines) in scripts/lib/restore-protected-fields.js:29", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/lib/restore-protected-fields.js:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39b95831abbdedf1", "name": "Commented-code block (6 lines) in scripts/lib/newsletter-sections.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lib/newsletter-sections.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-650f867c87a165ce", "name": "Commented-code block (5 lines) in scripts/lib/opening-night-checks/bww-rr-count-mismatch.check.js:81", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/opening-night-checks/bww-rr-count-mismatch.check.js:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ce7c5ae76f738f5", "name": "Commented-code block (10 lines) in scripts/llm-scoring/config.ts:40", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/llm-scoring/config.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-53cf0c71c2829d5b", "name": "Commented-code block (6 lines) in scripts/llm-scoring/comparative-rescore.ts:241", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/comparative-rescore.ts:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-683d6d148cff42d4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/llm-scoring/sanity-v6-single.mjs:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/llm-scoring/sanity-v6-single.mjs:37"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a46f09c7e38cb942", "name": "Commented-code block (6 lines) in scripts/llm-scoring/index.ts:562", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/index.ts:562"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d4fd50396d3a084", "name": "Commented-code block (6 lines) in scripts/llm-scoring/is-scoreable.ts:28", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/is-scoreable.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4316b27452f171ea", "name": "Commented-code block (5 lines) in scripts/llm-scoring/star-anchor-sample.ts:33", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/llm-scoring/star-anchor-sample.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-46ccdb6bbfb8820d", "name": "Commented-code block (9 lines) in scripts/llm-scoring/ensemble-scorer.ts:31", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/llm-scoring/ensemble-scorer.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-90621b0564c658a1", "name": "Commented-code block (6 lines) in scripts/llm-scoring/gemini-scorer.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/gemini-scorer.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-bc5620d189906914", "name": "Commented-code block (5 lines) in scripts/llm-scoring/scorer.ts:359", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/llm-scoring/scorer.ts:359"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-204203d9faefcec6", "name": "Legacy-named symbol `promptOld` in scripts/llm-scoring/test-prompt-structural-ab.ts:632", "shortDescription": {"text": "Legacy-named symbol `promptOld` in scripts/llm-scoring/test-prompt-structural-ab.ts:632"}, "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-b7c8e6f33b55e1bb", "name": "Commented-code block (6 lines) in scripts/llm-scoring/test-prompt-structural-ab.ts:197", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/test-prompt-structural-ab.ts:197"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b93b78d98c95c044", "name": "Commented-code block (6 lines) in scripts/llm-scoring/input-builder.ts:12", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/input-builder.ts: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-a97dbc56444dec70", "name": "Commented-code block (5 lines) in scripts/evals/theater-tips-eval.js:92", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/evals/theater-tips-eval.js: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-0593b54c6db8fc04", "name": "Commented-code block (9 lines) in scripts/one-off/sweep-revival-wrong-production.js:111", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/one-off/sweep-revival-wrong-production.js: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-a002e9dc845c6130", "name": "Commented-code block (6 lines) in scripts/newsletter/newsworthiness.mjs:14", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/newsletter/newsworthiness.mjs:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78e1e88aabe45bb4", "name": "Commented-code block (9 lines) in scripts/newsletter/popular-pages.mjs:13", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/newsletter/popular-pages.mjs: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-948a8e3aecfdf5ce", "name": "Commented-code block (9 lines) in scripts/newsletter/send-test.mjs:9", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/newsletter/send-test.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b8e8fd262b0fd744", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newsletter/send-test.mjs:81", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newsletter/send-test.mjs: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-680a6ad4d7311943", "name": "Commented-code block (6 lines) in scripts/newsletter/create-broadcast-draft.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/newsletter/create-broadcast-draft.mjs: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-d2006797de9fb753", "name": "Commented-code block (6 lines) in scripts/newsletter/generate.mjs:52", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/newsletter/generate.mjs: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-a2ec4c23f4ecc612", "name": "Commented-code block (12 lines) in scripts/newsletter/pre-send-check.mjs:4", "shortDescription": {"text": "Commented-code block (12 lines) in scripts/newsletter/pre-send-check.mjs: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-44df9706e129b41c", "name": "Commented-code block (6 lines) in scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:149", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03dbadcb6010ffcf", "name": "Commented-code block (5 lines) in src/config/feature-flags.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/feature-flags.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-8004d6e67f0d39e6", "name": "Commented-code block (5 lines) in src/config/score-buckets.ts:117", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/score-buckets.ts: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-23ebe5e4ff76daa5", "name": "Commented-code block (5 lines) in src/config/outlet-logos.ts:264", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/outlet-logos.ts:264"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8db2e29c847ea0d", "name": "Commented-code block (7 lines) in src/config/scoring.ts:8", "shortDescription": {"text": "Commented-code block (7 lines) in src/config/scoring.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-f6d278dcb2caaf08", "name": "Commented-code block (5 lines) in src/config/guide-pages.ts:521", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/guide-pages.ts:521"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8bdb532dd8f386e5", "name": "Commented-code block (5 lines) in src/components/AwardScoreCard.tsx:101", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/AwardScoreCard.tsx: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-94e162d48aa86d61", "name": "Commented-code block (5 lines) in src/components/CastSection.tsx:67", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/CastSection.tsx:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03dd9210b0073b79", "name": "Commented-code block (5 lines) in src/components/icons.tsx:37", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/icons.tsx: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-0b7321d491a77c4c", "name": "Commented-code block (7 lines) in src/components/TicketButtonsAB.tsx:144", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/TicketButtonsAB.tsx: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-34263dc4f5e8956c", "name": "Commented-code block (5 lines) in src/components/AnalyticsWrapper.tsx:25", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/AnalyticsWrapper.tsx: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-2ae682f03ff4ec47", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EmailCaptureModal.tsx:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EmailCaptureModal.tsx: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-2ed1d0c46a9e572c", "name": "Commented-code block (5 lines) in src/components/HomePageClient.tsx:561", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/HomePageClient.tsx:561"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d6b816f51909cc1", "name": "Commented-code block (7 lines) in src/components/TicketLink.tsx:48", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/TicketLink.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-8abbeccf18b59e30", "name": "Commented-code block (5 lines) in src/components/SortableLotteryRushTables.tsx:674", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/SortableLotteryRushTables.tsx:674"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8726bdf763f45bfb", "name": "Commented-code block (6 lines) in src/components/show-page/WhereItRanks.tsx:207", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/show-page/WhereItRanks.tsx: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-9fc4e7b6980a484a", "name": "Commented-code block (5 lines) in src/components/tony-noms/CategorySection.tsx:62", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/tony-noms/CategorySection.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-2b538284d6c6d40b", "name": "Commented-code block (8 lines) in src/components/show-cards/AwardScoreBadge.tsx:10", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/show-cards/AwardScoreBadge.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-6c8f5474bfa36fc1", "name": "Commented-code block (5 lines) in src/contexts/ProGateContext.tsx:57", "shortDescription": {"text": "Commented-code block (5 lines) in src/contexts/ProGateContext.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-1e02e0e9c64d1b91", "name": "Commented-code block (6 lines) in src/app/robots.ts:38", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/robots.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-c487a4531df3ad0a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/brand/BrandPageClient.tsx:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/brand/BrandPageClient.tsx: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-f359f5452e13cfb6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/resend-webhook/route.ts:111", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/resend-webhook/route.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-293ef69d25c994bf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/beat-the-critics/send-picks/route.ts:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/beat-the-critics/send-picks/route.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-aa1c8072dcd060cd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/dispatch-alert-fix/route.ts:91", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/dispatch-alert-fix/route.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-76c3e682ab329882", "name": "Commented-code block (8 lines) in src/app/api/admin/dispatch-rebuild/route.ts:16", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/admin/dispatch-rebuild/route.ts:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f96a05b1515c6c1", "name": "Commented-code block (6 lines) in src/app/api/admin/lock-score/route.ts:60", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/lock-score/route.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-a4496380fd907a60", "name": "Commented-code block (6 lines) in src/app/api/admin/ingest-review/route.ts:26", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/admin/ingest-review/route.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-0fe76f99f5b091b0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-fix/route.ts:17", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-fix/route.ts:17"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2eec86145977a1dc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/submit-review/route.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/submit-review/route.ts:50"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c85b2139a4560f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-broadcast/route.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-broadcast/route.ts:32"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1059ed4929bbfea0", "name": "Commented-code block (6 lines) in src/app/test/_components/TestGuard.tsx:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/test/_components/TestGuard.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43d8b71fc77fd39e", "name": "Commented-code block (5 lines) in src/app/admin/ingest/IngestForm.tsx:524", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/admin/ingest/IngestForm.tsx:524"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c1037924a9a30363", "name": "Commented-code block (6 lines) in src/app/admin/locks/LocksTable.tsx:48", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/admin/locks/LocksTable.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-49a38cb668d7ed81", "name": "Commented-code block (5 lines) in src/app/tony-awards/predictions/[season]/page.tsx:93", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/tony-awards/predictions/[season]/page.tsx: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-6c6d6acd3cb5dce9", "name": "Commented-code block (8 lines) in src/app/show/[slug]/opengraph-image.tsx:21", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/show/[slug]/opengraph-image.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-e0384cd12e3994cf", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/show/[slug]/opengraph-image.tsx:24", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/show/[slug]/opengraph-image.tsx:24"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8acd189c8f8ec3f", "name": "Commented-code block (5 lines) in src/app/show/[slug]/page.tsx:90", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/show/[slug]/page.tsx:90"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-770c47d4efb6883a", "name": "Commented-code block (5 lines) in src/lib/seo.ts:215", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/seo.ts:215"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a4e085bf7ffa9545", "name": "Commented-code block (6 lines) in src/lib/data-cast-obc.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/data-cast-obc.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-a704d8f916ca61b5", "name": "Commented-code block (6 lines) in src/lib/ticket-utils.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/ticket-utils.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-c0cb6a8143f86128", "name": "Commented-code block (5 lines) in src/lib/data-show-ranks.ts:134", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/data-show-ranks.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50a3df93c4d82b63", "name": "Commented-code block (5 lines) in src/lib/data-social-pulse.ts:127", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/data-social-pulse.ts:127"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-131440ea22cca0b0", "name": "Commented-code block (7 lines) in src/lib/posthog-events.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/posthog-events.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-7ce4022bd40f5bdb", "name": "Commented-code block (5 lines) in src/lib/show-filter-predicates.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/show-filter-predicates.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-ba6c866ad329729f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-rest.ts:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-rest.ts:2"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6dc8fbdd63059ef3", "name": "Commented-code block (7 lines) in src/lib/data-tony-predictions.ts:93", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/data-tony-predictions.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-65f48bf911c8b0d8", "name": "Commented-code block (5 lines) in src/lib/data.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/data.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-45beb30e7b67308a", "name": "Commented-code block (5 lines) in src/lib/scoring.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/scoring.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62f9a57381f36c26", "name": "Commented-code block (5 lines) in src/lib/admin-ingest-detect.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/admin-ingest-detect.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-82d1e3b68af90865", "name": "Commented-code block (8 lines) in src/lib/data-actors.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/data-actors.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-faec335d1ad542d1", "name": "Commented-code block (6 lines) in src/lib/engine.ts:348", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/engine.ts:348"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-abf6f386533edbc4", "name": "Commented-code block (7 lines) in src/lib/hooks/usePanelFilters.ts:243", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/hooks/usePanelFilters.ts:243"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3cf0f61a2117fcd", "name": "Dangling fetch: GET https://broadwayscorecard.com/data/shows/${showId}.json (scripts/watch-proof-tonight.js:104)", "shortDescription": {"text": "Dangling fetch: GET https://broadwayscorecard.com/data/shows/${showId}.json (scripts/watch-proof-tonight.js:104)"}, "fullDescription": {"text": "`scripts/watch-proof-tonight.js:104` calls `GET https://broadwayscorecard.com/data/shows/${showId}.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/broadwayscorecard.com/data/shows/<p>.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-52fd403388122253", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-stagedoor-critics.js:292)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-stagedoor-critics.js:292)"}, "fullDescription": {"text": "`scripts/scrape-stagedoor-critics.js:292` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2199c37d2ba114a2", "name": "Dangling fetch: PUT https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps/${feedpath} (scripts/submit-googl", "shortDescription": {"text": "Dangling fetch: PUT https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps/${feedpath} (scripts/submit-google-indexing.js:206)"}, "fullDescription": {"text": "`scripts/submit-google-indexing.js:206` calls `PUT https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps/${feedpath}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/webmasters/v3/sites/<p>/sitemaps/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0834f15ba47f6ecf", "name": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/submit-google-indexing.j", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/submit-google-indexing.js:244)"}, "fullDescription": {"text": "`scripts/submit-google-indexing.js:244` calls `GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/webmasters/v3/sites/<p>/sitemaps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-73bc4b0b83e9e6fd", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/generate-guide-editorials.js:113)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/generate-guide-editorials.js:113)"}, "fullDescription": {"text": "`scripts/generate-guide-editorials.js:113` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-32daf73f20efb24d", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-llm-scores.js:119)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-llm-scores.js:119)"}, "fullDescription": {"text": "`scripts/audit-llm-scores.js:119` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98700da9464f78fc", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-llm-scores.js:207)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-llm-scores.js:207)"}, "fullDescription": {"text": "`scripts/audit-llm-scores.js:207` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0e11d69ab00cebe9", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-production-flags.js:129)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-production-flags.js:129)"}, "fullDescription": {"text": "`scripts/clear-stale-wrong-production-flags.js:129` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b10d630bf7e9a9cb", "name": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:114)", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:114)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:114` calls `GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/webmasters/v3/sites/<p>/sitemaps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0508c4f5eadff458", "name": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:22", "shortDescription": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:227)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:227` calls `POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/searchconsole.googleapis.com/v1/urlinspection/index/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-cc5eda78a3c2eecb", "name": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:34", "shortDescription": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:341)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:341` calls `POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/searchconsole.googleapis.com/v1/urlinspection/index/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1ae32a76f9750693", "name": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:364)", "shortDescription": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:364)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:364` calls `POST https://indexing.googleapis.com/v3/urlNotifications:publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/indexing.googleapis.com/v3/urlnotifications/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0f4b75715a9f31c6", "name": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:42", "shortDescription": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:422)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:422` calls `POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/searchconsole.googleapis.com/v1/urlinspection/index/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c079be869d845c6", "name": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:457)", "shortDescription": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:457)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:457` calls `POST https://indexing.googleapis.com/v3/urlNotifications:publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/indexing.googleapis.com/v3/urlnotifications/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-241d32786c0c6f27", "name": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:545)", "shortDescription": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:545)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:545` calls `POST https://indexing.googleapis.com/v3/urlNotifications:publish` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/indexing.googleapis.com/v3/urlnotifications/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7ff75f2e56b9c62b", "name": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:90", "shortDescription": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:902)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:902` calls `POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/searchconsole.googleapis.com/v1/urlinspection/index/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c345fcc3a69b5234", "name": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:959)", "shortDescription": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:959)"}, "fullDescription": {"text": "`scripts/check-seo-health.js:959` calls `GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.googleapis.com/webmasters/v3/sites/<p>/sitemaps`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f1b03fa197bb4864", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-seatplan-audience.js:41)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-seatplan-audience.js:41)"}, "fullDescription": {"text": "`scripts/scrape-seatplan-audience.js:41` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7243febcd5edf8f1", "name": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=2&limit=5 (scripts/check-api-contracts.js:25)", "shortDescription": {"text": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=2&limit=5 (scripts/check-api-contracts.js:25)"}, "fullDescription": {"text": "`scripts/check-api-contracts.js:25` calls `GET https://api.todaytix.com/api/v2/shows?location=2&limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.todaytix.com/api/v2/shows`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-640ceada8a34d205", "name": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=1&limit=5 (scripts/check-api-contracts.js:51)", "shortDescription": {"text": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=1&limit=5 (scripts/check-api-contracts.js:51)"}, "fullDescription": {"text": "`scripts/check-api-contracts.js:51` calls `GET https://api.todaytix.com/api/v2/shows?location=1&limit=5` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.todaytix.com/api/v2/shows`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3b34a5d589c27eca", "name": "Dangling fetch: GET https://www.theatremonkey.com/shows/ (scripts/check-api-contracts.js:75)", "shortDescription": {"text": "Dangling fetch: GET https://www.theatremonkey.com/shows/ (scripts/check-api-contracts.js:75)"}, "fullDescription": {"text": "`scripts/check-api-contracts.js:75` calls `GET https://www.theatremonkey.com/shows/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.theatremonkey.com/shows`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37df0fb838c04ebf", "name": "Dangling fetch: GET https://playbill.com/article/schedule-of-upcoming-london-shows (scripts/check-api-contracts.js:92)", "shortDescription": {"text": "Dangling fetch: GET https://playbill.com/article/schedule-of-upcoming-london-shows (scripts/check-api-contracts.js:92)"}, "fullDescription": {"text": "`scripts/check-api-contracts.js:92` calls `GET https://playbill.com/article/schedule-of-upcoming-london-shows` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/playbill.com/article/schedule-of-upcoming-london-shows`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8dfd73931bdfcc8e", "name": "Dangling fetch: GET https://old.reddit.com/r/Broadway/hot.json?limit=3 (scripts/check-api-contracts.js:109)", "shortDescription": {"text": "Dangling fetch: GET https://old.reddit.com/r/Broadway/hot.json?limit=3 (scripts/check-api-contracts.js:109)"}, "fullDescription": {"text": "`scripts/check-api-contracts.js:109` calls `GET https://old.reddit.com/r/Broadway/hot.json?limit=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/old.reddit.com/r/broadway/hot.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b3ea939d34ce6c61", "name": "Dangling fetch: GET https://api.openai.com/v1/responses/${responseId} (scripts/deep-research-commercial.js:204)", "shortDescription": {"text": "Dangling fetch: GET https://api.openai.com/v1/responses/${responseId} (scripts/deep-research-commercial.js:204)"}, "fullDescription": {"text": "`scripts/deep-research-commercial.js:204` calls `GET https://api.openai.com/v1/responses/${responseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/responses/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e76cbff756f60ff7", "name": "Dangling fetch: POST https://api.openai.com/v1/responses (scripts/deep-research-commercial.js:307)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/responses (scripts/deep-research-commercial.js:307)"}, "fullDescription": {"text": "`scripts/deep-research-commercial.js:307` calls `POST https://api.openai.com/v1/responses` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/responses`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6286904fd651e4cf", "name": "Dangling fetch: POST https://api.resend.com/emails (scripts/execute-approved-fix.js:125)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/execute-approved-fix.js:125)"}, "fullDescription": {"text": "`scripts/execute-approved-fix.js:125` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-92728d932506063e", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/opening-night-poller.js:1215)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/opening-night-poller.js:1215)"}, "fullDescription": {"text": "`scripts/opening-night-poller.js:1215` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-37d3626696776b32", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-related-shows.js:212)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-related-shows.js:212)"}, "fullDescription": {"text": "`scripts/generate-related-shows.js:212` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bb2ff318e1fe1a39", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/get-ai-feedback.js:45)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/get-ai-feedback.js:45)"}, "fullDescription": {"text": "`scripts/get-ai-feedback.js:45` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-eb699d94c6eeada1", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/get-ai-feedback.js:78)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/get-ai-feedback.js:78)"}, "fullDescription": {"text": "`scripts/get-ai-feedback.js:78` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-87c7d793cad5c99d", "name": "Dangling fetch: POST https://us.posthog.com/decide/?v=3 (scripts/validate-ab-test.js:38)", "shortDescription": {"text": "Dangling fetch: POST https://us.posthog.com/decide/?v=3 (scripts/validate-ab-test.js:38)"}, "fullDescription": {"text": "`scripts/validate-ab-test.js:38` calls `POST https://us.posthog.com/decide/?v=3` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/us.posthog.com/decide`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-55a50401486a1e63", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:244)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:244)"}, "fullDescription": {"text": "`scripts/sweep-we-aggregators.js:244` calls `GET https://app.scrapingbee.com/api/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c1022d1769748e89", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:476)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:476)"}, "fullDescription": {"text": "`scripts/sweep-we-aggregators.js:476` calls `GET https://app.scrapingbee.com/api/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ea3965164a94b21e", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:799)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:799)"}, "fullDescription": {"text": "`scripts/sweep-we-aggregators.js:799` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7227e0716bee02a3", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:1028)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:1028)"}, "fullDescription": {"text": "`scripts/sweep-we-aggregators.js:1028` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57420dc87c72cc02", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/visual-qa.mjs:421)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/visual-qa.mjs:421)"}, "fullDescription": {"text": "`scripts/visual-qa.mjs:421` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6132fff074d55fa4", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (scr", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (scripts/visual-qa.mjs:449)"}, "fullDescription": {"text": "`scripts/visual-qa.mjs:449` calls `POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/<p>/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2c18285bcfebc986", "name": "Dangling fetch: POST https://api.resend.com/emails (scripts/send-btc-results.js:177)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/send-btc-results.js:177)"}, "fullDescription": {"text": "`scripts/send-btc-results.js:177` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6df14fb04f9a82ad", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/discover-outlet-reviews-serp.js:103)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/discover-outlet-reviews-serp.js:103)"}, "fullDescription": {"text": "`scripts/discover-outlet-reviews-serp.js:103` calls `GET https://app.scrapingbee.com/api/v1/store/google` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1/store/google`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7a67adbd537818a0", "name": "Dangling fetch: POST https://api.github.com/repos/${REPO}/issues (scripts/posthog-weekly-insights.js:98)", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${REPO}/issues (scripts/posthog-weekly-insights.js:98)"}, "fullDescription": {"text": "`scripts/posthog-weekly-insights.js:98` calls `POST https://api.github.com/repos/${REPO}/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-99698ba209cd4144", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-thestage-roundups.js:62)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-thestage-roundups.js:62)"}, "fullDescription": {"text": "`scripts/scrape-thestage-roundups.js:62` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b71764cd8b307278", "name": "Dangling fetch: GET https://formspree.io/api/0/forms/mojdjwqo/submissions?${qs} (scripts/process-feedback.js:94)", "shortDescription": {"text": "Dangling fetch: GET https://formspree.io/api/0/forms/mojdjwqo/submissions?${qs} (scripts/process-feedback.js:94)"}, "fullDescription": {"text": "`scripts/process-feedback.js:94` calls `GET https://formspree.io/api/0/forms/mojdjwqo/submissions?${qs}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/api/<p>/forms/mojdjwqo/submissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e8904c0ee7179451", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-show-flags.js:116)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-show-flags.js:116)"}, "fullDescription": {"text": "`scripts/clear-stale-wrong-show-flags.js:116` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a597a6cd756a36cf", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-touring-contamination.js:448)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-touring-contamination.js:448)"}, "fullDescription": {"text": "`scripts/audit-touring-contamination.js:448` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-623f59eaa5d10813", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-touring-contamination.js:490)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-touring-contamination.js:490)"}, "fullDescription": {"text": "`scripts/audit-touring-contamination.js:490` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-11571ec1a4c2ada8", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-wrong-production.js:127)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-wrong-production.js:127)"}, "fullDescription": {"text": "`scripts/classify-wrong-production.js:127` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ce5dfc3faeb0f92", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/gather-reviews.js:4221)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/gather-reviews.js:4221)"}, "fullDescription": {"text": "`scripts/gather-reviews.js:4221` calls `GET https://app.scrapingbee.com/api/v1` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7f0e379d33c6c401", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/gather-reviews.js:4378)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/gather-reviews.js:4378)"}, "fullDescription": {"text": "`scripts/gather-reviews.js:4378` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-78196370726759cf", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-pull-quotes.js:180)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-pull-quotes.js:180)"}, "fullDescription": {"text": "`scripts/extract-pull-quotes.js:180` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d5db8f57ac380db4", "name": "Dangling fetch: POST https://api.resend.com/emails (scripts/fantasy-weekly-email.js:188)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/fantasy-weekly-email.js:188)"}, "fullDescription": {"text": "`scripts/fantasy-weekly-email.js:188` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-56c41e6d926ee260", "name": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/evaluate-brigh", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/evaluate-brightdata-serp.js:69)"}, "fullDescription": {"text": "`scripts/evaluate-brightdata-serp.js:69` calls `POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/req`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-84d966eafb932862", "name": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/evaluate-brightdata-se", "shortDescription": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/evaluate-brightdata-serp.js:89)"}, "fullDescription": {"text": "`scripts/evaluate-brightdata-serp.js:89` calls `GET https://api.brightdata.com/serp/get_result?response_id=${responseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/get_result`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bc251e3ec09be155", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/research-theater-scores.js:103)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/research-theater-scores.js:103)"}, "fullDescription": {"text": "`scripts/research-theater-scores.js:103` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-476a44309737436e", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-explicit-ratings.js:171)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-explicit-ratings.js:171)"}, "fullDescription": {"text": "`scripts/extract-explicit-ratings.js:171` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3c62fb35cea419c7", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/newspapers-com-extract.js:348)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/newspapers-com-extract.js:348)"}, "fullDescription": {"text": "`scripts/newspapers-com-extract.js:348` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b4286c88f2a73240", "name": "Dangling fetch: GET /api/article/page/${id}/articles (scripts/newspapers-com-extract.js:418)", "shortDescription": {"text": "Dangling fetch: GET /api/article/page/${id}/articles (scripts/newspapers-com-extract.js:418)"}, "fullDescription": {"text": "`scripts/newspapers-com-extract.js:418` calls `GET /api/article/page/${id}/articles` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/article/page/<p>/articles`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7b33120e9e48e83", "name": "Dangling fetch: POST https://api.browserbase.com/v1/sessions (scripts/newspapers-com-extract.js:907)", "shortDescription": {"text": "Dangling fetch: POST https://api.browserbase.com/v1/sessions (scripts/newspapers-com-extract.js:907)"}, "fullDescription": {"text": "`scripts/newspapers-com-extract.js:907` calls `POST https://api.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4b2b34d8106dc31b", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/collect-all-reviews.js:71)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/collect-all-reviews.js:71)"}, "fullDescription": {"text": "`scripts/collect-all-reviews.js:71` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9500620e6117080a", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-lbo-audience.js:37)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-lbo-audience.js:37)"}, "fullDescription": {"text": "`scripts/scrape-lbo-audience.js:37` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-59205380a0f54bc4", "name": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/discover-openi", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/discover-opening-night-reviews.js:166)"}, "fullDescription": {"text": "`scripts/discover-opening-night-reviews.js:166` calls `POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/req`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2dd97f9b740b3436", "name": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/discover-opening-night", "shortDescription": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/discover-opening-night-reviews.js:186)"}, "fullDescription": {"text": "`scripts/discover-opening-night-reviews.js:186` calls `GET https://api.brightdata.com/serp/get_result?response_id=${responseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/get_result`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1268fec3b46aa29b", "name": "Dangling fetch: POST https://api.github.com/repos/thomaspryor/Broadwayscore/issues (scripts/collection-coverage-dashboar", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/thomaspryor/Broadwayscore/issues (scripts/collection-coverage-dashboard.js:356)"}, "fullDescription": {"text": "`scripts/collection-coverage-dashboard.js:356` calls `POST https://api.github.com/repos/thomaspryor/Broadwayscore/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/thomaspryor/broadwayscore/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f301777ed82e2966", "name": "Dangling fetch: POST https://api.resend.com/emails (scripts/generate-remediation-plan.js:79)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/generate-remediation-plan.js:79)"}, "fullDescription": {"text": "`scripts/generate-remediation-plan.js:79` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2742bb6797b048ed", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-remediation-plan.js:151)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-remediation-plan.js:151)"}, "fullDescription": {"text": "`scripts/generate-remediation-plan.js:151` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d15dae9191f2f967", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/?api_key=${SCRAPINGBEE_KEY}&url=${encodeURIComponent(ssUrl)}&rend", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/?api_key=${SCRAPINGBEE_KEY}&url=${encodeURIComponent(ssUrl)}&render_js=false (scripts/fetch-show-images-auto.js:761)"}, "fullDescription": {"text": "`scripts/fetch-show-images-auto.js:761` calls `GET https://app.scrapingbee.com/api/v1/?api_key=${SCRAPINGBEE_KEY}&url=${encodeURIComponent(ssUrl)}&render_js=false` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a02273470af70f6b", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/eval-v52.js:185)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/eval-v52.js:185)"}, "fullDescription": {"text": "`scripts/eval-v52.js:185` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-01903068272ba6a0", "name": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (scripts/triage-sentry.js:192)", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (scripts/triage-sentry.js:192)"}, "fullDescription": {"text": "`scripts/triage-sentry.js:192` calls `POST https://api.github.com/repos/${owner}/${repo}/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9909429c1bd7a4d2", "name": "Dangling fetch: GET https://formspree.io/api/0/forms/${FORM_ID}/submissions?since=${since.toISOString()} (scripts/proces", "shortDescription": {"text": "Dangling fetch: GET https://formspree.io/api/0/forms/${FORM_ID}/submissions?since=${since.toISOString()} (scripts/process-review-formspree.js:63)"}, "fullDescription": {"text": "`scripts/process-review-formspree.js:63` calls `GET https://formspree.io/api/0/forms/${FORM_ID}/submissions?since=${since.toISOString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/api/<p>/forms/<p>/submissions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c09140ce8ce1130a", "name": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/issues (scripts/process-review-formspree.js:135)", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/issues (scripts/process-review-formspree.js:135)"}, "fullDescription": {"text": "`scripts/process-review-formspree.js:135` calls `POST https://api.github.com/repos/${owner}/${repoName}/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c13944bae7320a14", "name": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/actions/workflows/process-review-submission.yml/d", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/actions/workflows/process-review-submission.yml/dispatches (scripts/process-review-formspree.js:172)"}, "fullDescription": {"text": "`scripts/process-review-formspree.js:172` calls `POST https://api.github.com/repos/${owner}/${repoName}/actions/workflows/process-review-submission.yml/dispatches` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/actions/workflows/process-review-submission.yml/dispatches`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b864abef1d19b88d", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-non-reviews.js:153)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-non-reviews.js:153)"}, "fullDescription": {"text": "`scripts/classify-non-reviews.js:153` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3761008749b80711", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/classify-non-reviews.js:230)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/classify-non-reviews.js:230)"}, "fullDescription": {"text": "`scripts/classify-non-reviews.js:230` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7974fd07a74c8e98", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/check-cookie-health.js:400)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/check-cookie-health.js:400)"}, "fullDescription": {"text": "`scripts/check-cookie-health.js:400` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c79b06d362f34426", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/collect-review-texts.js:2030)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/collect-review-texts.js:2030)"}, "fullDescription": {"text": "`scripts/collect-review-texts.js:2030` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e23204884fd53107", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/ (scripts/collect-review-texts.js:2287)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/ (scripts/collect-review-texts.js:2287)"}, "fullDescription": {"text": "`scripts/collect-review-texts.js:2287` calls `GET https://app.scrapingbee.com/api/v1/` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-76c33fabb0f1d8f8", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/collect-review-texts.js:2431)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/collect-review-texts.js:2431)"}, "fullDescription": {"text": "`scripts/collect-review-texts.js:2431` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-8bd5cbf6b18cf078", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-ltd-audience.js:41)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-ltd-audience.js:41)"}, "fullDescription": {"text": "`scripts/scrape-ltd-audience.js:41` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9d3bfc26f253e184", "name": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/test-paywalled-access.js:796)", "shortDescription": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/test-paywalled-access.js:796)"}, "fullDescription": {"text": "`scripts/test-paywalled-access.js:796` calls `POST https://www.browserbase.com/v1/sessions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/www.browserbase.com/v1/sessions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-53e645576f36c3ac", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/pre-classify-titles.js:34)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/pre-classify-titles.js:34)"}, "fullDescription": {"text": "`scripts/video-reviews/pre-classify-titles.js:34` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-21a3febdbdc476f2", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/classify-reviews.js:67)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/classify-reviews.js:67)"}, "fullDescription": {"text": "`scripts/video-reviews/classify-reviews.js:67` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e428eb26e84c998", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/audit-before-share.js:70)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/audit-before-share.js:70)"}, "fullDescription": {"text": "`scripts/video-reviews/audit-before-share.js:70` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efd327c2f5eda043", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/video-reviews/audit-before-share.js:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/video-reviews/audit-before-share.js:81)"}, "fullDescription": {"text": "`scripts/video-reviews/audit-before-share.js:81` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6dbe08fbd8a75d51", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/eval-prompts.js:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/eval-prompts.js:81)"}, "fullDescription": {"text": "`scripts/video-reviews/eval-prompts.js:81` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a08815a501420c95", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/score-video-reviews.js:60)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/score-video-reviews.js:60)"}, "fullDescription": {"text": "`scripts/video-reviews/score-video-reviews.js:60` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-29287c8e3044c90f", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/closing-date-discovery.js:45)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/closing-date-discovery.js:45)"}, "fullDescription": {"text": "`scripts/lib/closing-date-discovery.js:45` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-0455c4ea15abe695", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/llm-extractor.js:214)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/llm-extractor.js:214)"}, "fullDescription": {"text": "`scripts/lib/llm-extractor.js:214` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a7c8c0de1bfa9c3c", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/content-verifier.js:130)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/content-verifier.js:130)"}, "fullDescription": {"text": "`scripts/lib/content-verifier.js:130` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-81387f368cf84dd4", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/content-verifier.js:173)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/content-verifier.js:173)"}, "fullDescription": {"text": "`scripts/lib/content-verifier.js:173` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-698c3af5995331d3", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/ibdb-cast.js:299)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/ibdb-cast.js:299)"}, "fullDescription": {"text": "`scripts/lib/ibdb-cast.js:299` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1879697e5d069e3b", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/llm-score-extractor.js:203)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/llm-score-extractor.js:203)"}, "fullDescription": {"text": "`scripts/lib/llm-score-extractor.js:203` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2020bb004af89636", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/reddit-api.js:149)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/reddit-api.js:149)"}, "fullDescription": {"text": "`scripts/lib/reddit-api.js:149` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-44facea889cf2823", "name": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE} (scripts/lib/url", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE} (scripts/lib/url-discovery.js:259)"}, "fullDescription": {"text": "`scripts/lib/url-discovery.js:259` calls `POST https://api.brightdata.com/serp/req?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/req`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d2c40c344d5db6aa", "name": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE}&response_i", "shortDescription": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE}&response_id=${responseId} (scripts/lib/url-discovery.js:288)"}, "fullDescription": {"text": "`scripts/lib/url-discovery.js:288` calls `GET https://api.brightdata.com/serp/get_result?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE}&response_id=${responseId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.brightdata.com/serp/get_result`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f9dc27d318566abe", "name": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/lib/url-discovery.js:191)", "shortDescription": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/lib/url-discovery.js:191)"}, "fullDescription": {"text": "`scripts/lib/url-discovery.js:191` calls `GET https://app.scrapingbee.com/api/v1/store/google` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/app.scrapingbee.com/api/v1/store/google`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7eed31d48f273ee4", "name": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/url-discovery.js:335)", "shortDescription": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/url-discovery.js:335)"}, "fullDescription": {"text": "`scripts/lib/url-discovery.js:335` calls `POST https://api.brightdata.com/request` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: axios\nNormalized path used for matching: `/https:/api.brightdata.com/request`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5baabda1b3d028ac", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/buzz-classifier.js:196)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/buzz-classifier.js:196)"}, "fullDescription": {"text": "`scripts/lib/buzz-classifier.js:196` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-994c776159e17a6e", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/lib/buzz-classifier.js:239)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/lib/buzz-classifier.js:239)"}, "fullDescription": {"text": "`scripts/lib/buzz-classifier.js:239` calls `POST https://openrouter.ai/api/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/openrouter.ai/api/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-3bff5c6adf42fc1f", "name": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/buzz-classifier.js:284)", "shortDescription": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/buzz-classifier.js:284)"}, "fullDescription": {"text": "`scripts/lib/buzz-classifier.js:284` calls `POST https://api.anthropic.com/v1/messages` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.anthropic.com/v1/messages`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-acb59ceb78ff48bf", "name": "Dangling fetch: GET https://www.broadwayworld.com/bwwopera/reviews (scripts/lib/bww-opera-discover.js:58)", "shortDescription": {"text": "Dangling fetch: GET https://www.broadwayworld.com/bwwopera/reviews (scripts/lib/bww-opera-discover.js:58)"}, "fullDescription": {"text": "`scripts/lib/bww-opera-discover.js:58` calls `GET https://www.broadwayworld.com/bwwopera/reviews` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:fetcher\nNormalized path used for matching: `/https:/www.broadwayworld.com/bwwopera/reviews`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-efc6e906914621e4", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/page-validator.js:82)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/page-validator.js:82)"}, "fullDescription": {"text": "`scripts/lib/page-validator.js:82` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-74b23099b63a555d", "name": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${proc", "shortDescription": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (scripts/llm-scoring/sanity-v6-single.mjs:37)"}, "fullDescription": {"text": "`scripts/llm-scoring/sanity-v6-single.mjs:37` calls `POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-064a42c8ee3b7155", "name": "Dangling fetch: POST https://api.resend.com/emails (scripts/newsletter/send-test.mjs:81)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/newsletter/send-test.mjs:81)"}, "fullDescription": {"text": "`scripts/newsletter/send-test.mjs:81` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a6d39b5f68c5326", "name": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/llm-scoring/kimi-scorer.ts:70)", "shortDescription": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/llm-scoring/kimi-scorer.ts:70)"}, "fullDescription": {"text": "`scripts/llm-scoring/kimi-scorer.ts:70` calls `POST https://openrouter.ai/api/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/openrouter.ai/api/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-2961ab941cf98e85", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/comparative-rescore.ts:131)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/comparative-rescore.ts:131)"}, "fullDescription": {"text": "`scripts/llm-scoring/comparative-rescore.ts:131` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-5666ece91bceff4c", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:159)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:159)"}, "fullDescription": {"text": "`scripts/llm-scoring/openai-scorer.ts:159` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d49cb7b8ff207f79", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:314)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:314)"}, "fullDescription": {"text": "`scripts/llm-scoring/openai-scorer.ts:314` calls `POST https://api.openai.com/v1/chat/completions` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.openai.com/v1/chat/completions`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6bc974e87549d495", "name": "Dangling fetch: GET /data/search-shows.json (src/components/HeaderSearch.tsx:49)", "shortDescription": {"text": "Dangling fetch: GET /data/search-shows.json (src/components/HeaderSearch.tsx:49)"}, "fullDescription": {"text": "`src/components/HeaderSearch.tsx:49` calls `GET /data/search-shows.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/search-shows.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-589c6eea1d287a06", "name": "Dangling fetch: POST https://formspree.io/f/${formId} (src/components/EmailCaptureModal.tsx:158)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/components/EmailCaptureModal.tsx:158)"}, "fullDescription": {"text": "`src/components/EmailCaptureModal.tsx:158` calls `POST https://formspree.io/f/${formId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9a1e13728f4e7d4b", "name": "Dangling fetch: GET /data/homepage-archive.json${cacheBust} (src/components/HomePageClient.tsx:256)", "shortDescription": {"text": "Dangling fetch: GET /data/homepage-archive.json${cacheBust} (src/components/HomePageClient.tsx:256)"}, "fullDescription": {"text": "`src/components/HomePageClient.tsx:256` calls `GET /data/homepage-archive.json${cacheBust}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/homepage-archive.json/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c7323e4155a599b8", "name": "Dangling fetch: GET https://broadwayscorecard.com/brand-tokens.json (src/app/brand/BrandPageClient.tsx:160)", "shortDescription": {"text": "Dangling fetch: GET https://broadwayscorecard.com/brand-tokens.json (src/app/brand/BrandPageClient.tsx:160)"}, "fullDescription": {"text": "`src/app/brand/BrandPageClient.tsx:160` calls `GET https://broadwayscorecard.com/brand-tokens.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/broadwayscorecard.com/brand-tokens.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4a889fa661d51e07", "name": "Dangling fetch: GET /data/show-lookup.json (src/app/my-shows/MyShowsClient.tsx:136)", "shortDescription": {"text": "Dangling fetch: GET /data/show-lookup.json (src/app/my-shows/MyShowsClient.tsx:136)"}, "fullDescription": {"text": "`src/app/my-shows/MyShowsClient.tsx:136` calls `GET /data/show-lookup.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/show-lookup.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57d06b811d1b059b", "name": "Dangling fetch: GET /data/search-shows.json (src/app/my-shows/MezzanineImport.tsx:85)", "shortDescription": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/my-shows/MezzanineImport.tsx:85)"}, "fullDescription": {"text": "`src/app/my-shows/MezzanineImport.tsx:85` calls `GET /data/search-shows.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/search-shows.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-bf50860b265ce5b1", "name": "Dangling fetch: GET /data/diary-search.json (src/app/my-shows/MezzanineImport.tsx:86)", "shortDescription": {"text": "Dangling fetch: GET /data/diary-search.json (src/app/my-shows/MezzanineImport.tsx:86)"}, "fullDescription": {"text": "`src/app/my-shows/MezzanineImport.tsx:86` calls `GET /data/diary-search.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/diary-search.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-475ff93341dda266", "name": "Dangling fetch: GET /api/beat-the-critics/pick-stats (src/app/beat-the-critics/BeatTheCriticsClient.tsx:305)", "shortDescription": {"text": "Dangling fetch: GET /api/beat-the-critics/pick-stats (src/app/beat-the-critics/BeatTheCriticsClient.tsx:305)"}, "fullDescription": {"text": "`src/app/beat-the-critics/BeatTheCriticsClient.tsx:305` calls `GET /api/beat-the-critics/pick-stats` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/beat-the-critics/pick-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-fbe0f52a4f59219e", "name": "Dangling fetch: POST /api/beat-the-critics/send-picks (src/app/beat-the-critics/BeatTheCriticsClient.tsx:390)", "shortDescription": {"text": "Dangling fetch: POST /api/beat-the-critics/send-picks (src/app/beat-the-critics/BeatTheCriticsClient.tsx:390)"}, "fullDescription": {"text": "`src/app/beat-the-critics/BeatTheCriticsClient.tsx:390` calls `POST /api/beat-the-critics/send-picks` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/beat-the-critics/send-picks`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-9e0782c5d5b22ba8", "name": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/beat-the-critics/BeatTheCriticsClient.tsx:402)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/beat-the-critics/BeatTheCriticsClient.tsx:402)"}, "fullDescription": {"text": "`src/app/beat-the-critics/BeatTheCriticsClient.tsx:402` calls `POST https://formspree.io/f/${formId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-00b34ed46f72185d", "name": "Dangling fetch: POST https://formspree.io/f/${id} (src/app/api/resend-webhook/route.ts:111)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${id} (src/app/api/resend-webhook/route.ts:111)"}, "fullDescription": {"text": "`src/app/api/resend-webhook/route.ts:111` calls `POST https://formspree.io/f/${id}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1220717b75606e4f", "name": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:166)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:166)"}, "fullDescription": {"text": "`src/app/api/beat-the-critics/send-picks/route.ts:166` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ee95b8bed86971e6", "name": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:273)", "shortDescription": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:273)"}, "fullDescription": {"text": "`src/app/api/beat-the-critics/send-picks/route.ts:273` calls `POST https://api.resend.com/emails` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.resend.com/emails`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9ed669fed466279", "name": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/api/unsubscribe/route.ts:36)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/api/unsubscribe/route.ts:36)"}, "fullDescription": {"text": "`src/app/api/unsubscribe/route.ts:36` calls `POST https://formspree.io/f/${formId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d736edff2699287b", "name": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-fix/route.ts:17)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-fix/route.ts:17)"}, "fullDescription": {"text": "`src/app/api/approve-fix/route.ts:17` calls `GET https://api.github.com${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-f81b1a06a8ececf0", "name": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (src/app/api/submit-review/route.ts:50)", "shortDescription": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (src/app/api/submit-review/route.ts:50)"}, "fullDescription": {"text": "`src/app/api/submit-review/route.ts:50` calls `POST https://api.github.com/repos/${owner}/${repo}/issues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/repos/<p>/<p>/issues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dade8e3e37d8a163", "name": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-broadcast/route.ts:32)", "shortDescription": {"text": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-broadcast/route.ts:32)"}, "fullDescription": {"text": "`src/app/api/approve-broadcast/route.ts:32` calls `GET https://api.github.com${path}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.github.com/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6a9a283529bec771", "name": "Dangling fetch: GET /data/show-lookup.json (src/app/list/[slug]/SharedListClient.tsx:126)", "shortDescription": {"text": "Dangling fetch: GET /data/show-lookup.json (src/app/list/[slug]/SharedListClient.tsx:126)"}, "fullDescription": {"text": "`src/app/list/[slug]/SharedListClient.tsx:126` calls `GET /data/show-lookup.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/show-lookup.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a3f10f199486baf4", "name": "Dangling fetch: GET /data/shows/${id}.json (src/app/list/[slug]/SharedListClient.tsx:143)", "shortDescription": {"text": "Dangling fetch: GET /data/shows/${id}.json (src/app/list/[slug]/SharedListClient.tsx:143)"}, "fullDescription": {"text": "`src/app/list/[slug]/SharedListClient.tsx:143` calls `GET /data/shows/${id}.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/shows/<p>.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-660d97b7413bbb96", "name": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/unsubscribe/UnsubscribeClient.tsx:41)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/unsubscribe/UnsubscribeClient.tsx:41)"}, "fullDescription": {"text": "`src/app/unsubscribe/UnsubscribeClient.tsx:41` calls `POST https://formspree.io/f/${formId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9319c7f2bfadc40", "name": "Dangling fetch: GET /api/admin/affiliate-stats?${params.toString()} (src/app/admin/affiliate/Dashboard.tsx:183)", "shortDescription": {"text": "Dangling fetch: GET /api/admin/affiliate-stats?${params.toString()} (src/app/admin/affiliate/Dashboard.tsx:183)"}, "fullDescription": {"text": "`src/app/admin/affiliate/Dashboard.tsx:183` calls `GET /api/admin/affiliate-stats?${params.toString()}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/affiliate-stats`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-708ae487861a7c9b", "name": "Dangling fetch: POST /api/admin/ingest-review/detect (src/app/admin/ingest/IngestForm.tsx:280)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/ingest-review/detect (src/app/admin/ingest/IngestForm.tsx:280)"}, "fullDescription": {"text": "`src/app/admin/ingest/IngestForm.tsx:280` calls `POST /api/admin/ingest-review/detect` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/ingest-review/detect`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-be2e0965ca06833d", "name": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:340)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:340)"}, "fullDescription": {"text": "`src/app/admin/ingest/IngestForm.tsx:340` calls `POST /api/admin/ingest-review` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/ingest-review`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-a29f6d51e341df75", "name": "Dangling fetch: GET /data/search-shows.json (src/app/admin/ingest/IngestForm.tsx:573)", "shortDescription": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/admin/ingest/IngestForm.tsx:573)"}, "fullDescription": {"text": "`src/app/admin/ingest/IngestForm.tsx:573` calls `GET /data/search-shows.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/search-shows.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-1db3dbf2fe045ca3", "name": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:644)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:644)"}, "fullDescription": {"text": "`src/app/admin/ingest/IngestForm.tsx:644` calls `POST /api/admin/ingest-review` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/ingest-review`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-86daa2c03652f880", "name": "Dangling fetch: POST /api/admin/dispatch-rebuild (src/app/admin/ingest/IngestForm.tsx:706)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/dispatch-rebuild (src/app/admin/ingest/IngestForm.tsx:706)"}, "fullDescription": {"text": "`src/app/admin/ingest/IngestForm.tsx:706` calls `POST /api/admin/dispatch-rebuild` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/dispatch-rebuild`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6d88938fe598c40b", "name": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/LocksTable.tsx:216)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/LocksTable.tsx:216)"}, "fullDescription": {"text": "`src/app/admin/locks/LocksTable.tsx:216` calls `POST /api/admin/lock-score` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/lock-score`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-782c9e83dbf60015", "name": "Dangling fetch: GET /data/search-shows.json (src/app/admin/locks/new/LockForm.tsx:66)", "shortDescription": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/admin/locks/new/LockForm.tsx:66)"}, "fullDescription": {"text": "`src/app/admin/locks/new/LockForm.tsx:66` calls `GET /data/search-shows.json` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/data/search-shows.json`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-57d756d76c138900", "name": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/new/LockForm.tsx:114)", "shortDescription": {"text": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/new/LockForm.tsx:114)"}, "fullDescription": {"text": "`src/app/admin/locks/new/LockForm.tsx:114` calls `POST /api/admin/lock-score` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/admin/lock-score`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-e89cb195a4adc1a2", "name": "Dangling fetch: POST https://formspree.io/f/${FORMSPREE_FOLLOW_FORM_ID} (src/app/unfollow/UnfollowClient.tsx:40)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${FORMSPREE_FOLLOW_FORM_ID} (src/app/unfollow/UnfollowClient.tsx:40)"}, "fullDescription": {"text": "`src/app/unfollow/UnfollowClient.tsx:40` calls `POST https://formspree.io/f/${FORMSPREE_FOLLOW_FORM_ID}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-18c696b140a65d96", "name": "Dangling fetch: GET /api/fantasy/leagues/${code} (src/app/fantasy/league/[code]/page.tsx:50)", "shortDescription": {"text": "Dangling fetch: GET /api/fantasy/leagues/${code} (src/app/fantasy/league/[code]/page.tsx:50)"}, "fullDescription": {"text": "`src/app/fantasy/league/[code]/page.tsx:50` calls `GET /api/fantasy/leagues/${code}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fantasy/leagues/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-d4e9f08c619efe1c", "name": "Dangling fetch: GET /api/fantasy/leaderboard?league=${code} (src/app/fantasy/league/[code]/page.tsx:51)", "shortDescription": {"text": "Dangling fetch: GET /api/fantasy/leaderboard?league=${code} (src/app/fantasy/league/[code]/page.tsx:51)"}, "fullDescription": {"text": "`src/app/fantasy/league/[code]/page.tsx:51` calls `GET /api/fantasy/leaderboard?league=${code}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fantasy/leaderboard`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-97e6e17545076060", "name": "Dangling fetch: POST /api/fantasy/draft (src/app/fantasy/draft/page.tsx:107)", "shortDescription": {"text": "Dangling fetch: POST /api/fantasy/draft (src/app/fantasy/draft/page.tsx:107)"}, "fullDescription": {"text": "`src/app/fantasy/draft/page.tsx:107` calls `POST /api/fantasy/draft` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fantasy/draft`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4c9ca91ee86bd603", "name": "Dangling fetch: POST /api/fantasy/leagues (src/app/fantasy/create-league/page.tsx:20)", "shortDescription": {"text": "Dangling fetch: POST /api/fantasy/leagues (src/app/fantasy/create-league/page.tsx:20)"}, "fullDescription": {"text": "`src/app/fantasy/create-league/page.tsx:20` calls `POST /api/fantasy/leagues` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/fantasy/leagues`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-127ab4158a32a7a6", "name": "Dangling fetch: POST https://formspree.io/f/${formId} (src/hooks/useFormspreeCapture.ts:86)", "shortDescription": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/hooks/useFormspreeCapture.ts:86)"}, "fullDescription": {"text": "`src/hooks/useFormspreeCapture.ts:86` calls `POST https://formspree.io/f/${formId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/formspree.io/f/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-19a1a46befe3d6a6", "name": "Unused endpoint: DELETE ", "shortDescription": {"text": "Unused endpoint: DELETE "}, "fullDescription": {"text": "`scripts/backfill-audience-urls.js` declares `DELETE ` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21242"}, "properties": {"repository": "thomaspryor/Broadwayscore", "repoUrl": "https://github.com/thomaspryor/Broadwayscore", "branch": "main"}, "results": [{"ruleId": "scanner-3316bb02931b7d53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/star-rating-extractors.test.js:33"}, "properties": {"repobilityId": "9a602b6783da48ee", "scanner": "scanner-primary", "fingerprint": "3316bb02931b7d53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-511f4d8a7bfdf304", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/data-quality-pipeline.test.js:27"}, "properties": {"repobilityId": "3ea7403c128f4d66", "scanner": "scanner-primary", "fingerprint": "511f4d8a7bfdf304", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1751209dbb2c329e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/validate-review-texts.test.js:63"}, "properties": {"repobilityId": "58aa4f2a7e027c5b", "scanner": "scanner-primary", "fingerprint": "1751209dbb2c329e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af517e6f24b298d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/unit/integrity-report.test.js:134"}, "properties": {"repobilityId": "25f0ba393ed3f878", "scanner": "scanner-primary", "fingerprint": "af517e6f24b298d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94f3fd78a0486ae6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/fixtures/aggregator-candidates/_generate.js:117"}, "properties": {"repobilityId": "bf03dd385ded473b", "scanner": "scanner-primary", "fingerprint": "94f3fd78a0486ae6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00e12f56eb765c52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/e2e/show-pages.spec.ts:66"}, "properties": {"repobilityId": "43bb55721d936b4d", "scanner": "scanner-primary", "fingerprint": "00e12f56eb765c52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-576437047dfb68ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-fantasy-scores.js:252"}, "properties": {"repobilityId": "0d0ff0ccb7aa45de", "scanner": "scanner-primary", "fingerprint": "576437047dfb68ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56f0efb545fc2829", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-images.js:64"}, "properties": {"repobilityId": "3f124fa45d1b0592", "scanner": "scanner-primary", "fingerprint": "56f0efb545fc2829", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db4b45a5adb1e3d4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-we-extractors.js:32"}, "properties": {"repobilityId": "478a4385c5e0baf5", "scanner": "scanner-primary", "fingerprint": "db4b45a5adb1e3d4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53d7a3fa147fc0fe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-historical.js:89"}, "properties": {"repobilityId": "5872c9bc687dba08", "scanner": "scanner-primary", "fingerprint": "53d7a3fa147fc0fe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5de0fb37d6f7043", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-proof-tonight.js:181"}, "properties": {"repobilityId": "f5c8a7c16a253530", "scanner": "scanner-primary", "fingerprint": "b5de0fb37d6f7043", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c6c95e0e764c63cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-outlet-case.js:60"}, "properties": {"repobilityId": "aa6a399822efac81", "scanner": "scanner-primary", "fingerprint": "c6c95e0e764c63cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d3cde6007132358", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theatre-reviews-star-ratings.js:61"}, "properties": {"repobilityId": "95faf19bd92c9576", "scanner": "scanner-primary", "fingerprint": "9d3cde6007132358", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-af5dd05dc145bf4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-awards-with-precursors.js:828"}, "properties": {"repobilityId": "fdb7ae298d54a73d", "scanner": "scanner-primary", "fingerprint": "af5dd05dc145bf4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-835c7b46fba088a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-existing-reviews.js:173"}, "properties": {"repobilityId": "6d649b82d96475f3", "scanner": "scanner-primary", "fingerprint": "835c7b46fba088a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55ec411a93705c62", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-we-discovery-holdout.js:83"}, "properties": {"repobilityId": "7f41579a4e98f2f9", "scanner": "scanner-primary", "fingerprint": "55ec411a93705c62", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9c977434c258f65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-production.js:83"}, "properties": {"repobilityId": "aa0aef909a0a6b20", "scanner": "scanner-primary", "fingerprint": "a9c977434c258f65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a4a8d81f4e335b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-bww-thumbs.js:28"}, "properties": {"repobilityId": "12f25aa7e0e68957", "scanner": "scanner-primary", "fingerprint": "6a4a8d81f4e335b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bac384db74871f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-bww-reviews.js:185"}, "properties": {"repobilityId": "e26e47aac872ae50", "scanner": "scanner-primary", "fingerprint": "4bac384db74871f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5487f7552acf5cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-attribution-by-critic.js:52"}, "properties": {"repobilityId": "0ad8c2b3653494a5", "scanner": "scanner-primary", "fingerprint": "e5487f7552acf5cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0ef8ef512bccfe2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-pv-critics.js:144"}, "properties": {"repobilityId": "57d16fbe6d762774", "scanner": "scanner-primary", "fingerprint": "b0ef8ef512bccfe2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc8c844f0aea0f8e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-full-data-audit.js:53"}, "properties": {"repobilityId": "84b65a3e061dcb61", "scanner": "scanner-primary", "fingerprint": "fc8c844f0aea0f8e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ac34b152bfbf0e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclassify-invalid-reviews.js:35"}, "properties": {"repobilityId": "2bab085f619a21e9", "scanner": "scanner-primary", "fingerprint": "6ac34b152bfbf0e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8648f6b178808927", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-show-freshness.js:164"}, "properties": {"repobilityId": "31870a04dec2e352", "scanner": "scanner-primary", "fingerprint": "8648f6b178808927", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40a4a05e827c0c09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-model-detail.js:71"}, "properties": {"repobilityId": "b1c48ac00fa8d73a", "scanner": "scanner-primary", "fingerprint": "40a4a05e827c0c09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7a43ecae67b92eb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-mezzanine-audience.js:171"}, "properties": {"repobilityId": "3ed1c9aa73da1a52", "scanner": "scanner-primary", "fingerprint": "7a43ecae67b92eb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab2d8a6876a90e52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-scrapable-reviews.js:63"}, "properties": {"repobilityId": "0c190a5d14700e7e", "scanner": "scanner-primary", "fingerprint": "ab2d8a6876a90e52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-375111bdfc7eca47", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tony-history.ts:364"}, "properties": {"repobilityId": "7c1659cd3ab15b0a", "scanner": "scanner-primary", "fingerprint": "375111bdfc7eca47", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17f74b178abec5aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-stagedoor-critics.js:77"}, "properties": {"repobilityId": "01d220f2fe8d8625", "scanner": "scanner-primary", "fingerprint": "17f74b178abec5aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f61217bbb9173307", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-show-data.js:308"}, "properties": {"repobilityId": "6125fe3a7749cc42", "scanner": "scanner-primary", "fingerprint": "f61217bbb9173307", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01b8b2717f3cd9a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recollect-for-scores.js:132"}, "properties": {"repobilityId": "3864533f08b0ea4f", "scanner": "scanner-primary", "fingerprint": "01b8b2717f3cd9a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a9bab87588a40971", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-classified-at.js:35"}, "properties": {"repobilityId": "60021bd700956afe", "scanner": "scanner-primary", "fingerprint": "a9bab87588a40971", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-713bcb117f0690a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/submit-google-indexing.js:64"}, "properties": {"repobilityId": "8d4f52f89c57daa3", "scanner": "scanner-primary", "fingerprint": "713bcb117f0690a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0dc2de4cafac86b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-award-scores.ts:25"}, "properties": {"repobilityId": "8c89662a8b76f81c", "scanner": "scanner-primary", "fingerprint": "b0dc2de4cafac86b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b6675f3caa2f1e5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-guide-editorials.js:192"}, "properties": {"repobilityId": "9a1e739a376098ec", "scanner": "scanner-primary", "fingerprint": "b6675f3caa2f1e5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9aeb12479e0bcf8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-explicit-ratings.js:181"}, "properties": {"repobilityId": "f8f7f27d411033a3", "scanner": "scanner-primary", "fingerprint": "c9aeb12479e0bcf8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8533179f5eecda9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-social-post.js:400"}, "properties": {"repobilityId": "d756823d5e69e81a", "scanner": "scanner-primary", "fingerprint": "8533179f5eecda9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-016ca2a29cc80dd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-contamination.js:158"}, "properties": {"repobilityId": "b8a5d57f7cfddc38", "scanner": "scanner-primary", "fingerprint": "016ca2a29cc80dd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49365cf6be0031ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-images.js:51"}, "properties": {"repobilityId": "40ab4f723acab8be", "scanner": "scanner-primary", "fingerprint": "49365cf6be0031ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9458bfa93660468", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-browserbase-login.js:60"}, "properties": {"repobilityId": "d28f824890e85b75", "scanner": "scanner-primary", "fingerprint": "b9458bfa93660468", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dcdb221f0b82167f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-reviews.js:190"}, "properties": {"repobilityId": "bc6b606f031a6e0d", "scanner": "scanner-primary", "fingerprint": "dcdb221f0b82167f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55ae53c7ebd6f67e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-readiness.js:204"}, "properties": {"repobilityId": "3fe87516bf0f4fb2", "scanner": "scanner-primary", "fingerprint": "55ae53c7ebd6f67e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e74cadd6f44d5bff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-combined-credits.js:36"}, "properties": {"repobilityId": "33baabce13b646a1", "scanner": "scanner-primary", "fingerprint": "e74cadd6f44d5bff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c60bc0d9fc5fb013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scores.js:251"}, "properties": {"repobilityId": "cfe9bfc6c7548165", "scanner": "scanner-primary", "fingerprint": "c60bc0d9fc5fb013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9590e236a9fac2f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-stagedoor-reviews.js:99"}, "properties": {"repobilityId": "324f171c079e8c17", "scanner": "scanner-primary", "fingerprint": "9590e236a9fac2f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b9655c0e540c66f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-content-tiers.js:105"}, "properties": {"repobilityId": "72ea68b0984c2027", "scanner": "scanner-primary", "fingerprint": "b9655c0e540c66f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ceb9d81b55f41e7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gc-wrong-production-stubs.js:125"}, "properties": {"repobilityId": "815fde24c70323ac", "scanner": "scanner-primary", "fingerprint": "ceb9d81b55f41e7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5639cddc737a7cb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-commercial-pending.js:57"}, "properties": {"repobilityId": "961339b7c24bd13a", "scanner": "scanner-primary", "fingerprint": "5639cddc737a7cb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f714b83d49dbee60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-coverage.js:306"}, "properties": {"repobilityId": "1e9ed34e2c780dd6", "scanner": "scanner-primary", "fingerprint": "f714b83d49dbee60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c150f7eed12f810c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-brand-tokens-sync.js:104"}, "properties": {"repobilityId": "6eea9ddedf185f36", "scanner": "scanner-primary", "fingerprint": "c150f7eed12f810c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1bedea15c327ede8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-roundup-flags.js:61"}, "properties": {"repobilityId": "85c6cc301ab71bdf", "scanner": "scanner-primary", "fingerprint": "1bedea15c327ede8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86c585a9d0e7fe3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-single-model-for-rescore.js:97"}, "properties": {"repobilityId": "f724611b87dded67", "scanner": "scanner-primary", "fingerprint": "86c585a9d0e7fe3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfda7591d57b69a5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-actor-slugs-manifest.js:63"}, "properties": {"repobilityId": "57331259e090595d", "scanner": "scanner-primary", "fingerprint": "cfda7591d57b69a5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db72b66592137679", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-orphan-image-dirs.js:12"}, "properties": {"repobilityId": "f2ed7176c497a605", "scanner": "scanner-primary", "fingerprint": "db72b66592137679", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18838bf0de8f68d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-diary-data.js:39"}, "properties": {"repobilityId": "30826958d7eaee8a", "scanner": "scanner-primary", "fingerprint": "18838bf0de8f68d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e0e5c52f65ccc34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-truncated-reviews.js:128"}, "properties": {"repobilityId": "902647c7d0594c48", "scanner": "scanner-primary", "fingerprint": "6e0e5c52f65ccc34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fd0e17cba1cc898", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-actor-images.js:135"}, "properties": {"repobilityId": "7c47a18dc44b0dd1", "scanner": "scanner-primary", "fingerprint": "2fd0e17cba1cc898", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8989a24d134d451c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-runtimes.js:99"}, "properties": {"repobilityId": "8e56e6c45b25f9e5", "scanner": "scanner-primary", "fingerprint": "8989a24d134d451c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fc06e3f36e93979", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deploy-now.js:74"}, "properties": {"repobilityId": "5778742200f1c57c", "scanner": "scanner-primary", "fingerprint": "6fc06e3f36e93979", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99a948ca3d255b2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-follow-notifications.js:63"}, "properties": {"repobilityId": "a82989f76f916224", "scanner": "scanner-primary", "fingerprint": "99a948ca3d255b2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22e27b2849ac564d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pause-rebuild.js:47"}, "properties": {"repobilityId": "004d091e5b4b9c38", "scanner": "scanner-primary", "fingerprint": "22e27b2849ac564d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fb4f2c08dc62b2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-checklist.js:145"}, "properties": {"repobilityId": "fad7976d587d59ff", "scanner": "scanner-primary", "fingerprint": "8fb4f2c08dc62b2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbe933b92d3d09df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-production-reviews.js:22"}, "properties": {"repobilityId": "0693b411a4453c91", "scanner": "scanner-primary", "fingerprint": "fbe933b92d3d09df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de7055753c527c07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-remaining-reviews.js:130"}, "properties": {"repobilityId": "ee6ec393abb14974", "scanner": "scanner-primary", "fingerprint": "de7055753c527c07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27d15f51fafaab1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/add-historical-2023-2024.js:723"}, "properties": {"repobilityId": "4e42b2d2102759f9", "scanner": "scanner-primary", "fingerprint": "27d15f51fafaab1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c61b13e8e83e736", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-dtli-reviews.js:233"}, "properties": {"repobilityId": "2d9fb8f35e4b5849", "scanner": "scanner-primary", "fingerprint": "4c61b13e8e83e736", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d6aa95c08e0d3c07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-outlets.js:233"}, "properties": {"repobilityId": "8528ccb8de764fc6", "scanner": "scanner-primary", "fingerprint": "d6aa95c08e0d3c07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fba91e915a5e8ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-duplicate-of-url-mismatch.js:128"}, "properties": {"repobilityId": "197f2dfbd4ff9d5b", "scanner": "scanner-primary", "fingerprint": "3fba91e915a5e8ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aab08567dc277e92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-we-star-ratings.js:60"}, "properties": {"repobilityId": "35f89484321b3851", "scanner": "scanner-primary", "fingerprint": "aab08567dc277e92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-238de5839493599b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-critic-consensus.js:190"}, "properties": {"repobilityId": "eab825ccb93897ea", "scanner": "scanner-primary", "fingerprint": "238de5839493599b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61aee031bbfc474c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-levenshtein-matches.js:133"}, "properties": {"repobilityId": "6dcc36fa87c16515", "scanner": "scanner-primary", "fingerprint": "61aee031bbfc474c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-167cbb28b474116f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-production-flags.js:156"}, "properties": {"repobilityId": "6911cc10bf6006d5", "scanner": "scanner-primary", "fingerprint": "167cbb28b474116f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8aaa81496c05ff38", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notion-action-poll.js:72"}, "properties": {"repobilityId": "050ae40768d8b680", "scanner": "scanner-primary", "fingerprint": "8aaa81496c05ff38", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5a6d108c24a7a18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-todaytix-links.js:139"}, "properties": {"repobilityId": "bc68c6188c229300", "scanner": "scanner-primary", "fingerprint": "d5a6d108c24a7a18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3707fc99af0ef71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-score-pages.js:26"}, "properties": {"repobilityId": "ca455836137b44ab", "scanner": "scanner-primary", "fingerprint": "a3707fc99af0ef71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f89cc62d947edec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archive-previous-scores.js:85"}, "properties": {"repobilityId": "896e6febb67fbd2e", "scanner": "scanner-primary", "fingerprint": "6f89cc62d947edec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0d8f8b3e3390365", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-stale-closures.js:99"}, "properties": {"repobilityId": "f879b120e79cebba", "scanner": "scanner-primary", "fingerprint": "c0d8f8b3e3390365", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3f6fde5ac3e3ca5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/kimi-dry-run.js:63"}, "properties": {"repobilityId": "7933743ebdbb0301", "scanner": "scanner-primary", "fingerprint": "e3f6fde5ac3e3ca5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-babab26ff53f014d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cron-health-coverage.js:89"}, "properties": {"repobilityId": "463737c0edd6bb7b", "scanner": "scanner-primary", "fingerprint": "babab26ff53f014d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23a5b56a38053471", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-grosses.ts:355"}, "properties": {"repobilityId": "8c4719463901a43a", "scanner": "scanner-primary", "fingerprint": "23a5b56a38053471", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cefaaa79be5e3e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-typos.js:126"}, "properties": {"repobilityId": "22103c8026484c5a", "scanner": "scanner-primary", "fingerprint": "7cefaaa79be5e3e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a40c9fd5c9070129", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/format-scraped-noms.js:42"}, "properties": {"repobilityId": "d9039706d7cc3790", "scanner": "scanner-primary", "fingerprint": "a40c9fd5c9070129", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c22fd0a729748eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-send-lock.js:34"}, "properties": {"repobilityId": "9dabe725c3f784ce", "scanner": "scanner-primary", "fingerprint": "2c22fd0a729748eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-996328b1da14c773", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tony-deep-backtest.ts:60"}, "properties": {"repobilityId": "60132cc87f1915ff", "scanner": "scanner-primary", "fingerprint": "996328b1da14c773", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2abe2ec4b3e427f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-show-details.js:200"}, "properties": {"repobilityId": "1b9317881f197b4c", "scanner": "scanner-primary", "fingerprint": "b2abe2ec4b3e427f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e56109fc1130a06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-followers.js:43"}, "properties": {"repobilityId": "ef3f81b5b81a1da4", "scanner": "scanner-primary", "fingerprint": "8e56109fc1130a06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d00d25bb81ca5685", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-review-og-images.js:106"}, "properties": {"repobilityId": "ff396d71eee77deb", "scanner": "scanner-primary", "fingerprint": "d00d25bb81ca5685", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-914e7b632a49f3e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-director-consensus.js:229"}, "properties": {"repobilityId": "c15a8bd4b70357c0", "scanner": "scanner-primary", "fingerprint": "914e7b632a49f3e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f8296e2fe2f7af8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-commercial-integration.js:119"}, "properties": {"repobilityId": "3c64abf2fdedfd5c", "scanner": "scanner-primary", "fingerprint": "3f8296e2fe2f7af8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e172f7ca18c24216", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-contamination.js:413"}, "properties": {"repobilityId": "657ab57cc6912169", "scanner": "scanner-primary", "fingerprint": "e172f7ca18c24216", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e5ac03433c901b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-critic-typos.js:62"}, "properties": {"repobilityId": "0148c4d4d47050cf", "scanner": "scanner-primary", "fingerprint": "8e5ac03433c901b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04f3701bd382adbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/remove-placeholder-images.js:33"}, "properties": {"repobilityId": "14727b0a161b7022", "scanner": "scanner-primary", "fingerprint": "04f3701bd382adbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2e8b9dddd4b76c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-show-lookup.js:56"}, "properties": {"repobilityId": "68e69bfb6cc4f643", "scanner": "scanner-primary", "fingerprint": "e2e8b9dddd4b76c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7eff438835a27e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-seo-health.js:98"}, "properties": {"repobilityId": "3136aa6e95583c15", "scanner": "scanner-primary", "fingerprint": "c7eff438835a27e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b51175f0489d793e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/consolidate-duplicate-reviews.js:220"}, "properties": {"repobilityId": "04e31fc581491723", "scanner": "scanner-primary", "fingerprint": "b51175f0489d793e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a882d405ef9af866", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-mobile-data.js:118"}, "properties": {"repobilityId": "0e16107cbe59ecfb", "scanner": "scanner-primary", "fingerprint": "a882d405ef9af866", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bbb8fe161f8a40b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/award-score-movers.js:32"}, "properties": {"repobilityId": "d62921567ebc9b67", "scanner": "scanner-primary", "fingerprint": "bbb8fe161f8a40b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ceab7e1f201cfbfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-qov.js:6"}, "properties": {"repobilityId": "78e5a1eb0c43ab12", "scanner": "scanner-primary", "fingerprint": "ceab7e1f201cfbfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b69407e6289487a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/comprehensive-score-audit.js:277"}, "properties": {"repobilityId": "29e1589c40a3d204", "scanner": "scanner-primary", "fingerprint": "2b69407e6289487a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-238b77733f7f2988", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-outlet-id-canonicalization.js:81"}, "properties": {"repobilityId": "e37e9e9e2d813a70", "scanner": "scanner-primary", "fingerprint": "238b77733f7f2988", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2237f049c36e217", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-review-quality.js:208"}, "properties": {"repobilityId": "972a9bbae049a11e", "scanner": "scanner-primary", "fingerprint": "d2237f049c36e217", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4d2c52dacee8d258", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nyc-theatre-roundups.js:119"}, "properties": {"repobilityId": "3aec770367bc8422", "scanner": "scanner-primary", "fingerprint": "4d2c52dacee8d258", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec2ce6ee568b5c49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-nyt-critics-pick.js:116"}, "properties": {"repobilityId": "8b63e626b44e1c64", "scanner": "scanner-primary", "fingerprint": "ec2ce6ee568b5c49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-178d455302176674", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-paywall-leaks.js:82"}, "properties": {"repobilityId": "611503f9a5ac2e7b", "scanner": "scanner-primary", "fingerprint": "178d455302176674", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdde4211a32894fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-source-scores.js:80"}, "properties": {"repobilityId": "d7756a0d6dc3ce80", "scanner": "scanner-primary", "fingerprint": "bdde4211a32894fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-54493cf2d380239e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-text.js:26"}, "properties": {"repobilityId": "003e8c41f8f0e4f0", "scanner": "scanner-primary", "fingerprint": "54493cf2d380239e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9814e6a7a15a64f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/submit-indexnow.js:43"}, "properties": {"repobilityId": "712bc0d2657c5e62", "scanner": "scanner-primary", "fingerprint": "9814e6a7a15a64f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50aad8e6c474fc92", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/btc-smoke-test.js:34"}, "properties": {"repobilityId": "3349181d0527ee05", "scanner": "scanner-primary", "fingerprint": "50aad8e6c474fc92", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1194796d61b3a151", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-scores.js:218"}, "properties": {"repobilityId": "c0f587b142c09dd1", "scanner": "scanner-primary", "fingerprint": "1194796d61b3a151", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d41cfaf8c01f6d00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team.js:190"}, "properties": {"repobilityId": "96345c390bf12377", "scanner": "scanner-primary", "fingerprint": "d41cfaf8c01f6d00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28b50be466d2b402", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-commercial-research.js:315"}, "properties": {"repobilityId": "5353cd7c714d6db7", "scanner": "scanner-primary", "fingerprint": "28b50be466d2b402", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed49b6d422f15e36", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-seatplan-audience.js:174"}, "properties": {"repobilityId": "075a05f184801813", "scanner": "scanner-primary", "fingerprint": "ed49b6d422f15e36", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3af219118a3edde9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-login.js:85"}, "properties": {"repobilityId": "37f3a1ddd750a5f4", "scanner": "scanner-primary", "fingerprint": "3af219118a3edde9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a248f177a4dbf08d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-review-entities.js:40"}, "properties": {"repobilityId": "98b9143998adc8c8", "scanner": "scanner-primary", "fingerprint": "a248f177a4dbf08d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fc68726a1a3326e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-scores.js:109"}, "properties": {"repobilityId": "240cfc4b095f1a5c", "scanner": "scanner-primary", "fingerprint": "2fc68726a1a3326e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a96b4dc5d3e72ccd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-urls.js:15"}, "properties": {"repobilityId": "1e544d753a1bb639", "scanner": "scanner-primary", "fingerprint": "a96b4dc5d3e72ccd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-183484ffffe868fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-designations.js:47"}, "properties": {"repobilityId": "b2f24a3b6d4f706c", "scanner": "scanner-primary", "fingerprint": "183484ffffe868fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49ff8d0c03a4d2a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-api-contracts.js:19"}, "properties": {"repobilityId": "5ce52c2658336a5b", "scanner": "scanner-primary", "fingerprint": "49ff8d0c03a4d2a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3adf963dcad18930", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-gd-scraper-parity.js:51"}, "properties": {"repobilityId": "240891b659ebc45e", "scanner": "scanner-primary", "fingerprint": "3adf963dcad18930", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8005129cc362fe60", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-corrupted-json.js:289"}, "properties": {"repobilityId": "ccdda2872cac170e", "scanner": "scanner-primary", "fingerprint": "8005129cc362fe60", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2a43328891f63c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-multi-production-titles.js:43"}, "properties": {"repobilityId": "f3a2e3a37c1fc143", "scanner": "scanner-primary", "fingerprint": "e2a43328891f63c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b36eb3ae9ae2055", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostic-p0-score-audit.js:213"}, "properties": {"repobilityId": "6edc3b0666cf1b7a", "scanner": "scanner-primary", "fingerprint": "0b36eb3ae9ae2055", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdf5449ebd3f55f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-precursor-noms.js:159"}, "properties": {"repobilityId": "f17ed0e1a2b6f02e", "scanner": "scanner-primary", "fingerprint": "fdf5449ebd3f55f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-562799f8c8d7aae5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-contamination.js:136"}, "properties": {"repobilityId": "815b59e76cbc6461", "scanner": "scanner-primary", "fingerprint": "562799f8c8d7aae5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-102a812aab414efb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-seat-research.js:167"}, "properties": {"repobilityId": "d0aeac834ee8dbb6", "scanner": "scanner-primary", "fingerprint": "102a812aab414efb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-42dac361f8b99e32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-field-consistency.js:150"}, "properties": {"repobilityId": "ec878f79aa8131c9", "scanner": "scanner-primary", "fingerprint": "42dac361f8b99e32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa5efcab65932a3a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-review-submission.js:138"}, "properties": {"repobilityId": "0933642754d62dba", "scanner": "scanner-primary", "fingerprint": "aa5efcab65932a3a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4110362340f1401d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-sample-urls.js:7"}, "properties": {"repobilityId": "32e30b801ccb52ed", "scanner": "scanner-primary", "fingerprint": "4110362340f1401d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3031cdc3e94b04db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-showscore-excerpts.js:68"}, "properties": {"repobilityId": "0e49da1320c9c18d", "scanner": "scanner-primary", "fingerprint": "3031cdc3e94b04db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81a4ce2c4e74c042", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-closing-dates.js:186"}, "properties": {"repobilityId": "fa8c5a10919aa11f", "scanner": "scanner-primary", "fingerprint": "81a4ce2c4e74c042", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3fa6233aaac31c3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-sync-tracker.js:27"}, "properties": {"repobilityId": "a27531eb2fba65c0", "scanner": "scanner-primary", "fingerprint": "3fa6233aaac31c3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20e536ce7271a903", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-opera-shows.js:155"}, "properties": {"repobilityId": "20fdaa2c8c2b1390", "scanner": "scanner-primary", "fingerprint": "20e536ce7271a903", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3872e67839b736cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-dates.js:320"}, "properties": {"repobilityId": "d8b713168b2c5277", "scanner": "scanner-primary", "fingerprint": "3872e67839b736cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeca0e25c1ed9e9e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-todaytix-mappings.js:158"}, "properties": {"repobilityId": "db3e485879a095b0", "scanner": "scanner-primary", "fingerprint": "aeca0e25c1ed9e9e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d601d71d8a796eff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-submission.js:209"}, "properties": {"repobilityId": "d7bdb13a8cbe3ad4", "scanner": "scanner-primary", "fingerprint": "d601d71d8a796eff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b309e917ea4a2734", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score.js:56"}, "properties": {"repobilityId": "c58e75365690ffa8", "scanner": "scanner-primary", "fingerprint": "b309e917ea4a2734", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0829c65e360228e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-regex-patterns.js:215"}, "properties": {"repobilityId": "04c3e919cdbe3ef8", "scanner": "scanner-primary", "fingerprint": "0829c65e360228e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15b9a621e73566a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-attribution.js:122"}, "properties": {"repobilityId": "02ec146aaf530a80", "scanner": "scanner-primary", "fingerprint": "15b9a621e73566a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cddf50141eece5b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deep-research-commercial.js:170"}, "properties": {"repobilityId": "82bfb2a01ed06667", "scanner": "scanner-primary", "fingerprint": "cddf50141eece5b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7335e9bf5ea05585", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/execute-approved-fix.js:104"}, "properties": {"repobilityId": "8e11c1c25a4c327b", "scanner": "scanner-primary", "fingerprint": "7335e9bf5ea05585", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-186acab087bd4ae7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-reviews.js:668"}, "properties": {"repobilityId": "bf78f1c0aa9c0a3e", "scanner": "scanner-primary", "fingerprint": "186acab087bd4ae7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de178833621d06b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-budget.js:18"}, "properties": {"repobilityId": "1c51a88779660ce3", "scanner": "scanner-primary", "fingerprint": "de178833621d06b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee9576c7a969622f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reviews.js:225"}, "properties": {"repobilityId": "418e3047acbc4862", "scanner": "scanner-primary", "fingerprint": "ee9576c7a969622f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ddae67991c18c823", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-cohort-recovery.js:246"}, "properties": {"repobilityId": "f042640951885d78", "scanner": "scanner-primary", "fingerprint": "ddae67991c18c823", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7b6121f74f890d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rollback-reroute-backlog.js:21"}, "properties": {"repobilityId": "0b7bba0f413a04c7", "scanner": "scanner-primary", "fingerprint": "e7b6121f74f890d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6270640c368fc013", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-stubhub-urls.js:131"}, "properties": {"repobilityId": "d140fafc6bc2e92b", "scanner": "scanner-primary", "fingerprint": "6270640c368fc013", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-12c5209274fef249", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recovery-marker.js:64"}, "properties": {"repobilityId": "da30990574caeda5", "scanner": "scanner-primary", "fingerprint": "12c5209274fef249", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a851af26fe66901", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-show-score-shards.js:65"}, "properties": {"repobilityId": "e0bfcf62583ecf84", "scanner": "scanner-primary", "fingerprint": "0a851af26fe66901", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a39e8709d4705d6f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-social-pulse-ranks.js:213"}, "properties": {"repobilityId": "b139620c2046af9a", "scanner": "scanner-primary", "fingerprint": "a39e8709d4705d6f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18622b502d465b65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-concurrency.js:166"}, "properties": {"repobilityId": "113c430d18f2b0e9", "scanner": "scanner-primary", "fingerprint": "18622b502d465b65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b76e40d67b5e75cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-awards.js:354"}, "properties": {"repobilityId": "6538750bcff6f58b", "scanner": "scanner-primary", "fingerprint": "b76e40d67b5e75cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92cb1f7445678a3d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-junk-url-reviews.js:114"}, "properties": {"repobilityId": "6565528ca7bf9f9b", "scanner": "scanner-primary", "fingerprint": "92cb1f7445678a3d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab6ecb795667a9d5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/repair-closure-added-dates.js:71"}, "properties": {"repobilityId": "937715b6834ae827", "scanner": "scanner-primary", "fingerprint": "ab6ecb795667a9d5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6765f50ee50cceaa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-shows.js:63"}, "properties": {"repobilityId": "38d12b00477a33c7", "scanner": "scanner-primary", "fingerprint": "6765f50ee50cceaa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da91612f85d263b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-content-quality.js:185"}, "properties": {"repobilityId": "9e1cefacf852e4cf", "scanner": "scanner-primary", "fingerprint": "da91612f85d263b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-57be03e2d4a28fb9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-all-unscored.js:36"}, "properties": {"repobilityId": "16fe1b3eb1a00f1d", "scanner": "scanner-primary", "fingerprint": "57be03e2d4a28fb9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bca9f0255c7f704", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-todaytix-showtimes.js:59"}, "properties": {"repobilityId": "2f05040dd4a1f0e6", "scanner": "scanner-primary", "fingerprint": "3bca9f0255c7f704", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfaa49b668e84e08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-homepage-archive.js:201"}, "properties": {"repobilityId": "31f8f647735d52b7", "scanner": "scanner-primary", "fingerprint": "cfaa49b668e84e08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f80a92ea3d0df67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-score-integrity.js:86"}, "properties": {"repobilityId": "20e11b51ba6ad95e", "scanner": "scanner-primary", "fingerprint": "1f80a92ea3d0df67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0620febcbf0dfde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-lottery-rush-tags.js:93"}, "properties": {"repobilityId": "5bc21fac6acbfbaa", "scanner": "scanner-primary", "fingerprint": "d0620febcbf0dfde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e97e767c40900f27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-post-rebase-survival.js:116"}, "properties": {"repobilityId": "e636ee5a533107ab", "scanner": "scanner-primary", "fingerprint": "e97e767c40900f27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27d33bc288614b7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-wrong-show-blockers.js:68"}, "properties": {"repobilityId": "b1cf8c94fc478112", "scanner": "scanner-primary", "fingerprint": "27d33bc288614b7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4870d81d12cd1a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unflag-wrong-production-fps.js:280"}, "properties": {"repobilityId": "e0d662a69bbe4e7b", "scanner": "scanner-primary", "fingerprint": "c4870d81d12cd1a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ce80ceed6585d33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-poller.js:160"}, "properties": {"repobilityId": "617564a533ed768a", "scanner": "scanner-primary", "fingerprint": "1ce80ceed6585d33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-767383fe58d41566", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-pulitzer.js:39"}, "properties": {"repobilityId": "e8d1c9a678175404", "scanner": "scanner-primary", "fingerprint": "767383fe58d41566", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e253196f86248db7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-whatsonstage.js:48"}, "properties": {"repobilityId": "8295a49b5d9d7377", "scanner": "scanner-primary", "fingerprint": "e253196f86248db7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7904b0cc5b8b5f05", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unflag-content-reviewed.js:104"}, "properties": {"repobilityId": "6e806135f8cebd5c", "scanner": "scanner-primary", "fingerprint": "7904b0cc5b8b5f05", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d6f3ac878fcc8ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-hallucinations.js:183"}, "properties": {"repobilityId": "8bb453d480da7b15", "scanner": "scanner-primary", "fingerprint": "9d6f3ac878fcc8ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e68d36387e4eccc9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query-analytics.js:73"}, "properties": {"repobilityId": "a62c13e140925fb9", "scanner": "scanner-primary", "fingerprint": "e68d36387e4eccc9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0f73faa21669a2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/research-capitalization.js:110"}, "properties": {"repobilityId": "2b78ecef1afb73de", "scanner": "scanner-primary", "fingerprint": "f0f73faa21669a2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-150c57e661b8fbe0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/count-bww-reviews.js:63"}, "properties": {"repobilityId": "c03cbd89fb636b7b", "scanner": "scanner-primary", "fingerprint": "150c57e661b8fbe0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-39d75335eca7b56a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-ob-showscore.js:91"}, "properties": {"repobilityId": "caca1e3b18bc2635", "scanner": "scanner-primary", "fingerprint": "39d75335eca7b56a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5fd9b378ae486d0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-dupes.js:8"}, "properties": {"repobilityId": "966b409c368aa9b4", "scanner": "scanner-primary", "fingerprint": "5fd9b378ae486d0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ef1e5208db553d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/canonicalize-award-categories.js:36"}, "properties": {"repobilityId": "afdbb9e4acd1047b", "scanner": "scanner-primary", "fingerprint": "6ef1e5208db553d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72903dd102fcd616", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-reddit-buzz.js:98"}, "properties": {"repobilityId": "e4bc978011e2be2b", "scanner": "scanner-primary", "fingerprint": "72903dd102fcd616", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17b94f97cc4dd372", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tonys.js:235"}, "properties": {"repobilityId": "c78dcaadb2c93259", "scanner": "scanner-primary", "fingerprint": "17b94f97cc4dd372", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4a3a80db8722aac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-status-page.js:261"}, "properties": {"repobilityId": "89c79aede240c6c1", "scanner": "scanner-primary", "fingerprint": "b4a3a80db8722aac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2473080d341aed07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-scoring-audit.js:55"}, "properties": {"repobilityId": "ac0807d2d8279d62", "scanner": "scanner-primary", "fingerprint": "2473080d341aed07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d04c9f0aacdc431", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prep-recollect-hallucinations.js:72"}, "properties": {"repobilityId": "f889015931f098e6", "scanner": "scanner-primary", "fingerprint": "8d04c9f0aacdc431", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f86705cb72a875cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-unfetchable-urls.js:96"}, "properties": {"repobilityId": "9328c104e08a8ed5", "scanner": "scanner-primary", "fingerprint": "f86705cb72a875cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f49e7e1e0223ec8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-related-shows.js:288"}, "properties": {"repobilityId": "37e7c86b6f5011a9", "scanner": "scanner-primary", "fingerprint": "1f49e7e1e0223ec8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d3c3037c9d84399", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-platform-ticket-links.js:123"}, "properties": {"repobilityId": "8ad0967b6cd00de8", "scanner": "scanner-primary", "fingerprint": "6d3c3037c9d84399", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7ba3a860886d500", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/create-stubs-from-reviews-json.js:31"}, "properties": {"repobilityId": "a38fe836b39c590b", "scanner": "scanner-primary", "fingerprint": "f7ba3a860886d500", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db8de4351896c749", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-scoring-rejection-logs.js:93"}, "properties": {"repobilityId": "a4c606f69fe53e9d", "scanner": "scanner-primary", "fingerprint": "db8de4351896c749", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28c5016fae9de76b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-push.js:199"}, "properties": {"repobilityId": "2cc16d9fb14a71aa", "scanner": "scanner-primary", "fingerprint": "28c5016fae9de76b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8fa7798a000647c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-remaining-dupes.js:16"}, "properties": {"repobilityId": "92bf5558efe33124", "scanner": "scanner-primary", "fingerprint": "8fa7798a000647c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32594b4cd130331a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-market-misroutes.js:209"}, "properties": {"repobilityId": "0c14a5d05a839a36", "scanner": "scanner-primary", "fingerprint": "32594b4cd130331a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56cf59816e9c2140", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/manual-review-direct.js:109"}, "properties": {"repobilityId": "c12cd352e82b9071", "scanner": "scanner-primary", "fingerprint": "56cf59816e9c2140", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9493a8ed462fcd6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-polymarket-tonys.js:190"}, "properties": {"repobilityId": "4b56cc65db714662", "scanner": "scanner-primary", "fingerprint": "f9493a8ed462fcd6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c362f0e6fb932b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-data-integrity.js:35"}, "properties": {"repobilityId": "428d4780ffa3583a", "scanner": "scanner-primary", "fingerprint": "1c362f0e6fb932b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60394879c866a95c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-show-score-audience.js:252"}, "properties": {"repobilityId": "1b76fd254a4eec68", "scanner": "scanner-primary", "fingerprint": "60394879c866a95c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4d105bfd1a4135a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-ab-test.js:115"}, "properties": {"repobilityId": "657f517feded196e", "scanner": "scanner-primary", "fingerprint": "d4d105bfd1a4135a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4c92ca1be28559a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-todaytix-data.js:63"}, "properties": {"repobilityId": "2a0fd84382ae6eb8", "scanner": "scanner-primary", "fingerprint": "b4c92ca1be28559a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-402cbd8fe7a515ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lint-design-tokens.js:104"}, "properties": {"repobilityId": "aa058490afc7af5a", "scanner": "scanner-primary", "fingerprint": "402cbd8fe7a515ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1bc5054eefdc9a0b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-check.js:166"}, "properties": {"repobilityId": "913754fa5a4743f7", "scanner": "scanner-primary", "fingerprint": "1bc5054eefdc9a0b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a40abf11292f34e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/disposition-misroute.js:57"}, "properties": {"repobilityId": "d14d7f9c9f45b633", "scanner": "scanner-primary", "fingerprint": "a40abf11292f34e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb282d6e644ae932", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-dedup-comprehensive.js:29"}, "properties": {"repobilityId": "4057bd7b5c54a2d6", "scanner": "scanner-primary", "fingerprint": "cb282d6e644ae932", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5360a13e16aef7fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/posthog-friction-analyzer.js:298"}, "properties": {"repobilityId": "0da8999af65e4936", "scanner": "scanner-primary", "fingerprint": "5360a13e16aef7fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81ab733d832c7326", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast.js:64"}, "properties": {"repobilityId": "440b9b36dabcb115", "scanner": "scanner-primary", "fingerprint": "81ab733d832c7326", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d212841a19982353", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-opening-night-fixes.js:21"}, "properties": {"repobilityId": "7f8852ef36244e47", "scanner": "scanner-primary", "fingerprint": "d212841a19982353", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-192e56be581a2aaf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/get-ai-feedback.js:39"}, "properties": {"repobilityId": "087f486ade021597", "scanner": "scanner-primary", "fingerprint": "192e56be581a2aaf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-222bb64d12f9888a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-known-issues.js:27"}, "properties": {"repobilityId": "ab68e09f790064f6", "scanner": "scanner-primary", "fingerprint": "222bb64d12f9888a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eea21341b465db5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/strip-stale-single-model-scores.js:99"}, "properties": {"repobilityId": "163920c7e3e4733d", "scanner": "scanner-primary", "fingerprint": "eea21341b465db5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b63cff300b9918c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-login-page-reviews.js:292"}, "properties": {"repobilityId": "47fc900063f33fd1", "scanner": "scanner-primary", "fingerprint": "b63cff300b9918c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a70d5dbbe19ffe15", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/replay-pending-bylines.js:125"}, "properties": {"repobilityId": "14d745387ca99ec6", "scanner": "scanner-primary", "fingerprint": "a70d5dbbe19ffe15", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae06ff17d40331b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-image-aspect.js:133"}, "properties": {"repobilityId": "11931b90065bc596", "scanner": "scanner-primary", "fingerprint": "ae06ff17d40331b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0b868f6e1898c65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-image-cleanup.js:54"}, "properties": {"repobilityId": "458fac8ceb22b868", "scanner": "scanner-primary", "fingerprint": "f0b868f6e1898c65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-122a99f4f36bbc43", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-social-pulse.js:317"}, "properties": {"repobilityId": "18ab603db0365bc1", "scanner": "scanner-primary", "fingerprint": "122a99f4f36bbc43", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-beee0e6d21e4a364", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-free-outlets.js:43"}, "properties": {"repobilityId": "87b66dfdb9a3565e", "scanner": "scanner-primary", "fingerprint": "beee0e6d21e4a364", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0ef60f8975b0d8fb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-recoupment-announcements.js:69"}, "properties": {"repobilityId": "71df21d223ffe389", "scanner": "scanner-primary", "fingerprint": "0ef60f8975b0d8fb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df62d7736c6cca10", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-shows-prebuild.js:87"}, "properties": {"repobilityId": "65aa47d8febd73f1", "scanner": "scanner-primary", "fingerprint": "df62d7736c6cca10", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b067587035efbc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-ab-test.js:34"}, "properties": {"repobilityId": "20cf34fb4ac7af54", "scanner": "scanner-primary", "fingerprint": "7b067587035efbc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bcde738ea523d6cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-retry-guard.js:29"}, "properties": {"repobilityId": "2ce59c923c76560a", "scanner": "scanner-primary", "fingerprint": "bcde738ea523d6cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c95c43e5bdac80e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-official-urls.js:248"}, "properties": {"repobilityId": "d5a2e52671537c5b", "scanner": "scanner-primary", "fingerprint": "3c95c43e5bdac80e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38301a9c1b5c508f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-all-unscored.js:123"}, "properties": {"repobilityId": "7205186c7e24280d", "scanner": "scanner-primary", "fingerprint": "38301a9c1b5c508f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd8729fb9e48abac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-commercial-data.js:111"}, "properties": {"repobilityId": "c4e7f135e3567a90", "scanner": "scanner-primary", "fingerprint": "fd8729fb9e48abac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf7612c90b58c656", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-llm.js:119"}, "properties": {"repobilityId": "0f85d84bd21ac579", "scanner": "scanner-primary", "fingerprint": "cf7612c90b58c656", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce27a02bbbd97bfd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-cast-manifest.js:77"}, "properties": {"repobilityId": "c2f3ac7386c83cb4", "scanner": "scanner-primary", "fingerprint": "ce27a02bbbd97bfd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e9d769616908d06", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-secrets-health.js:231"}, "properties": {"repobilityId": "5d8dce4b3bec7ec8", "scanner": "scanner-primary", "fingerprint": "1e9d769616908d06", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c98bbbe12e65b4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-all-image-formats.js:103"}, "properties": {"repobilityId": "e9077c6ffcd9698f", "scanner": "scanner-primary", "fingerprint": "4c98bbbe12e65b4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de5e4b6eb369e9e0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sweep-we-aggregators.js:186"}, "properties": {"repobilityId": "75efb20eb0bdf2f0", "scanner": "scanner-primary", "fingerprint": "de5e4b6eb369e9e0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63d74dba54c6b6cf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-duplicate-urls.js:93"}, "properties": {"repobilityId": "b063412a1f6311a2", "scanner": "scanner-primary", "fingerprint": "63d74dba54c6b6cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52d2ca661cdc31a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-from-wayback.js:174"}, "properties": {"repobilityId": "5dbd4698766119af", "scanner": "scanner-primary", "fingerprint": "52d2ca661cdc31a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d01d982721216102", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-dtli-thumbs.js:178"}, "properties": {"repobilityId": "05925ebbbe194dcc", "scanner": "scanner-primary", "fingerprint": "d01d982721216102", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7b0a0ef1e7a43c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-slug-directories.js:135"}, "properties": {"repobilityId": "7a7a9edb603c9c5c", "scanner": "scanner-primary", "fingerprint": "c7b0a0ef1e7a43c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-499ec5c5b78f4e9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-2024-25.ts:40"}, "properties": {"repobilityId": "2607e981ce6a8385", "scanner": "scanner-primary", "fingerprint": "499ec5c5b78f4e9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d5197d997f99d1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-links.js:55"}, "properties": {"repobilityId": "27ea3462502b29ea", "scanner": "scanner-primary", "fingerprint": "0d5197d997f99d1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e737db2c99edd827", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images-fallback.js:91"}, "properties": {"repobilityId": "9f43d7c34337099b", "scanner": "scanner-primary", "fingerprint": "e737db2c99edd827", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-43d64b4b775a0c5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatre-reviews.js:105"}, "properties": {"repobilityId": "71b7c30bfce5e438", "scanner": "scanner-primary", "fingerprint": "43d64b4b775a0c5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-524d2606ed657fe8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-new-shows.js:241"}, "properties": {"repobilityId": "66419483ac0963c5", "scanner": "scanner-primary", "fingerprint": "524d2606ed657fe8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e47a5376c24c1a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-temporal-override-regression.js:154"}, "properties": {"repobilityId": "c19119a599405924", "scanner": "scanner-primary", "fingerprint": "7e47a5376c24c1a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03b0d8599f8e00cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage-bucket.js:257"}, "properties": {"repobilityId": "0045d438c671515b", "scanner": "scanner-primary", "fingerprint": "03b0d8599f8e00cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e3ab97e1c3f8b94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-london-box-office-roundups.js:92"}, "properties": {"repobilityId": "4399669fe99071e4", "scanner": "scanner-primary", "fingerprint": "1e3ab97e1c3f8b94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77ea88f3820ab00e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores.js:47"}, "properties": {"repobilityId": "c49f1694f44bfa4a", "scanner": "scanner-primary", "fingerprint": "77ea88f3820ab00e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5541ab6fcb041d39", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-slug-redirects.js:111"}, "properties": {"repobilityId": "76043f62d6ecbcf3", "scanner": "scanner-primary", "fingerprint": "5541ab6fcb041d39", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0919ce9ec0bc4666", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-final-unscored.js:189"}, "properties": {"repobilityId": "e46d273b5e0355e4", "scanner": "scanner-primary", "fingerprint": "0919ce9ec0bc4666", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16f356eb98ab5f7a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-email-broadcast.js:41"}, "properties": {"repobilityId": "4509b5a1d169ec33", "scanner": "scanner-primary", "fingerprint": "16f356eb98ab5f7a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c944b524776c73f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-pre2005-reviews.js:54"}, "properties": {"repobilityId": "544b39ddac5c3229", "scanner": "scanner-primary", "fingerprint": "c944b524776c73f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c66fb9372d5d692", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/export-cookies.js:91"}, "properties": {"repobilityId": "25ceb553b6df9cc2", "scanner": "scanner-primary", "fingerprint": "1c66fb9372d5d692", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87afe2e12d783248", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-fix-git-add-core-data.js:133"}, "properties": {"repobilityId": "65cd90c1d678e6cc", "scanner": "scanner-primary", "fingerprint": "87afe2e12d783248", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e7e8287f0585e3ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-west-end-dates.js:186"}, "properties": {"repobilityId": "5c679d2bb4a166e8", "scanner": "scanner-primary", "fingerprint": "e7e8287f0585e3ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4145e7e98a758049", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-synopses-wikipedia.js:198"}, "properties": {"repobilityId": "935f63a8a0d9b419", "scanner": "scanner-primary", "fingerprint": "4145e7e98a758049", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d687c627c24b038", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-west-end-reviews.js:103"}, "properties": {"repobilityId": "4f9bbd0de342ca1f", "scanner": "scanner-primary", "fingerprint": "0d687c627c24b038", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e89bea1833fb9dfc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-seatplan-links.js:71"}, "properties": {"repobilityId": "b796920171069a6d", "scanner": "scanner-primary", "fingerprint": "e89bea1833fb9dfc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac335336e7dda3f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-review-texts.js:190"}, "properties": {"repobilityId": "414390ee66fc17a6", "scanner": "scanner-primary", "fingerprint": "ac335336e7dda3f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ca2c093e446700d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-review-dedup-gaps.js:23"}, "properties": {"repobilityId": "ebdc5f40eacafa20", "scanner": "scanner-primary", "fingerprint": "6ca2c093e446700d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5bee41b8d99015dc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/batch-correct-reviews.js:67"}, "properties": {"repobilityId": "73d1811e89d196f8", "scanner": "scanner-primary", "fingerprint": "5bee41b8d99015dc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c906c5a40042600a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backup-reviews.js:38"}, "properties": {"repobilityId": "7a9a9acfad0b901d", "scanner": "scanner-primary", "fingerprint": "c906c5a40042600a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3174180c1057989", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-remaining-domain-mismatches.js:163"}, "properties": {"repobilityId": "3a86c6b63ade5352", "scanner": "scanner-primary", "fingerprint": "f3174180c1057989", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-058b4ad8ad068870", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-creative-team-vs-synopsis.js:61"}, "properties": {"repobilityId": "09557f159b48e7d3", "scanner": "scanner-primary", "fingerprint": "058b4ad8ad068870", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ef9a77be4cc8e79", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-original-scores.js:144"}, "properties": {"repobilityId": "fee67cf2a8baf86e", "scanner": "scanner-primary", "fingerprint": "2ef9a77be4cc8e79", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63535f6f17d82e55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assess-review-baseline.js:177"}, "properties": {"repobilityId": "69a1e295e46e00dc", "scanner": "scanner-primary", "fingerprint": "63535f6f17d82e55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b381746591800bdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-sources.js:68"}, "properties": {"repobilityId": "7cc59099af6b3220", "scanner": "scanner-primary", "fingerprint": "b381746591800bdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-632f3e92c0ef5813", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-roundup-parser.js:27"}, "properties": {"repobilityId": "6852e212e36ac9e2", "scanner": "scanner-primary", "fingerprint": "632f3e92c0ef5813", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77211ec92ea78630", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-quality.js:23"}, "properties": {"repobilityId": "f7a8b248b3431880", "scanner": "scanner-primary", "fingerprint": "77211ec92ea78630", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-acc3f425b8d97301", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-stale-multishow-flags.js:106"}, "properties": {"repobilityId": "571d33db1f5dc0c1", "scanner": "scanner-primary", "fingerprint": "acc3f425b8d97301", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6eb183a316ea81fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-url-dates.js:137"}, "properties": {"repobilityId": "3675961575b6bf2f", "scanner": "scanner-primary", "fingerprint": "6eb183a316ea81fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae0832ad7f8e749f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-cross-outlet-duplicates.js:177"}, "properties": {"repobilityId": "db135ed3e7e12566", "scanner": "scanner-primary", "fingerprint": "ae0832ad7f8e749f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b512714d7810523c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-playwright-evaluate-click.js:117"}, "properties": {"repobilityId": "8cfe595f52035a7c", "scanner": "scanner-primary", "fingerprint": "b512714d7810523c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71baae5a8ee194a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-commercial-data.js:330"}, "properties": {"repobilityId": "96a8a37fbe6d42a5", "scanner": "scanner-primary", "fingerprint": "71baae5a8ee194a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eff031901676c99a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-synopsis.js:176"}, "properties": {"repobilityId": "2cd93139c74c26ed", "scanner": "scanner-primary", "fingerprint": "eff031901676c99a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1a1af5d2acbd679", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-status.js:387"}, "properties": {"repobilityId": "aa8bc2da981b22ad", "scanner": "scanner-primary", "fingerprint": "e1a1af5d2acbd679", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b51a228478c1025e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-btc-results.js:211"}, "properties": {"repobilityId": "3b937113eb6c44f9", "scanner": "scanner-primary", "fingerprint": "b51a228478c1025e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-78a350a0486395ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-unknown-dedup.js:51"}, "properties": {"repobilityId": "a9af5445e86b6534", "scanner": "scanner-primary", "fingerprint": "78a350a0486395ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0dfc655d643f8b2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-image-fetch.js:38"}, "properties": {"repobilityId": "214d72481665c3d1", "scanner": "scanner-primary", "fingerprint": "0dfc655d643f8b2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-92eac2d7bfdbfa13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/retry-wrong-urls.js:86"}, "properties": {"repobilityId": "8ac847954a3ed78a", "scanner": "scanner-primary", "fingerprint": "92eac2d7bfdbfa13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7184cfe53841b3b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-metadata-reset.js:101"}, "properties": {"repobilityId": "318ca0e3c61063d2", "scanner": "scanner-primary", "fingerprint": "7184cfe53841b3b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-14545afaa30f4a71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-fantasy-api.js:41"}, "properties": {"repobilityId": "623200195add7955", "scanner": "scanner-primary", "fingerprint": "14545afaa30f4a71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c213e5f2ef2bd80", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-commercial-o4mini.js:191"}, "properties": {"repobilityId": "c01adaee391d2bfd", "scanner": "scanner-primary", "fingerprint": "2c213e5f2ef2bd80", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d430cb99eeb9d9d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compute-gold-lists.js:455"}, "properties": {"repobilityId": "330cc0e81ec43204", "scanner": "scanner-primary", "fingerprint": "d430cb99eeb9d9d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30f10b9ca03a2d49", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-show-status.js:122"}, "properties": {"repobilityId": "feb83dd19e34f575", "scanner": "scanner-primary", "fingerprint": "30f10b9ca03a2d49", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c8450cc05947d52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-name-duplicates.js:162"}, "properties": {"repobilityId": "8ee7ac3027100b31", "scanner": "scanner-primary", "fingerprint": "4c8450cc05947d52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe4e2ad2eee5ffb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-lbo-individual-stars.js:79"}, "properties": {"repobilityId": "4061423123bd585c", "scanner": "scanner-primary", "fingerprint": "fe4e2ad2eee5ffb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a0181b037f6bb12", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-scores.js:32"}, "properties": {"repobilityId": "bf754ed2fe56663e", "scanner": "scanner-primary", "fingerprint": "6a0181b037f6bb12", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-009232f0a5655473", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-manual-review.js:194"}, "properties": {"repobilityId": "2b28b975e6b0f2c4", "scanner": "scanner-primary", "fingerprint": "009232f0a5655473", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-707d6a9e02b69e01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-we-attribution.js:58"}, "properties": {"repobilityId": "a9ec902a696eb100", "scanner": "scanner-primary", "fingerprint": "707d6a9e02b69e01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e24ae7bca0f0740", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-text-dates.js:109"}, "properties": {"repobilityId": "efbd74e277b455c5", "scanner": "scanner-primary", "fingerprint": "6e24ae7bca0f0740", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26c48ecf46775051", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/quarantine-wrong-production-reviews.js:28"}, "properties": {"repobilityId": "d0b924b1c27867d3", "scanner": "scanner-primary", "fingerprint": "26c48ecf46775051", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f9888603b6131c8f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lottery-rush.js:119"}, "properties": {"repobilityId": "640dac5566ede1e1", "scanner": "scanner-primary", "fingerprint": "f9888603b6131c8f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b6aa09ef8719136", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-outlet-reviews-serp.js:217"}, "properties": {"repobilityId": "b0833500634f0ac2", "scanner": "scanner-primary", "fingerprint": "4b6aa09ef8719136", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d0ee3aa5d3ea8a76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-playwright-credits.js:64"}, "properties": {"repobilityId": "3a8d9ed5d2e1b1cd", "scanner": "scanner-primary", "fingerprint": "d0ee3aa5d3ea8a76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b62d698467593a9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-texts.js:14"}, "properties": {"repobilityId": "f10bde0f19c804bd", "scanner": "scanner-primary", "fingerprint": "b62d698467593a9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1aed31a1e9ae6088", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-we-longrunner-fps-2026-04-24.js:61"}, "properties": {"repobilityId": "8aad6a432504a424", "scanner": "scanner-primary", "fingerprint": "1aed31a1e9ae6088", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e1a57455d4a5cf04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-and-me.js:353"}, "properties": {"repobilityId": "9e0d785a847503eb", "scanner": "scanner-primary", "fingerprint": "e1a57455d4a5cf04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e9624dcca3c03ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-consensus-contamination.js:147"}, "properties": {"repobilityId": "21180c93b6bf1ba9", "scanner": "scanner-primary", "fingerprint": "3e9624dcca3c03ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bb57d03c203474e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-timeout-and-invalid.js:33"}, "properties": {"repobilityId": "7ca34baaf7a1595e", "scanner": "scanner-primary", "fingerprint": "9bb57d03c203474e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8b1218ccf7839b78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/regenerate-tier-configs.js:62"}, "properties": {"repobilityId": "add16c725428c70a", "scanner": "scanner-primary", "fingerprint": "8b1218ccf7839b78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-082041b21765446d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mark-excerpt-scores.js:133"}, "properties": {"repobilityId": "5183b22b17733d1a", "scanner": "scanner-primary", "fingerprint": "082041b21765446d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc725d2e6e75a31a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-award-scores.js:278"}, "properties": {"repobilityId": "0e644cab6dd7567e", "scanner": "scanner-primary", "fingerprint": "bc725d2e6e75a31a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c89d73e93308bb7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-duplicates-same-show.js:159"}, "properties": {"repobilityId": "867cce2334cbe4d0", "scanner": "scanner-primary", "fingerprint": "c89d73e93308bb7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a7335141df9775f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poll-trade-press-rss.js:88"}, "properties": {"repobilityId": "8ccd47b0836a2d8b", "scanner": "scanner-primary", "fingerprint": "a7335141df9775f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35a1fda649705a94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-reroute-backlog.js:63"}, "properties": {"repobilityId": "a6e5dd31cc349463", "scanner": "scanner-primary", "fingerprint": "35a1fda649705a94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee8f773d6f314698", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/filter-scrapable.js:63"}, "properties": {"repobilityId": "32bc402aaee57f58", "scanner": "scanner-primary", "fingerprint": "ee8f773d6f314698", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f46032a2a73b589d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-slug-misroute-whitelist.js:145"}, "properties": {"repobilityId": "1bb39f9d85ef9340", "scanner": "scanner-primary", "fingerprint": "f46032a2a73b589d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba56d9ea5a1c9a19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-url-redirects.js:96"}, "properties": {"repobilityId": "45c1aa69a162e19f", "scanner": "scanner-primary", "fingerprint": "ba56d9ea5a1c9a19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a97f5466199994b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critical-errors.js:9"}, "properties": {"repobilityId": "55b19fa97371ea4b", "scanner": "scanner-primary", "fingerprint": "a97f5466199994b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ba269428075d829", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-rebuild-drops.js:92"}, "properties": {"repobilityId": "5335758ad8ddf9fa", "scanner": "scanner-primary", "fingerprint": "1ba269428075d829", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb73f0000f2bc05b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-slug-match-routing.js:109"}, "properties": {"repobilityId": "91cf102f3ead5664", "scanner": "scanner-primary", "fingerprint": "cb73f0000f2bc05b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5447415d78ddf524", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-activity.js:231"}, "properties": {"repobilityId": "d5d944758aac9d7d", "scanner": "scanner-primary", "fingerprint": "5447415d78ddf524", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f6a3bd87664a9d3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-duplicates.js:110"}, "properties": {"repobilityId": "70eaace98acc0ab8", "scanner": "scanner-primary", "fingerprint": "8f6a3bd87664a9d3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a0aa3a8ee800c66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-aggregator-originalscores.js:46"}, "properties": {"repobilityId": "84ecac889ac0e5cd", "scanner": "scanner-primary", "fingerprint": "1a0aa3a8ee800c66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-586d2f6ead4f11e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-priority-reviews.js:300"}, "properties": {"repobilityId": "62b305485b53b3e6", "scanner": "scanner-primary", "fingerprint": "586d2f6ead4f11e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f308262e5574288", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-star-scales.js:138"}, "properties": {"repobilityId": "8ec465078516389b", "scanner": "scanner-primary", "fingerprint": "2f308262e5574288", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22a12e776b73372c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-ai-citations.js:91"}, "properties": {"repobilityId": "953c298558826cce", "scanner": "scanner-primary", "fingerprint": "22a12e776b73372c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0aa4b32aefdcf39d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-integrity-report.js:202"}, "properties": {"repobilityId": "321fb0f146aff9e4", "scanner": "scanner-primary", "fingerprint": "0aa4b32aefdcf39d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f1ac308ba457dee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-cast-from-files.js:149"}, "properties": {"repobilityId": "1b888f19cd21fc5d", "scanner": "scanner-primary", "fingerprint": "7f1ac308ba457dee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99f8b56a840bc4f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/posthog-weekly-insights.js:36"}, "properties": {"repobilityId": "ed566df6e3b9624e", "scanner": "scanner-primary", "fingerprint": "99f8b56a840bc4f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77a649e82c47002e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-restaurant-names.js:70"}, "properties": {"repobilityId": "6c9396f10907e208", "scanner": "scanner-primary", "fingerprint": "77a649e82c47002e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7deca61befa2aa8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-grosses-history.ts:135"}, "properties": {"repobilityId": "23218aff71019a91", "scanner": "scanner-primary", "fingerprint": "d7deca61befa2aa8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-85796cda48cca094", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-pilot-details.js:8"}, "properties": {"repobilityId": "cc17de4c65d551bd", "scanner": "scanner-primary", "fingerprint": "85796cda48cca094", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64fe2b729735ce41", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-seat-research.js:109"}, "properties": {"repobilityId": "91c7b7c8fc5d5c56", "scanner": "scanner-primary", "fingerprint": "64fe2b729735ce41", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f92da35582cb5fe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gap-analysis-outlets.js:92"}, "properties": {"repobilityId": "ef656e8de1678c66", "scanner": "scanner-primary", "fingerprint": "f92da35582cb5fe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ce627cb051ba86d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-admin.js:52"}, "properties": {"repobilityId": "7cd1cb161d262b6f", "scanner": "scanner-primary", "fingerprint": "8ce627cb051ba86d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ccbc2fce8bf5771", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-human-review-fixes.js:23"}, "properties": {"repobilityId": "949777fe6b09347a", "scanner": "scanner-primary", "fingerprint": "6ccbc2fce8bf5771", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72c777b02fe950e5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-score-extraction-soak.js:41"}, "properties": {"repobilityId": "491fbfd939ebc5f5", "scanner": "scanner-primary", "fingerprint": "72c777b02fe950e5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c326b4b2d6a2657", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-thestage-roundups.js:56"}, "properties": {"repobilityId": "a86becd8e32e2ce1", "scanner": "scanner-primary", "fingerprint": "2c326b4b2d6a2657", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-397b6270a46df2e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cloud-secrets.js:61"}, "properties": {"repobilityId": "df430e887ca424ff", "scanner": "scanner-primary", "fingerprint": "397b6270a46df2e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4895e4f5c457045d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/split-multi-show-roundups.js:94"}, "properties": {"repobilityId": "a54168466026c279", "scanner": "scanner-primary", "fingerprint": "4895e4f5c457045d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6836eff04de8d03c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-unique-outlets.js:28"}, "properties": {"repobilityId": "29a4c074a37e0390", "scanner": "scanner-primary", "fingerprint": "6836eff04de8d03c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f2a079f23d45213", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-single-author-mismatches.js:191"}, "properties": {"repobilityId": "0e0d9498912bfdcd", "scanner": "scanner-primary", "fingerprint": "6f2a079f23d45213", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef98b7397bd6e7f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-text-quality.js:93"}, "properties": {"repobilityId": "040bd420d6c88b93", "scanner": "scanner-primary", "fingerprint": "ef98b7397bd6e7f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35f3f694b63b52b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-phantom-outlets.js:45"}, "properties": {"repobilityId": "fff22ce97df70efc", "scanner": "scanner-primary", "fingerprint": "35f3f694b63b52b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a418fb2e733c3554", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-bad-images.js:55"}, "properties": {"repobilityId": "d65c8d14c6c6bf47", "scanner": "scanner-primary", "fingerprint": "a418fb2e733c3554", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d5e3077c9da21e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/download-aggregator-pages.js:194"}, "properties": {"repobilityId": "c8f51d40d4269c74", "scanner": "scanner-primary", "fingerprint": "9d5e3077c9da21e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40571da4a5de4705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-harry-potter.js:8"}, "properties": {"repobilityId": "120acae0dcdb0558", "scanner": "scanner-primary", "fingerprint": "40571da4a5de4705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-00d4146f79ebfec7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/count-pool.ts:11"}, "properties": {"repobilityId": "0991d481d1585d5e", "scanner": "scanner-primary", "fingerprint": "00d4146f79ebfec7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5ce0ced79c81337", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-theater-tips.js:239"}, "properties": {"repobilityId": "686a8299ce52e8db", "scanner": "scanner-primary", "fingerprint": "d5ce0ced79c81337", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-77b8430ce5ee4986", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-btc-results.js:302"}, "properties": {"repobilityId": "72392b44b2f42905", "scanner": "scanner-primary", "fingerprint": "77b8430ce5ee4986", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f33d31c6cc99bc01", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dedupe-reviews-json.js:28"}, "properties": {"repobilityId": "e3ea437be5cd290c", "scanner": "scanner-primary", "fingerprint": "f33d31c6cc99bc01", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38d929c63309d042", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-model-recoupment.js:208"}, "properties": {"repobilityId": "dbd309eb416bcb2e", "scanner": "scanner-primary", "fingerprint": "38d929c63309d042", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fa8790f5d31f255", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reverify-promoted-reviews.js:57"}, "properties": {"repobilityId": "f4427ed51127bde1", "scanner": "scanner-primary", "fingerprint": "6fa8790f5d31f255", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1088b620e655aeae", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-scores.js:56"}, "properties": {"repobilityId": "0f7b82a13ec3030e", "scanner": "scanner-primary", "fingerprint": "1088b620e655aeae", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6ddb25050889008", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-aggregator-pages.ts:117"}, "properties": {"repobilityId": "18b46ae81b820ec9", "scanner": "scanner-primary", "fingerprint": "a6ddb25050889008", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5e6cb0ea5b24360", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-wrong-reviews.js:148"}, "properties": {"repobilityId": "726663f34fecbe7c", "scanner": "scanner-primary", "fingerprint": "c5e6cb0ea5b24360", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60e3629c0e56ac31", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/tune-stereophonic.js:15"}, "properties": {"repobilityId": "d039a7319770ffaa", "scanner": "scanner-primary", "fingerprint": "60e3629c0e56ac31", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e8625c2b5b49bb66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-show-ranks.ts:183"}, "properties": {"repobilityId": "2f809f3db2a0dba0", "scanner": "scanner-primary", "fingerprint": "e8625c2b5b49bb66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ac7cc4fce764e70", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-curated-images.js:31"}, "properties": {"repobilityId": "fef39d602d0ec70d", "scanner": "scanner-primary", "fingerprint": "8ac7cc4fce764e70", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6ad8dd9db6c6bd44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-alltime.ts:83"}, "properties": {"repobilityId": "cfcaa4ac3f1bff3b", "scanner": "scanner-primary", "fingerprint": "6ad8dd9db6c6bd44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7351b1561ec8691a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-historical-shows.js:126"}, "properties": {"repobilityId": "8956af9752fdfee8", "scanner": "scanner-primary", "fingerprint": "7351b1561ec8691a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ded7ce2dc9300528", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-off-broadway-alliance.js:89"}, "properties": {"repobilityId": "6bf3f98dd9bd4ae2", "scanner": "scanner-primary", "fingerprint": "ded7ce2dc9300528", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c57ca1be3cc0078", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-nysr-scores.js:114"}, "properties": {"repobilityId": "bdc938e0b0bc70bb", "scanner": "scanner-primary", "fingerprint": "4c57ca1be3cc0078", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e534f4b5da56439", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-outlet-from-sitemap.js:331"}, "properties": {"repobilityId": "2a8c6e4c5067d01c", "scanner": "scanner-primary", "fingerprint": "8e534f4b5da56439", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26e286e23d128f59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-blog-reviews-for-scoring.js:30"}, "properties": {"repobilityId": "720b153077cd96ca", "scanner": "scanner-primary", "fingerprint": "26e286e23d128f59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aeae4d0e8a2bd3df", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-brand-tokens.js:63"}, "properties": {"repobilityId": "5c53cb84859c8352", "scanner": "scanner-primary", "fingerprint": "aeae4d0e8a2bd3df", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f467e78502437c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/preview-gold-lists.js:63"}, "properties": {"repobilityId": "4931a342e1c96758", "scanner": "scanner-primary", "fingerprint": "8f467e78502437c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-917d7ea0de476c0a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-og-images.js:42"}, "properties": {"repobilityId": "0fd89682736cbace", "scanner": "scanner-primary", "fingerprint": "917d7ea0de476c0a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f80074a49785142", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-latency-report.js:193"}, "properties": {"repobilityId": "e9b592268ae2a7c8", "scanner": "scanner-primary", "fingerprint": "9f80074a49785142", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0241037dec4ad54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-embedded-grades.js:238"}, "properties": {"repobilityId": "61f15ed48d874755", "scanner": "scanner-primary", "fingerprint": "e0241037dec4ad54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6189712c3fa903fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-ob-venues.js:81"}, "properties": {"repobilityId": "c0a936a604944c62", "scanner": "scanner-primary", "fingerprint": "6189712c3fa903fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-899662d8cd959401", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-consensus.js:35"}, "properties": {"repobilityId": "dc67d64b9a717aca", "scanner": "scanner-primary", "fingerprint": "899662d8cd959401", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb3d9fb680cbc890", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/search-tony-best-play-weights.ts:122"}, "properties": {"repobilityId": "02122cca796956e8", "scanner": "scanner-primary", "fingerprint": "bb3d9fb680cbc890", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d018e64a322ba13a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-wsj-subscriber.js:198"}, "properties": {"repobilityId": "ac1b1a625f8b2a91", "scanner": "scanner-primary", "fingerprint": "d018e64a322ba13a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-608091612c1aa749", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-feedback.js:83"}, "properties": {"repobilityId": "c1842f3e1e723080", "scanner": "scanner-primary", "fingerprint": "608091612c1aa749", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5e9482d993b6ca0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-pull-quote-chrome-skip.js:31"}, "properties": {"repobilityId": "0034e12ecfac4e1a", "scanner": "scanner-primary", "fingerprint": "5e9482d993b6ca0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a97116104433d7d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-show-changes.js:296"}, "properties": {"repobilityId": "38581b3e6bb4ec58", "scanner": "scanner-primary", "fingerprint": "a97116104433d7d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2ec6ad7a015332f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-image-generator.js:300"}, "properties": {"repobilityId": "48b82ac9b5eef924", "scanner": "scanner-primary", "fingerprint": "2ec6ad7a015332f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-541a03dbd4105eed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-good-outlets.js:218"}, "properties": {"repobilityId": "1907a451326f0f81", "scanner": "scanner-primary", "fingerprint": "541a03dbd4105eed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2dcd726d27a70d1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-score-conversions.js:32"}, "properties": {"repobilityId": "f58c7b103226a3c8", "scanner": "scanner-primary", "fingerprint": "2dcd726d27a70d1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ad0ce61aee9cda05", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-contaminated-reviews.js:69"}, "properties": {"repobilityId": "a1b6c70c9299cd57", "scanner": "scanner-primary", "fingerprint": "ad0ce61aee9cda05", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbdbf1c5f3356449", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-article.js:25"}, "properties": {"repobilityId": "89921af9d57ee577", "scanner": "scanner-primary", "fingerprint": "cbdbf1c5f3356449", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ad2a4d177181c22", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-llm-score-extractor.js:37"}, "properties": {"repobilityId": "048784b1e3c3abc1", "scanner": "scanner-primary", "fingerprint": "7ad2a4d177181c22", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-941f0efbd8e99711", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-daily-digest.js:214"}, "properties": {"repobilityId": "36331b4a483d5448", "scanner": "scanner-primary", "fingerprint": "941f0efbd8e99711", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3913d003e83bce6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notion-brain.js:530"}, "properties": {"repobilityId": "a51f72b0e4fdccad", "scanner": "scanner-primary", "fingerprint": "a3913d003e83bce6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-784d1402d9481d85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ibdb.ts:74"}, "properties": {"repobilityId": "3f35a56dc6ecdd70", "scanner": "scanner-primary", "fingerprint": "784d1402d9481d85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-729710d3114dee02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rediscover-review-urls.js:147"}, "properties": {"repobilityId": "97481fca4b1ffb84", "scanner": "scanner-primary", "fingerprint": "729710d3114dee02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-729fc801a89e4604", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-wrong-show-flags.js:143"}, "properties": {"repobilityId": "8e2d1186661f36be", "scanner": "scanner-primary", "fingerprint": "729fc801a89e4604", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38a4a85fed0ccc59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-touring-contamination.js:568"}, "properties": {"repobilityId": "3bc7d2677e438428", "scanner": "scanner-primary", "fingerprint": "38a4a85fed0ccc59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-415b79b7eaac1b07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/precursor-rebuild-delta.js:73"}, "properties": {"repobilityId": "225a26c9114c6346", "scanner": "scanner-primary", "fingerprint": "415b79b7eaac1b07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e60dfdc205a881fd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seed-subscribers.js:25"}, "properties": {"repobilityId": "980e86e36742e81b", "scanner": "scanner-primary", "fingerprint": "e60dfdc205a881fd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-039a8efffa8875ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-adjudication-prompt.js:15"}, "properties": {"repobilityId": "c6f11e01ac560a77", "scanner": "scanner-primary", "fingerprint": "039a8efffa8875ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09c5cd2f1a5de4a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compress-existing-images.js:58"}, "properties": {"repobilityId": "2d61c786b48076f2", "scanner": "scanner-primary", "fingerprint": "09c5cd2f1a5de4a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f73a07debd1872f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-production.js:206"}, "properties": {"repobilityId": "f03b6fd518279c56", "scanner": "scanner-primary", "fingerprint": "f73a07debd1872f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc5c8890a3ef955b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-cast-changes.js:190"}, "properties": {"repobilityId": "4cfd665583aa77f7", "scanner": "scanner-primary", "fingerprint": "fc5c8890a3ef955b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c575fe5c0e2b0b55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-opera-images.js:64"}, "properties": {"repobilityId": "c905471e04e68ae5", "scanner": "scanner-primary", "fingerprint": "c575fe5c0e2b0b55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-700abead498142e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-ocr-extract.js:127"}, "properties": {"repobilityId": "0446036906e47bb4", "scanner": "scanner-primary", "fingerprint": "700abead498142e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e464ee3a209e5bef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/morning-radar.js:70"}, "properties": {"repobilityId": "a9722af39d246058", "scanner": "scanner-primary", "fingerprint": "e464ee3a209e5bef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f65fde4e7db8934", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/derive-noms-pool-ceilings.js:100"}, "properties": {"repobilityId": "a44fea1ec9f3eadf", "scanner": "scanner-primary", "fingerprint": "1f65fde4e7db8934", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55c8195b74aa3121", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/asc-review-status.js:47"}, "properties": {"repobilityId": "8568ad4f185577ec", "scanner": "scanner-primary", "fingerprint": "55c8195b74aa3121", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b5eea07d605b580", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-review-texts.js:33"}, "properties": {"repobilityId": "339ab558c1ad48cc", "scanner": "scanner-primary", "fingerprint": "7b5eea07d605b580", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-162d592d82b2d667", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-workflow-hygiene.js:151"}, "properties": {"repobilityId": "6bf015a280e91054", "scanner": "scanner-primary", "fingerprint": "162d592d82b2d667", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fc3f0bdf182667c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-add-core-data-checkout.js:163"}, "properties": {"repobilityId": "4b36d7e2b027ec98", "scanner": "scanner-primary", "fingerprint": "fc3f0bdf182667c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0a9229cba90c86f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-audit-flags.js:33"}, "properties": {"repobilityId": "e17a0319f9066bf9", "scanner": "scanner-primary", "fingerprint": "c0a9229cba90c86f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d99336f5bf4b1d3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-research.js:42"}, "properties": {"repobilityId": "06ce7854297fe4e5", "scanner": "scanner-primary", "fingerprint": "d99336f5bf4b1d3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3e8b1229c0c10da5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-outlet-logos.js:106"}, "properties": {"repobilityId": "575acd052034e4b8", "scanner": "scanner-primary", "fingerprint": "3e8b1229c0c10da5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a2fd088cca4cba95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ob-dates-from-showscore.js:35"}, "properties": {"repobilityId": "ba6bf30b96973cd5", "scanner": "scanner-primary", "fingerprint": "a2fd088cca4cba95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24d90f9a6fbc1a08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/snapshot-audience-grades.js:48"}, "properties": {"repobilityId": "902559cd9c31b9ea", "scanner": "scanner-primary", "fingerprint": "24d90f9a6fbc1a08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81ebd4377388ad27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/convert-show-score-to-review-texts.js:28"}, "properties": {"repobilityId": "ebe396e10525195b", "scanner": "scanner-primary", "fingerprint": "81ebd4377388ad27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-df6620579a603c04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/delete-misroute-orphans.js:50"}, "properties": {"repobilityId": "3edc353f8503d80b", "scanner": "scanner-primary", "fingerprint": "df6620579a603c04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c84450a7887d721", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-non-review-misclassifications.js:172"}, "properties": {"repobilityId": "1a41a460ccb5b901", "scanner": "scanner-primary", "fingerprint": "3c84450a7887d721", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0dbafce815cb1a8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-scores.js:226"}, "properties": {"repobilityId": "24237e2d594d1c0e", "scanner": "scanner-primary", "fingerprint": "b0dbafce815cb1a8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3617e694c52eb76", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-syndicated-duplicates.js:103"}, "properties": {"repobilityId": "b0687be728943a49", "scanner": "scanner-primary", "fingerprint": "e3617e694c52eb76", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b10c889a47dc6a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/health-check-urls.js:223"}, "properties": {"repobilityId": "a9b22814628cdddb", "scanner": "scanner-primary", "fingerprint": "7b10c889a47dc6a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3f2bca1b4d3deb14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-theater-scores-round2.js:67"}, "properties": {"repobilityId": "a45144c4963123f9", "scanner": "scanner-primary", "fingerprint": "3f2bca1b4d3deb14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da8c151b2705c42c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-null-dates.js:94"}, "properties": {"repobilityId": "c8cd0fa495e2f3be", "scanner": "scanner-primary", "fingerprint": "da8c151b2705c42c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3316e3dda40d926a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-we-cross-market.js:122"}, "properties": {"repobilityId": "9e1d17f387ae5d50", "scanner": "scanner-primary", "fingerprint": "3316e3dda40d926a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e81187bc38a166d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-llm-scoring-parity.js:269"}, "properties": {"repobilityId": "e94f45b98fd3598f", "scanner": "scanner-primary", "fingerprint": "0e81187bc38a166d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-285bcd8f0e43a150", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-budget-preflight.js:135"}, "properties": {"repobilityId": "3c998651ca282f80", "scanner": "scanner-primary", "fingerprint": "285bcd8f0e43a150", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e848daae24aef98", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-dtli-excerpts.js:131"}, "properties": {"repobilityId": "b183820214858f4e", "scanner": "scanner-primary", "fingerprint": "9e848daae24aef98", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0203da2fae2003d7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/unabandon-non-serp-cycles.js:83"}, "properties": {"repobilityId": "38a221fea6b8f642", "scanner": "scanner-primary", "fingerprint": "0203da2fae2003d7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0d26c4689a3260e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-completeness.js:198"}, "properties": {"repobilityId": "a9c56814ec2b4a70", "scanner": "scanner-primary", "fingerprint": "c0d26c4689a3260e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc305b5e39b85743", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-loso.ts:424"}, "properties": {"repobilityId": "66058f24e0bcfeb1", "scanner": "scanner-primary", "fingerprint": "bc305b5e39b85743", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c2c812170e33c2ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/gather-reviews.js:159"}, "properties": {"repobilityId": "8f930f0c7aa654cd", "scanner": "scanner-primary", "fingerprint": "c2c812170e33c2ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3316f13ffcf754f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sync-review-texts.js:73"}, "properties": {"repobilityId": "427ec699c3674776", "scanner": "scanner-primary", "fingerprint": "3316f13ffcf754f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aec5f4ac26dd9fb7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-pull-quotes.js:225"}, "properties": {"repobilityId": "0c08d73cd4e47d4f", "scanner": "scanner-primary", "fingerprint": "aec5f4ac26dd9fb7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1e9c7c1492b9b08c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-incomplete-reasons.js:32"}, "properties": {"repobilityId": "bb4719fac974a3a8", "scanner": "scanner-primary", "fingerprint": "1e9c7c1492b9b08c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ffeea537a4a7e5f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-playbill-urls.js:134"}, "properties": {"repobilityId": "fdf773bd1d6b6357", "scanner": "scanner-primary", "fingerprint": "1ffeea537a4a7e5f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c099763b10bf81aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-bww-reviews.js:248"}, "properties": {"repobilityId": "b41318c06a8c4430", "scanner": "scanner-primary", "fingerprint": "c099763b10bf81aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d73d667f9ae6b6b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-gd-snapshot-timing.js:86"}, "properties": {"repobilityId": "78ad83cef872e36b", "scanner": "scanner-primary", "fingerprint": "9d73d667f9ae6b6b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc16b5ccb51cc77f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-image-aspect.js:159"}, "properties": {"repobilityId": "7d1ad21393d3f2f4", "scanner": "scanner-primary", "fingerprint": "dc16b5ccb51cc77f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e08752f524d4f9f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-all-seasons.ts:31"}, "properties": {"repobilityId": "4cfdc1e873033ab2", "scanner": "scanner-primary", "fingerprint": "e08752f524d4f9f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38ed0bca5b38e51f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-score-urls.js:184"}, "properties": {"repobilityId": "5b83055070c46156", "scanner": "scanner-primary", "fingerprint": "38ed0bca5b38e51f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60a8c646d1f2cf23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-playbill-verdict.js:113"}, "properties": {"repobilityId": "ec32514faf6c5373", "scanner": "scanner-primary", "fingerprint": "60a8c646d1f2cf23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a4bf8e0dde3e775", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sweep-pending-commercial.js:167"}, "properties": {"repobilityId": "ab28d9bc567eea11", "scanner": "scanner-primary", "fingerprint": "3a4bf8e0dde3e775", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7e26f9439505c8e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-guardian-reviews.js:100"}, "properties": {"repobilityId": "dcb7584040127043", "scanner": "scanner-primary", "fingerprint": "7e26f9439505c8e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8a2a9ee129aa2ba9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-search-shows.js:91"}, "properties": {"repobilityId": "79dfecd9c3cb044a", "scanner": "scanner-primary", "fingerprint": "8a2a9ee129aa2ba9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4ce8a1a7aebb2dd0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-bww-thumbs.js:103"}, "properties": {"repobilityId": "5f63662d99ab97e9", "scanner": "scanner-primary", "fingerprint": "4ce8a1a7aebb2dd0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0b58c6a8b4f4c5f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-non-reviews.js:121"}, "properties": {"repobilityId": "b864be74505486ac", "scanner": "scanner-primary", "fingerprint": "0b58c6a8b4f4c5f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d015d4b4852a0959", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-aggregator-truth.js:339"}, "properties": {"repobilityId": "78b6d9cf43ea55a2", "scanner": "scanner-primary", "fingerprint": "d015d4b4852a0959", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-56db03e0522d9a61", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reviews-to-sanity.js:204"}, "properties": {"repobilityId": "b4a262ac8ac6f0a5", "scanner": "scanner-primary", "fingerprint": "56db03e0522d9a61", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-da5dc581dbff08b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/re-ensemble-scores.ts:91"}, "properties": {"repobilityId": "187513d7f4e1fe4e", "scanner": "scanner-primary", "fingerprint": "da5dc581dbff08b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-03e5f428b1d67d67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-runtimes.js:240"}, "properties": {"repobilityId": "8cdcdbd4d6eac28a", "scanner": "scanner-primary", "fingerprint": "03e5f428b1d67d67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6b1ba4e2e86e1c34", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts-v2.js:114"}, "properties": {"repobilityId": "0cf6187e20a46842", "scanner": "scanner-primary", "fingerprint": "6b1ba4e2e86e1c34", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-41a7960275e8682a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-model-health.js:154"}, "properties": {"repobilityId": "954460cdccaa7207", "scanner": "scanner-primary", "fingerprint": "41a7960275e8682a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec9ca2345f7cb3b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/probe-wrong-show-staleness.js:161"}, "properties": {"repobilityId": "1b978ada98035035", "scanner": "scanner-primary", "fingerprint": "ec9ca2345f7cb3b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6fe5d4f9b41e9d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-commercial-export.js:115"}, "properties": {"repobilityId": "8ea4742241af213b", "scanner": "scanner-primary", "fingerprint": "a6fe5d4f9b41e9d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-468d09d864da1f1d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fantasy-weekly-email.js:180"}, "properties": {"repobilityId": "cc3daefbfee53187", "scanner": "scanner-primary", "fingerprint": "468d09d864da1f1d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8e428eaa31d87d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resolve-remaining-collisions.js:80"}, "properties": {"repobilityId": "4b91fd0459001f17", "scanner": "scanner-primary", "fingerprint": "a8e428eaa31d87d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20ad03f4ea1d6844", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-ss-score-labels.js:52"}, "properties": {"repobilityId": "001281d2883325be", "scanner": "scanner-primary", "fingerprint": "20ad03f4ea1d6844", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a902482e8612527f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-review-cruft.js:138"}, "properties": {"repobilityId": "8aabf054039ede27", "scanner": "scanner-primary", "fingerprint": "a902482e8612527f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5743eebe05077c2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-critic-misattribution.js:50"}, "properties": {"repobilityId": "19a07423ee71c1d3", "scanner": "scanner-primary", "fingerprint": "b5743eebe05077c2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33a8e2d5a79c9498", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-numeric-scores.js:51"}, "properties": {"repobilityId": "df0f72ddae8e13c9", "scanner": "scanner-primary", "fingerprint": "33a8e2d5a79c9498", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81c1b6f4e47f64da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/opening-night-sla-dispatch.js:100"}, "properties": {"repobilityId": "1bd2454af8c72c50", "scanner": "scanner-primary", "fingerprint": "81c1b6f4e47f64da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-463c073ddbd6329f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evaluate-brightdata-serp.js:120"}, "properties": {"repobilityId": "c885bbeaafaa2973", "scanner": "scanner-primary", "fingerprint": "463c073ddbd6329f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36ee38262481c7c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-readiness.js:61"}, "properties": {"repobilityId": "bc052cfdb71faa3b", "scanner": "scanner-primary", "fingerprint": "36ee38262481c7c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8addb998ad0d069c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-duplicates-and-zeros.js:42"}, "properties": {"repobilityId": "f90c5f190e137c17", "scanner": "scanner-primary", "fingerprint": "8addb998ad0d069c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f12b6b82b3b8b472", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-bundle-size.js:34"}, "properties": {"repobilityId": "3ca2fa657d7d6b6e", "scanner": "scanner-primary", "fingerprint": "f12b6b82b3b8b472", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee1be0108f56bd6e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-bad-ibdb-cast.js:54"}, "properties": {"repobilityId": "3ebcc43ef5dc0fa3", "scanner": "scanner-primary", "fingerprint": "ee1be0108f56bd6e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6bd856a746b7c73d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-serp-candidate-validator.js:34"}, "properties": {"repobilityId": "2bddf265c4be9894", "scanner": "scanner-primary", "fingerprint": "6bd856a746b7c73d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0eb1fcacdad2e64a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critics-archive-org.js:73"}, "properties": {"repobilityId": "a1dfd2b59cf4cc86", "scanner": "scanner-primary", "fingerprint": "0eb1fcacdad2e64a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8f8da22ff607b7c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-ob-historical.js:155"}, "properties": {"repobilityId": "35c3e5dad4c63094", "scanner": "scanner-primary", "fingerprint": "8f8da22ff607b7c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fde7443bd3286979", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nysr-reviews.js:98"}, "properties": {"repobilityId": "1769a620f00ee8bc", "scanner": "scanner-primary", "fingerprint": "fde7443bd3286979", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a39f28d5fd641fee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-show-venue.js:345"}, "properties": {"repobilityId": "e471bb282f61b710", "scanner": "scanner-primary", "fingerprint": "a39f28d5fd641fee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b132062f38d16f67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-commercial-data.js:821"}, "properties": {"repobilityId": "6c11ae639049d6bf", "scanner": "scanner-primary", "fingerprint": "b132062f38d16f67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cb4d4347cb86688", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/remediate-duplicate-images.js:209"}, "properties": {"repobilityId": "c476f44dcdc65a1d", "scanner": "scanner-primary", "fingerprint": "7cb4d4347cb86688", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3e629f2329abfbf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/calculate-recoupment.js:151"}, "properties": {"repobilityId": "d68a862d5d1856c6", "scanner": "scanner-primary", "fingerprint": "c3e629f2329abfbf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8732f87e00721b3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-obie.js:102"}, "properties": {"repobilityId": "d9c4e24d6d9ffb30", "scanner": "scanner-primary", "fingerprint": "f8732f87e00721b3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e03410ad3c250522", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-images.js:343"}, "properties": {"repobilityId": "a0dfa8d9c278311d", "scanner": "scanner-primary", "fingerprint": "e03410ad3c250522", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-347444d6f09fd308", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/research-theater-scores.js:122"}, "properties": {"repobilityId": "9d73796dc3eb6e97", "scanner": "scanner-primary", "fingerprint": "347444d6f09fd308", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b9abfc97e865c16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-critics-circle.js:41"}, "properties": {"repobilityId": "f9d2010d2d08494a", "scanner": "scanner-primary", "fingerprint": "3b9abfc97e865c16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-171d7dfb43dc728e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-excerpt-as-fulltext.js:71"}, "properties": {"repobilityId": "5fbb7315f45d679b", "scanner": "scanner-primary", "fingerprint": "171d7dfb43dc728e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0a58a4a5b95653d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-we-cross-production.js:111"}, "properties": {"repobilityId": "bebb7b57822ef9e1", "scanner": "scanner-primary", "fingerprint": "0a58a4a5b95653d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a8eaba002ca9b4f9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tests-vs-derived-data.js:80"}, "properties": {"repobilityId": "2994c46815d2982a", "scanner": "scanner-primary", "fingerprint": "a8eaba002ca9b4f9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20a71cede3c885c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-images-llm.js:187"}, "properties": {"repobilityId": "9645b0252784b36b", "scanner": "scanner-primary", "fingerprint": "20a71cede3c885c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8889411390ebcc5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-showscore-reviews.js:202"}, "properties": {"repobilityId": "a32f9a9d9b5508eb", "scanner": "scanner-primary", "fingerprint": "f8889411390ebcc5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-299e129a12f72050", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/show-mismatches.js:11"}, "properties": {"repobilityId": "5e6fb0827702df99", "scanner": "scanner-primary", "fingerprint": "299e129a12f72050", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2909ab875a8be293", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-show-review-gap.js:366"}, "properties": {"repobilityId": "85b929876eec79c4", "scanner": "scanner-primary", "fingerprint": "2909ab875a8be293", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-464a52edeb3ae3f0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-kalshi-tony-history.ts:403"}, "properties": {"repobilityId": "0d011743328100eb", "scanner": "scanner-primary", "fingerprint": "464a52edeb3ae3f0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-47389465142898b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reverify-with-haiku.js:177"}, "properties": {"repobilityId": "fd70d753d25072ec", "scanner": "scanner-primary", "fingerprint": "47389465142898b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2b2a113097f50103", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/retry-pending-scores.js:47"}, "properties": {"repobilityId": "c01e90ddd75c0a2c", "scanner": "scanner-primary", "fingerprint": "2b2a113097f50103", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-feefb4ddfe037665", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/outlet-listing-poller.js:386"}, "properties": {"repobilityId": "c7934465ed1b8eda", "scanner": "scanner-primary", "fingerprint": "feefb4ddfe037665", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c4626794fc69077", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-explicit-ratings.js:259"}, "properties": {"repobilityId": "1ff0f0a40b90f4da", "scanner": "scanner-primary", "fingerprint": "5c4626794fc69077", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fb44eb27fb9ab17", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-gold-derby-tonys.js:55"}, "properties": {"repobilityId": "188cefeba121e0c0", "scanner": "scanner-primary", "fingerprint": "0fb44eb27fb9ab17", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-57d999fd920d639e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-showscore-we.js:232"}, "properties": {"repobilityId": "482cd6e78613bb12", "scanner": "scanner-primary", "fingerprint": "57d999fd920d639e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-84464dfe08219ed0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-title-normalization.js:27"}, "properties": {"repobilityId": "352fe495bf18c0b0", "scanner": "scanner-primary", "fingerprint": "84464dfe08219ed0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fcfb7d7c3f90895a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/block-review.js:139"}, "properties": {"repobilityId": "5d5e2867f4321ef5", "scanner": "scanner-primary", "fingerprint": "fcfb7d7c3f90895a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf12f74fe0d928c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-market-expansion.js:19"}, "properties": {"repobilityId": "92843891f4519299", "scanner": "scanner-primary", "fingerprint": "bf12f74fe0d928c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-328690a54048d6af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-locks-index.js:40"}, "properties": {"repobilityId": "789e155e590be121", "scanner": "scanner-primary", "fingerprint": "328690a54048d6af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-73930f565246ccbd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-time-backfill-opening-date-source.js:60"}, "properties": {"repobilityId": "874bd04b8744640b", "scanner": "scanner-primary", "fingerprint": "73930f565246ccbd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f57ef9b5da260a3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/promote-ob-venue-candidates.js:86"}, "properties": {"repobilityId": "07a5170f0ce5dee1", "scanner": "scanner-primary", "fingerprint": "1f57ef9b5da260a3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58e3bc5744aac888", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/newspapers-com-extract.js:269"}, "properties": {"repobilityId": "d58dd66e6059a44d", "scanner": "scanner-primary", "fingerprint": "58e3bc5744aac888", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cddea626c9e2c5af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-show-category.js:36"}, "properties": {"repobilityId": "c0e21b470dd98393", "scanner": "scanner-primary", "fingerprint": "cddea626c9e2c5af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-60e73347dbb063a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-outlet-registry.js:384"}, "properties": {"repobilityId": "9445755a896d3a6a", "scanner": "scanner-primary", "fingerprint": "60e73347dbb063a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-161f4cf7e29e92d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-structural-markers.js:17"}, "properties": {"repobilityId": "785c86811eedcaf4", "scanner": "scanner-primary", "fingerprint": "161f4cf7e29e92d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a214018090b0dad6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-market.js:69"}, "properties": {"repobilityId": "96f56c86f088eb0c", "scanner": "scanner-primary", "fingerprint": "a214018090b0dad6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d2291cd63ef0438", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-ibdb-urls.js:47"}, "properties": {"repobilityId": "32ded4a1027222f6", "scanner": "scanner-primary", "fingerprint": "0d2291cd63ef0438", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec17b6fd1c6ea294", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/compare-gd-vs-broadwayscore.ts:165"}, "properties": {"repobilityId": "f707767e355c758a", "scanner": "scanner-primary", "fingerprint": "ec17b6fd1c6ea294", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6986fb7fc257b7aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-unknown-critics.js:186"}, "properties": {"repobilityId": "fd11daa58feb0f10", "scanner": "scanner-primary", "fingerprint": "6986fb7fc257b7aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cfd08ea7b5a2f526", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-file-integrity.js:23"}, "properties": {"repobilityId": "8ad6a4e5835aa64c", "scanner": "scanner-primary", "fingerprint": "cfd08ea7b5a2f526", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dbcb896e5bb00401", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dd-67-68-transcription.js:696"}, "properties": {"repobilityId": "7ad8b9f45ad04ad9", "scanner": "scanner-primary", "fingerprint": "dbcb896e5bb00401", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4bce1ba0f67b358a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-mobile-shows.js:30"}, "properties": {"repobilityId": "53f0bdaba04a4f79", "scanner": "scanner-primary", "fingerprint": "4bce1ba0f67b358a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5446461ae11f921e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-matching.js:92"}, "properties": {"repobilityId": "14538e61e13da280", "scanner": "scanner-primary", "fingerprint": "5446461ae11f921e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30924bf3f4c3e79c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-all-reviews.js:110"}, "properties": {"repobilityId": "295433c28e3ab7d5", "scanner": "scanner-primary", "fingerprint": "30924bf3f4c3e79c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de6c7024543a6249", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-critic-coverage.js:130"}, "properties": {"repobilityId": "359de129ae3c77af", "scanner": "scanner-primary", "fingerprint": "de6c7024543a6249", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38bc57e3f5771205", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-supabase.js:46"}, "properties": {"repobilityId": "2e050948d8dca814", "scanner": "scanner-primary", "fingerprint": "38bc57e3f5771205", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1d0a82f8401b521", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-awards-from-precursors.js:55"}, "properties": {"repobilityId": "a9e5a07fafc15093", "scanner": "scanner-primary", "fingerprint": "f1d0a82f8401b521", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-678ea924a606e4ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-with-playwright.js:23"}, "properties": {"repobilityId": "e490f5820f7ef5da", "scanner": "scanner-primary", "fingerprint": "678ea924a606e4ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b94c18c3c822a077", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnose-feedback-bug.js:464"}, "properties": {"repobilityId": "ebd8c4dbf2289e8c", "scanner": "scanner-primary", "fingerprint": "b94c18c3c822a077", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ba434da525ff89c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-off-broadway-dates.js:152"}, "properties": {"repobilityId": "1d5a5ce4b9d08ef1", "scanner": "scanner-primary", "fingerprint": "9ba434da525ff89c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3d8f61f153edfdcb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-sqlite.js:34"}, "properties": {"repobilityId": "a77458984d7b3043", "scanner": "scanner-primary", "fingerprint": "3d8f61f153edfdcb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fab37c3860f1cd9a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-night-broadcast.js:209"}, "properties": {"repobilityId": "b9f750f513ec90eb", "scanner": "scanner-primary", "fingerprint": "fab37c3860f1cd9a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-74e8fd230ce1c103", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-nydcc.js:75"}, "properties": {"repobilityId": "8b14340cea6eb19b", "scanner": "scanner-primary", "fingerprint": "74e8fd230ce1c103", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29452c1ef6bf0ece", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production.js:523"}, "properties": {"repobilityId": "605da69b7c25d404", "scanner": "scanner-primary", "fingerprint": "29452c1ef6bf0ece", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4443970604645524", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-prices.js:38"}, "properties": {"repobilityId": "440df2c9f53b7cbf", "scanner": "scanner-primary", "fingerprint": "4443970604645524", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7f9033d73281571", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-null-dates.js:27"}, "properties": {"repobilityId": "7addbcdbe9329720", "scanner": "scanner-primary", "fingerprint": "c7f9033d73281571", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-76d2237a58e076ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-reviews.js:94"}, "properties": {"repobilityId": "b17fcdee2589da68", "scanner": "scanner-primary", "fingerprint": "76d2237a58e076ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-27172c5269bf53cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-lbo-audience.js:232"}, "properties": {"repobilityId": "1ebd0ba7a5c73cfb", "scanner": "scanner-primary", "fingerprint": "27172c5269bf53cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e90863780ec97998", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-rescore-needed.js:50"}, "properties": {"repobilityId": "7513b970025357e1", "scanner": "scanner-primary", "fingerprint": "e90863780ec97998", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c3742826ca3cfe0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/refresh-nyt-critics-picks.js:57"}, "properties": {"repobilityId": "b47aed71bf78821f", "scanner": "scanner-primary", "fingerprint": "2c3742826ca3cfe0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52e1f30d419f15f3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-theater-tips.js:56"}, "properties": {"repobilityId": "3252ae9f576c2d22", "scanner": "scanner-primary", "fingerprint": "52e1f30d419f15f3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-18294f72187f321b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cross-show-url-collisions.js:30"}, "properties": {"repobilityId": "4f9ff556eb16ddf8", "scanner": "scanner-primary", "fingerprint": "18294f72187f321b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a463ef102712fde9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-tony-data.js:21"}, "properties": {"repobilityId": "3bee5195ccc896f5", "scanner": "scanner-primary", "fingerprint": "a463ef102712fde9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa1953cafcbda1b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-fantasy-config.js:327"}, "properties": {"repobilityId": "89956c7825d240e6", "scanner": "scanner-primary", "fingerprint": "fa1953cafcbda1b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e61e0a7b1531a5f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-nysr-scores.js:114"}, "properties": {"repobilityId": "f69a6e768030f722", "scanner": "scanner-primary", "fingerprint": "e61e0a7b1531a5f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-86fdd79d25350558", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-all-scored.js:398"}, "properties": {"repobilityId": "cfc7653484a1b701", "scanner": "scanner-primary", "fingerprint": "86fdd79d25350558", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c4748127f30f221b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-default-scores.js:128"}, "properties": {"repobilityId": "ae2cbb37d1a3bed9", "scanner": "scanner-primary", "fingerprint": "c4748127f30f221b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d153d10ba6a6411d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/wp-classifier-parity.js:338"}, "properties": {"repobilityId": "e2ab834b8a1106d3", "scanner": "scanner-primary", "fingerprint": "d153d10ba6a6411d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bc9bf3c3fcfd43b9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-explicit-scores.js:192"}, "properties": {"repobilityId": "b3c67c1837025ecb", "scanner": "scanner-primary", "fingerprint": "bc9bf3c3fcfd43b9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cd772c79d340408", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-wp-theater-blogs.js:194"}, "properties": {"repobilityId": "09c8cdd9ac52880f", "scanner": "scanner-primary", "fingerprint": "8cd772c79d340408", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8700d59f0c16b01f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-tony-attribution.js:168"}, "properties": {"repobilityId": "0dc2d0ebd920c856", "scanner": "scanner-primary", "fingerprint": "8700d59f0c16b01f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3bfa807cb44dc30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-p0-score-corruption.js:151"}, "properties": {"repobilityId": "aa81ea287eae25dc", "scanner": "scanner-primary", "fingerprint": "e3bfa807cb44dc30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45a589836acd1794", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-scores.js:38"}, "properties": {"repobilityId": "9d4027546f2da64d", "scanner": "scanner-primary", "fingerprint": "45a589836acd1794", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e60d6532e57980a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-olivier-awards.js:221"}, "properties": {"repobilityId": "0f56b19fc6b9a882", "scanner": "scanner-primary", "fingerprint": "2e60d6532e57980a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06b048c951bee0cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-deduplication.js:28"}, "properties": {"repobilityId": "62fd48d21cfb9e73", "scanner": "scanner-primary", "fingerprint": "06b048c951bee0cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5ef0fdcce7f7fb6c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/re-extract-aggregator-reviews.js:302"}, "properties": {"repobilityId": "df10dded28cb504b", "scanner": "scanner-primary", "fingerprint": "5ef0fdcce7f7fb6c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-414794a4494ba58b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-theatre-record.js:346"}, "properties": {"repobilityId": "0900208a89ef4b98", "scanner": "scanner-primary", "fingerprint": "414794a4494ba58b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-456b7a6ade6fbd72", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-opening-night-reviews.js:35"}, "properties": {"repobilityId": "76c5e2ccd3633b55", "scanner": "scanner-primary", "fingerprint": "456b7a6ade6fbd72", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b77cf2aeb8a171e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/import-mezzanine-historical.js:110"}, "properties": {"repobilityId": "37f8488ef258ff70", "scanner": "scanner-primary", "fingerprint": "b77cf2aeb8a171e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0e16ce7606e3b5bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-quality-check.js:16"}, "properties": {"repobilityId": "a033161663bb9898", "scanner": "scanner-primary", "fingerprint": "0e16ce7606e3b5bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d626266a59bf0293", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-single-review.js:14"}, "properties": {"repobilityId": "cbdeda3b6051bd42", "scanner": "scanner-primary", "fingerprint": "d626266a59bf0293", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94e632822e1fb866", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/archive-show-images.js:195"}, "properties": {"repobilityId": "c5c203c6717de9bb", "scanner": "scanner-primary", "fingerprint": "94e632822e1fb866", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2afa3a1811c30a57", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collection-coverage-dashboard.js:353"}, "properties": {"repobilityId": "5b54e2a484c7d25d", "scanner": "scanner-primary", "fingerprint": "2afa3a1811c30a57", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7592dfa4658d7f78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-awards-data.js:85"}, "properties": {"repobilityId": "aa4c2104088f7c96", "scanner": "scanner-primary", "fingerprint": "7592dfa4658d7f78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2413ab45ff1b8b1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-extraction.js:350"}, "properties": {"repobilityId": "b30cc96229a474c1", "scanner": "scanner-primary", "fingerprint": "b2413ab45ff1b8b1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c7db385c236c9f8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-show-ids.js:81"}, "properties": {"repobilityId": "738631d48fa7cc7c", "scanner": "scanner-primary", "fingerprint": "3c7db385c236c9f8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee31b27cb2724c33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/predict-review-count.js:165"}, "properties": {"repobilityId": "31049935c73c027a", "scanner": "scanner-primary", "fingerprint": "ee31b27cb2724c33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-118a5d8751f30c4a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-remediation-plan.js:75"}, "properties": {"repobilityId": "815442ce46c631b3", "scanner": "scanner-primary", "fingerprint": "118a5d8751f30c4a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-288cb4d45f131beb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage-human-review.js:132"}, "properties": {"repobilityId": "e5bee8968f90f2b4", "scanner": "scanner-primary", "fingerprint": "288cb4d45f131beb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb5436500759b92f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-cast-web.js:201"}, "properties": {"repobilityId": "4d6eb072277f780a", "scanner": "scanner-primary", "fingerprint": "cb5436500759b92f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0febe01d1a8af37b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-synopsis-markup.js:89"}, "properties": {"repobilityId": "a3096dbc8e3b0b21", "scanner": "scanner-primary", "fingerprint": "0febe01d1a8af37b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45e60f3eb4963bb5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-boring-waltz-costs.js:110"}, "properties": {"repobilityId": "a25a40fcef668c91", "scanner": "scanner-primary", "fingerprint": "45e60f3eb4963bb5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-99e99df15e60982d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-url-date.js:97"}, "properties": {"repobilityId": "f96c1e486a122c5c", "scanner": "scanner-primary", "fingerprint": "99e99df15e60982d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b1e012c72166188", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/query.js:74"}, "properties": {"repobilityId": "9c30ba1241288678", "scanner": "scanner-primary", "fingerprint": "7b1e012c72166188", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-254386447adadb59", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-combined-reviews.js:69"}, "properties": {"repobilityId": "9b40fb80c20cd393", "scanner": "scanner-primary", "fingerprint": "254386447adadb59", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-40e11ba80c3a48b5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-pending.js:36"}, "properties": {"repobilityId": "ad435c32151ba10f", "scanner": "scanner-primary", "fingerprint": "40e11ba80c3a48b5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-71e6fcbb9a0c1af8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-wrong-production-reviews.js:511"}, "properties": {"repobilityId": "960e124be31b2b19", "scanner": "scanner-primary", "fingerprint": "71e6fcbb9a0c1af8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b669949281c1358c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-review-urls.js:149"}, "properties": {"repobilityId": "976dc26f48ac141d", "scanner": "scanner-primary", "fingerprint": "b669949281c1358c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-676c77a7b93bc20a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-aggregator-candidates.js:90"}, "properties": {"repobilityId": "a6d965df471e8084", "scanner": "scanner-primary", "fingerprint": "676c77a7b93bc20a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c7d4c7a4bf8f467d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-show-statuses.js:62"}, "properties": {"repobilityId": "9271413c458716f6", "scanner": "scanner-primary", "fingerprint": "c7d4c7a4bf8f467d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-022a652d9efdb9e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reconcile-broadcast-state.js:44"}, "properties": {"repobilityId": "bbb3c6d4376c1a19", "scanner": "scanner-primary", "fingerprint": "022a652d9efdb9e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3973842920ad052f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-data-health.js:90"}, "properties": {"repobilityId": "02e2e50b5010b5a6", "scanner": "scanner-primary", "fingerprint": "3973842920ad052f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-496339fd1e321223", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/send-opening-digest.js:800"}, "properties": {"repobilityId": "188f945d2125599e", "scanner": "scanner-primary", "fingerprint": "496339fd1e321223", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bd152cbb92a7caea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-html-entities.js:342"}, "properties": {"repobilityId": "4a728b7d598ddc02", "scanner": "scanner-primary", "fingerprint": "bd152cbb92a7caea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3fc2912c84391de", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-data.js:157"}, "properties": {"repobilityId": "5cdbc8e6731c5672", "scanner": "scanner-primary", "fingerprint": "d3fc2912c84391de", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e1784560f228a0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-critic-name-truncation.js:76"}, "properties": {"repobilityId": "a765279d75c2af4b", "scanner": "scanner-primary", "fingerprint": "6e1784560f228a0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95600fdb2180e21f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-tony-nominations.js:58"}, "properties": {"repobilityId": "de84558a229b79e2", "scanner": "scanner-primary", "fingerprint": "95600fdb2180e21f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f37e0e0a1e09fb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-close-expired-shows.js:45"}, "properties": {"repobilityId": "2d0f926f1629abc4", "scanner": "scanner-primary", "fingerprint": "4f37e0e0a1e09fb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e077e27a7a72c793", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ob-expansion-final-report.js:99"}, "properties": {"repobilityId": "70c183696175a2ad", "scanner": "scanner-primary", "fingerprint": "e077e27a7a72c793", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-908043057384ffb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-geo-bots.js:82"}, "properties": {"repobilityId": "58c48e7660e608f5", "scanner": "scanner-primary", "fingerprint": "908043057384ffb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f7176d80fb1e8a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-real-urls.js:94"}, "properties": {"repobilityId": "302d8e9f92c3fd40", "scanner": "scanner-primary", "fingerprint": "7f7176d80fb1e8a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06bc862296e4ecdc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-all-reviews.js:517"}, "properties": {"repobilityId": "4319af37d8af0971", "scanner": "scanner-primary", "fingerprint": "06bc862296e4ecdc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a994139b6cda65ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/monitor-brand-mentions.js:89"}, "properties": {"repobilityId": "ad4474d77e8fe4ab", "scanner": "scanner-primary", "fingerprint": "a994139b6cda65ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cf27fd9d9735443f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-multiauthor-attributions.js:54"}, "properties": {"repobilityId": "365305d90a0ee5d8", "scanner": "scanner-primary", "fingerprint": "cf27fd9d9735443f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca6c007244f85215", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-night-coverage.js:115"}, "properties": {"repobilityId": "69705819d9836b8f", "scanner": "scanner-primary", "fingerprint": "ca6c007244f85215", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f03763875ce9e95", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mark-uncalculated-reviews.js:77"}, "properties": {"repobilityId": "f727ddef7c06d403", "scanner": "scanner-primary", "fingerprint": "2f03763875ce9e95", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f7a4713f2f38b7a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-scored.js:55"}, "properties": {"repobilityId": "a2a997aef9bf8bf9", "scanner": "scanner-primary", "fingerprint": "f7a4713f2f38b7a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-214c599f1d1b9c55", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seo-utils.js:35"}, "properties": {"repobilityId": "f0fe160ac5486ec9", "scanner": "scanner-primary", "fingerprint": "214c599f1d1b9c55", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1d6efa669013aa52", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recalculate-audience-buzz.js:39"}, "properties": {"repobilityId": "1ecd9a7ca3eb8d8f", "scanner": "scanner-primary", "fingerprint": "1d6efa669013aa52", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea8bf637d9b8f0e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-feedback-bug.js:60"}, "properties": {"repobilityId": "d9faa2c050d3edcf", "scanner": "scanner-primary", "fingerprint": "ea8bf637d9b8f0e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-abdf6aaa3cf5a224", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/normalize-venues.js:12"}, "properties": {"repobilityId": "cbebe0c75d51a091", "scanner": "scanner-primary", "fingerprint": "abdf6aaa3cf5a224", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3749f561af5b7bca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-tony-nominees.js:291"}, "properties": {"repobilityId": "d05028cc8746e9d6", "scanner": "scanner-primary", "fingerprint": "3749f561af5b7bca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a55112673cfc2fa4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-reviews.ts:123"}, "properties": {"repobilityId": "0ca2641c564588bf", "scanner": "scanner-primary", "fingerprint": "a55112673cfc2fa4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e63ac434c58a8677", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-review-from-url.js:133"}, "properties": {"repobilityId": "878e7349e17c9cae", "scanner": "scanner-primary", "fingerprint": "e63ac434c58a8677", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35b477d6ca92fbee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/run-bulk-historical-import.js:200"}, "properties": {"repobilityId": "9b096ee45d9b45d0", "scanner": "scanner-primary", "fingerprint": "35b477d6ca92fbee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-290e8bb5ad84f53d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/notify-pending-commercial-notion.js:117"}, "properties": {"repobilityId": "c71ad3de6b2879a4", "scanner": "scanner-primary", "fingerprint": "290e8bb5ad84f53d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f467ec1796d0485", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-reviews.js:226"}, "properties": {"repobilityId": "a906188106331115", "scanner": "scanner-primary", "fingerprint": "0f467ec1796d0485", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-052a082cfd01d6dd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-nft-excluded-runtime-reads.js:151"}, "properties": {"repobilityId": "5cd752ca893e0162", "scanner": "scanner-primary", "fingerprint": "052a082cfd01d6dd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2fa3dfff8b2aa78d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-garbage-reviews.js:118"}, "properties": {"repobilityId": "bbb43355df6043a2", "scanner": "scanner-primary", "fingerprint": "2fa3dfff8b2aa78d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fb0d0af2370950f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-locked-reasons.js:103"}, "properties": {"repobilityId": "605a1aaf230fa3c0", "scanner": "scanner-primary", "fingerprint": "6fb0d0af2370950f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09a2aad515f12112", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scoring-delta.js:477"}, "properties": {"repobilityId": "166fa5b8f1f1c8c7", "scanner": "scanner-primary", "fingerprint": "09a2aad515f12112", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01cc6de04d880824", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-reddit-shards.js:46"}, "properties": {"repobilityId": "54ce6f8f7ad5510d", "scanner": "scanner-primary", "fingerprint": "01cc6de04d880824", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-83cb0b63726b24c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-opening-dates.js:81"}, "properties": {"repobilityId": "519d5b4ef9b8010c", "scanner": "scanner-primary", "fingerprint": "83cb0b63726b24c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b3f0b2498dcc968", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-bww-title-validation.js:22"}, "properties": {"repobilityId": "8a0a2bf0733ec621", "scanner": "scanner-primary", "fingerprint": "3b3f0b2498dcc968", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc639901647bc6fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-dtli.js:80"}, "properties": {"repobilityId": "e9397edabce3fa6a", "scanner": "scanner-primary", "fingerprint": "dc639901647bc6fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-317492e623bdd9cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/flag-wrong-production-by-date.js:130"}, "properties": {"repobilityId": "0b03ab8155331d4a", "scanner": "scanner-primary", "fingerprint": "317492e623bdd9cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-663dcbf752958671", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-archive-productions.js:39"}, "properties": {"repobilityId": "fa23f352a05b7558", "scanner": "scanner-primary", "fingerprint": "663dcbf752958671", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9274570364ba28c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/adjudicate-review-queue.js:152"}, "properties": {"repobilityId": "bf988f5a478a5c33", "scanner": "scanner-primary", "fingerprint": "9274570364ba28c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-996025165faf201d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-review-urls.js:124"}, "properties": {"repobilityId": "39a5cd8d098f96a0", "scanner": "scanner-primary", "fingerprint": "996025165faf201d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec75221a24694838", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/protect-review-field.js:39"}, "properties": {"repobilityId": "5b301ae0b0d4c4e0", "scanner": "scanner-primary", "fingerprint": "ec75221a24694838", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4af23a546f395f1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-review-flags.js:50"}, "properties": {"repobilityId": "e9f254c264ddd50f", "scanner": "scanner-primary", "fingerprint": "4af23a546f395f1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-146ae9fcbb9923ff", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/paywall-browser-extract.js:261"}, "properties": {"repobilityId": "669bf209d86526b3", "scanner": "scanner-primary", "fingerprint": "146ae9fcbb9923ff", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1939bb8bb99ed39b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-showscore-stars.js:110"}, "properties": {"repobilityId": "aba040b88a58f6f5", "scanner": "scanner-primary", "fingerprint": "1939bb8bb99ed39b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fd50c571d5e0d486", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-html-override-rename.js:288"}, "properties": {"repobilityId": "0c4847c1f63887ef", "scanner": "scanner-primary", "fingerprint": "fd50c571d5e0d486", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eced2a7071398e67", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-aggregator-excerpts.js:172"}, "properties": {"repobilityId": "d1b8dde35731e530", "scanner": "scanner-primary", "fingerprint": "eced2a7071398e67", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-69310312386d4b14", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-square-images.js:219"}, "properties": {"repobilityId": "4bf57dd99904002e", "scanner": "scanner-primary", "fingerprint": "69310312386d4b14", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdeaad7d0dd846fa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-show-images-auto.js:233"}, "properties": {"repobilityId": "522994a47a3a0015", "scanner": "scanner-primary", "fingerprint": "bdeaad7d0dd846fa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a75b61bee683e24", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backup-llm-scores.js:52"}, "properties": {"repobilityId": "c71e4a41ca1913c8", "scanner": "scanner-primary", "fingerprint": "4a75b61bee683e24", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89b2864fad55efab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scan-we-cross-market.ts:66"}, "properties": {"repobilityId": "8e82be6c6eea336e", "scanner": "scanner-primary", "fingerprint": "89b2864fad55efab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-def4d122c92674c4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-outlet-reviews.js:298"}, "properties": {"repobilityId": "449aac814fdf8e46", "scanner": "scanner-primary", "fingerprint": "def4d122c92674c4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c1697dca3178f0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ticket-platform-links.js:163"}, "properties": {"repobilityId": "27376237e51cbe8e", "scanner": "scanner-primary", "fingerprint": "4c1697dca3178f0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-892c7e121cacb927", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-orphan-show-ids.js:51"}, "properties": {"repobilityId": "201d402a4efe67af", "scanner": "scanner-primary", "fingerprint": "892c7e121cacb927", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db1d4284e71905d1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/identify-unknown-outlets.js:119"}, "properties": {"repobilityId": "e5d8c8abbe1b8817", "scanner": "scanner-primary", "fingerprint": "db1d4284e71905d1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-22c5d46e68ff5731", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-chrome-pullquotes.js:100"}, "properties": {"repobilityId": "8a1d9fc779b0ef32", "scanner": "scanner-primary", "fingerprint": "22c5d46e68ff5731", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b93341fdd3f8043", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-unknown-critics.js:21"}, "properties": {"repobilityId": "27ada648a4145e4b", "scanner": "scanner-primary", "fingerprint": "9b93341fdd3f8043", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d41137cd4e74531", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-review-texts.js:364"}, "properties": {"repobilityId": "35b7033b8c257564", "scanner": "scanner-primary", "fingerprint": "5d41137cd4e74531", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6fc2bed4bae239af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/list-unscored.js:33"}, "properties": {"repobilityId": "538f7c82ba354a14", "scanner": "scanner-primary", "fingerprint": "6fc2bed4bae239af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a911b0866f4f0f3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/eval-v52.js:81"}, "properties": {"repobilityId": "dfcd24cd8c235193", "scanner": "scanner-primary", "fingerprint": "a911b0866f4f0f3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f5e3a72eb047557", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-runtimes.js:57"}, "properties": {"repobilityId": "e7587c94a7a0bd74", "scanner": "scanner-primary", "fingerprint": "0f5e3a72eb047557", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-695464d76186878e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-opening-night-drift.js:197"}, "properties": {"repobilityId": "5d727c9dda7d9338", "scanner": "scanner-primary", "fingerprint": "695464d76186878e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb9b8ee0fd78486d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/assign-scores-from-quotes.js:173"}, "properties": {"repobilityId": "0f449960977447f0", "scanner": "scanner-primary", "fingerprint": "bb9b8ee0fd78486d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-875a669e4854f10a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-duplicate-reviews.js:76"}, "properties": {"repobilityId": "abcbec2ac8546fc5", "scanner": "scanner-primary", "fingerprint": "875a669e4854f10a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-536c551a9a1ea312", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-consistency.js:41"}, "properties": {"repobilityId": "b42a31f10e50cc8c", "scanner": "scanner-primary", "fingerprint": "536c551a9a1ea312", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9200c7174809494c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-show-score-urls-from-listings.js:275"}, "properties": {"repobilityId": "94f25dd3d481e657", "scanner": "scanner-primary", "fingerprint": "9200c7174809494c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba461d90fc133318", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/freeze-tony-audience-grades.ts:128"}, "properties": {"repobilityId": "f61be7ce1b98f623", "scanner": "scanner-primary", "fingerprint": "ba461d90fc133318", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2d75a54b5258de1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-data-integrity.js:100"}, "properties": {"repobilityId": "2a357a636040ad01", "scanner": "scanner-primary", "fingerprint": "d2d75a54b5258de1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdf58ee1cb39708b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theatr-audience.js:118"}, "properties": {"repobilityId": "c1f9001ac602c92b", "scanner": "scanner-primary", "fingerprint": "bdf58ee1cb39708b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52fa093ef45e7b93", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-url-outlet-mismatches.js:75"}, "properties": {"repobilityId": "2e986942ef353ca5", "scanner": "scanner-primary", "fingerprint": "52fa093ef45e7b93", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20f0c33458718430", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-audience-urls.js:103"}, "properties": {"repobilityId": "a6e9c0731aa10b6c", "scanner": "scanner-primary", "fingerprint": "20f0c33458718430", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2eb378d2f2ea54d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-calibration-set.js:61"}, "properties": {"repobilityId": "78cd8de09aa34579", "scanner": "scanner-primary", "fingerprint": "2eb378d2f2ea54d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46dac6dd3e1fe434", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-commercial-tip.js:192"}, "properties": {"repobilityId": "0c29f0d6b407973b", "scanner": "scanner-primary", "fingerprint": "46dac6dd3e1fe434", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-897c478a1996d520", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cutoff-freshness.js:50"}, "properties": {"repobilityId": "d25921c119ff405b", "scanner": "scanner-primary", "fingerprint": "897c478a1996d520", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe15df8bc09687c3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-extractor-rescore.js:278"}, "properties": {"repobilityId": "66b7af5a8eb2e9b6", "scanner": "scanner-primary", "fingerprint": "fe15df8bc09687c3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b0e8072c4fcac31d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-bww-rr-critic-mismatches.js:158"}, "properties": {"repobilityId": "a03efec677e48c8c", "scanner": "scanner-primary", "fingerprint": "b0e8072c4fcac31d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-29010b75a2ba82ed", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-broken-json.js:27"}, "properties": {"repobilityId": "c320b2fc631c725c", "scanner": "scanner-primary", "fingerprint": "29010b75a2ba82ed", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-319e0e2550c576be", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-westendtheatre-roundups.js:88"}, "properties": {"repobilityId": "7f1d75e5ba99a130", "scanner": "scanner-primary", "fingerprint": "319e0e2550c576be", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59f8ade1fd207b30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fetch-bww-roundups.js:130"}, "properties": {"repobilityId": "e4bc7c58e5c70230", "scanner": "scanner-primary", "fingerprint": "59f8ade1fd207b30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0f3904a7a0ca35ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-full-reviews.js:89"}, "properties": {"repobilityId": "c1fd67d13f5ede6f", "scanner": "scanner-primary", "fingerprint": "0f3904a7a0ca35ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3628b808538a8298", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reaudit-garbage-content.js:60"}, "properties": {"repobilityId": "5288b249140650f4", "scanner": "scanner-primary", "fingerprint": "3628b808538a8298", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-046e0cf2322f4d3c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-llm-dates.js:96"}, "properties": {"repobilityId": "a1b927ffc318fc09", "scanner": "scanner-primary", "fingerprint": "046e0cf2322f4d3c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e78a1094b1513ca0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-timeout-junk.js:43"}, "properties": {"repobilityId": "4af82152a9b5699e", "scanner": "scanner-primary", "fingerprint": "e78a1094b1513ca0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d635e8f7258d0596", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-evening-standard.js:54"}, "properties": {"repobilityId": "d695cf8df6b33151", "scanner": "scanner-primary", "fingerprint": "d635e8f7258d0596", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eeba93a1344b3fde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/recover-wayback-reviews.js:171"}, "properties": {"repobilityId": "2cd7b0e2e1845387", "scanner": "scanner-primary", "fingerprint": "eeba93a1344b3fde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0cbe8b6e2eecdc5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/triage-sentry.js:224"}, "properties": {"repobilityId": "e098144269ca00e5", "scanner": "scanner-primary", "fingerprint": "0cbe8b6e2eecdc5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f78acbdd5d3f7b96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-wikipedia-creative.js:172"}, "properties": {"repobilityId": "ac8196278f268b4f", "scanner": "scanner-primary", "fingerprint": "f78acbdd5d3f7b96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f3b2b2d41777aa1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrate-reroute-backlog.js:224"}, "properties": {"repobilityId": "ea7c15eb98d1a0ec", "scanner": "scanner-primary", "fingerprint": "5f3b2b2d41777aa1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0fe05680f00ac9b0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-preview-placeholders.js:34"}, "properties": {"repobilityId": "f27223bd78a77602", "scanner": "scanner-primary", "fingerprint": "0fe05680f00ac9b0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93b8d5475f52a870", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/discover-dtli-slugs.js:95"}, "properties": {"repobilityId": "caeeb0e72fb5315b", "scanner": "scanner-primary", "fingerprint": "93b8d5475f52a870", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b4c43e65eaa03a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/score-reviews-calibrated.js:240"}, "properties": {"repobilityId": "276bbf783c449c1f", "scanner": "scanner-primary", "fingerprint": "7b4c43e65eaa03a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2d296c8669a7db2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-reddit-sentiment.js:312"}, "properties": {"repobilityId": "cd736d7cb642cdb6", "scanner": "scanner-primary", "fingerprint": "2d296c8669a7db2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a3211f353c145c0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/pre-deploy-check.js:32"}, "properties": {"repobilityId": "0f21677703ec3380", "scanner": "scanner-primary", "fingerprint": "a3211f353c145c0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e66c833ac31ca6d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/affiliate-report.js:37"}, "properties": {"repobilityId": "2ce46853eee086c4", "scanner": "scanner-primary", "fingerprint": "e66c833ac31ca6d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1ed562870e23ce9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sanity-check-awards-scoring.ts:29"}, "properties": {"repobilityId": "de15b9c79a5e37d0", "scanner": "scanner-primary", "fingerprint": "d1ed562870e23ce9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-578b55fc42bd8138", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-ibdb-dates.js:53"}, "properties": {"repobilityId": "e626e5bd5ca93c18", "scanner": "scanner-primary", "fingerprint": "578b55fc42bd8138", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2db2402d8a33d585", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-aggregator-archive-integrity.js:131"}, "properties": {"repobilityId": "8e5d25625d5b804d", "scanner": "scanner-primary", "fingerprint": "2db2402d8a33d585", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c588437c081959ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-wrong-show.js:67"}, "properties": {"repobilityId": "61eed278a4f98ac0", "scanner": "scanner-primary", "fingerprint": "c588437c081959ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f0150feadf7bb7eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-scores-from-archives.js:37"}, "properties": {"repobilityId": "a60ae109ed2741e5", "scanner": "scanner-primary", "fingerprint": "f0150feadf7bb7eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbde02c9376c25c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/smoke-ob-discovery.js:73"}, "properties": {"repobilityId": "5c3ce966a309c181", "scanner": "scanner-primary", "fingerprint": "fbde02c9376c25c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-974901899d17a68c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-tony-eligibility.js:96"}, "properties": {"repobilityId": "fa3270cd3b18c1a6", "scanner": "scanner-primary", "fingerprint": "974901899d17a68c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3562d5d82e0d62f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/agent-update.ts:207"}, "properties": {"repobilityId": "5ceb62e384e15962", "scanner": "scanner-primary", "fingerprint": "3562d5d82e0d62f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33d18aa78a67c0ca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-fix-friction-card.js:297"}, "properties": {"repobilityId": "30e3dbeb2a432f06", "scanner": "scanner-primary", "fingerprint": "33d18aa78a67c0ca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f17bedf5998b33cb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-cookie-login.js:94"}, "properties": {"repobilityId": "998ee3c4e78d14ef", "scanner": "scanner-primary", "fingerprint": "f17bedf5998b33cb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4776b6a92d5f02d9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-master-review-list.js:405"}, "properties": {"repobilityId": "f4e2ca0da2ea3c96", "scanner": "scanner-primary", "fingerprint": "4776b6a92d5f02d9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cbe52a4791f74503", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/extract-show-score-critics.js:50"}, "properties": {"repobilityId": "da0c85d1d2af40ba", "scanner": "scanner-primary", "fingerprint": "cbe52a4791f74503", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3db5d911cb4c8940", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-todaytix-urls.js:131"}, "properties": {"repobilityId": "9aeccff1307fed9d", "scanner": "scanner-primary", "fingerprint": "3db5d911cb4c8940", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9116fca00dc5300d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-gd-historical-accuracy.js:170"}, "properties": {"repobilityId": "6066aa525000e23c", "scanner": "scanner-primary", "fingerprint": "9116fca00dc5300d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d708048c112f2985", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/process-review-formspree.js:54"}, "properties": {"repobilityId": "8f7e9e20a85dc7f6", "scanner": "scanner-primary", "fingerprint": "d708048c112f2985", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16a6b17517dd1447", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-failed-fetches.js:106"}, "properties": {"repobilityId": "068add5e500be5a0", "scanner": "scanner-primary", "fingerprint": "16a6b17517dd1447", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fcd347b6f96eee94", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-recovery-list.js:197"}, "properties": {"repobilityId": "6b319522d47efd06", "scanner": "scanner-primary", "fingerprint": "fcd347b6f96eee94", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3faeede580bf1d78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-aggregator-truth.js:65"}, "properties": {"repobilityId": "43152e82e436528f", "scanner": "scanner-primary", "fingerprint": "3faeede580bf1d78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3bd2033feae71984", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/classify-non-reviews.js:272"}, "properties": {"repobilityId": "122bd989c56032a6", "scanner": "scanner-primary", "fingerprint": "3bd2033feae71984", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93620bd22f477206", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-cookie-health.js:444"}, "properties": {"repobilityId": "01c6c6111a8db139", "scanner": "scanner-primary", "fingerprint": "93620bd22f477206", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d5e726516b84f987", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reddit-engagement-digest.js:83"}, "properties": {"repobilityId": "59203c86e83c1a03", "scanner": "scanner-primary", "fingerprint": "d5e726516b84f987", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94cc7f97fe03b50b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-discovery-flow.js:98"}, "properties": {"repobilityId": "01ccf0647bab0b4c", "scanner": "scanner-primary", "fingerprint": "94cc7f97fe03b50b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce21ebaa42485399", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/merge-bww-excerpts.js:65"}, "properties": {"repobilityId": "c15f2bbfb1bd59e7", "scanner": "scanner-primary", "fingerprint": "ce21ebaa42485399", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a6aec280e1d6b5ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/collect-review-texts.js:71"}, "properties": {"repobilityId": "d3dcce851d50c14d", "scanner": "scanner-primary", "fingerprint": "a6aec280e1d6b5ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7cfbbcb96ee5b272", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clear-stale-suspected-misattribution-flags.js:67"}, "properties": {"repobilityId": "eb81662321da96d1", "scanner": "scanner-primary", "fingerprint": "7cfbbcb96ee5b272", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e69e3874eca42a0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-review-count-drift.js:92"}, "properties": {"repobilityId": "b4f350723a9e46ef", "scanner": "scanner-primary", "fingerprint": "4e69e3874eca42a0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a916fd4e90b189d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/watch-aggregator-urls.js:205"}, "properties": {"repobilityId": "883988d880be0761", "scanner": "scanner-primary", "fingerprint": "3a916fd4e90b189d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bf79790a8f63e6d6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-verifier-wiring.js:133"}, "properties": {"repobilityId": "a743c30f48776648", "scanner": "scanner-primary", "fingerprint": "bf79790a8f63e6d6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-960ce76ef2833161", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-url-validation.js:130"}, "properties": {"repobilityId": "4d231c441074dd54", "scanner": "scanner-primary", "fingerprint": "960ce76ef2833161", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-702e7eba4198b59a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/clean-orphan-pending.js:83"}, "properties": {"repobilityId": "90beb6d3a4d49e1d", "scanner": "scanner-primary", "fingerprint": "702e7eba4198b59a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5d3901fd3f81f599", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-content-quality.js:197"}, "properties": {"repobilityId": "204dc5f70b0fd9aa", "scanner": "scanner-primary", "fingerprint": "5d3901fd3f81f599", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a51908996448f4f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-review-content.js:385"}, "properties": {"repobilityId": "e1c4ec876383d358", "scanner": "scanner-primary", "fingerprint": "6a51908996448f4f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-401923b0a3efa50c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-revivals-ibdb.js:53"}, "properties": {"repobilityId": "40009fd7e0334159", "scanner": "scanner-primary", "fingerprint": "401923b0a3efa50c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e394a758812b561f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ingest-urls.js:85"}, "properties": {"repobilityId": "71c49ccafaa9aa86", "scanner": "scanner-primary", "fingerprint": "e394a758812b561f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2f88ecfb09810ac", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-orphan-tests.js:80"}, "properties": {"repobilityId": "925e02870fc7572b", "scanner": "scanner-primary", "fingerprint": "b2f88ecfb09810ac", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3c0e8fe5e45f3098", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-cast-changes.js:289"}, "properties": {"repobilityId": "db2ea9a1ec1c2c49", "scanner": "scanner-primary", "fingerprint": "3c0e8fe5e45f3098", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd4dc1c25d9484ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reset-adjudication.js:57"}, "properties": {"repobilityId": "0ea68decf6380d2f", "scanner": "scanner-primary", "fingerprint": "dd4dc1c25d9484ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a70473ed1593da9f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analyze-review-coverage.js:65"}, "properties": {"repobilityId": "3e8b1eac38b2a598", "scanner": "scanner-primary", "fingerprint": "a70473ed1593da9f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a6b4a874f142881", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-ltd-audience.js:224"}, "properties": {"repobilityId": "f38fa1a08cb9fdea", "scanner": "scanner-primary", "fingerprint": "3a6b4a874f142881", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97000e87b0abcbe1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-serp-abandonment.js:127"}, "properties": {"repobilityId": "f1736f2fc6c8e6cd", "scanner": "scanner-primary", "fingerprint": "97000e87b0abcbe1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-293e96de09e2ecce", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-paywalled-access.js:48"}, "properties": {"repobilityId": "375fdadc1f04cfc3", "scanner": "scanner-primary", "fingerprint": "293e96de09e2ecce", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a51f0f6cfb7dff44", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/enrich-stubhub-prices.js:42"}, "properties": {"repobilityId": "02476f9a659af88a", "scanner": "scanner-primary", "fingerprint": "a51f0f6cfb7dff44", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1a6d8c297417aa2e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-misroute-content.js:189"}, "properties": {"repobilityId": "cf283b32dc124bbf", "scanner": "scanner-primary", "fingerprint": "1a6d8c297417aa2e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51ffc3cfb723fd2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-normalized-scores.js:119"}, "properties": {"repobilityId": "39269ea3c60fdc7b", "scanner": "scanner-primary", "fingerprint": "51ffc3cfb723fd2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ec72c8b90f0c4411", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-content-verifier.js:50"}, "properties": {"repobilityId": "e119580812fe2640", "scanner": "scanner-primary", "fingerprint": "ec72c8b90f0c4411", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-061c65897ca76f85", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/apply-llm-hallucination-fix.js:64"}, "properties": {"repobilityId": "79eb79e897d8dc44", "scanner": "scanner-primary", "fingerprint": "061c65897ca76f85", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-230041fb6a35fec3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cleanup-fake-publish-dates.js:55"}, "properties": {"repobilityId": "924df28a19d38596", "scanner": "scanner-primary", "fingerprint": "230041fb6a35fec3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-55eab68f40e5343c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-review-recovery.js:81"}, "properties": {"repobilityId": "7db1c31bd2b5b3c6", "scanner": "scanner-primary", "fingerprint": "55eab68f40e5343c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82d7ee809cd93ef9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fix-nav-contaminated.js:79"}, "properties": {"repobilityId": "790f46f7159b7b85", "scanner": "scanner-primary", "fingerprint": "82d7ee809cd93ef9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24510ebd86d07887", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-theater-tips.js:198"}, "properties": {"repobilityId": "6be4173ea8ceabb2", "scanner": "scanner-primary", "fingerprint": "24510ebd86d07887", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae7b0141f78cd460", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-we-reviews.js:361"}, "properties": {"repobilityId": "f8c7b17ceb8eea4c", "scanner": "scanner-primary", "fingerprint": "ae7b0141f78cd460", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-793860b3e037d9bd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/reclean-truncated.js:22"}, "properties": {"repobilityId": "8f151afc190b9dc2", "scanner": "scanner-primary", "fingerprint": "793860b3e037d9bd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82aa2b3d4ba3ed5b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-grosses-data.js:631"}, "properties": {"repobilityId": "66a922d65ee9559d", "scanner": "scanner-primary", "fingerprint": "82aa2b3d4ba3ed5b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dc52e030b94d1a16", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrape-broadway-com-audience.js:100"}, "properties": {"repobilityId": "6674f09f34af3af8", "scanner": "scanner-primary", "fingerprint": "dc52e030b94d1a16", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-370deb9cbf6cff0d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/test-preview-dedup.js:189"}, "properties": {"repobilityId": "383a9dd002beb393", "scanner": "scanner-primary", "fingerprint": "370deb9cbf6cff0d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5a4845eac2dfc37", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/poll-loureviews.js:83"}, "properties": {"repobilityId": "874f84d5c689be73", "scanner": "scanner-primary", "fingerprint": "a5a4845eac2dfc37", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50aac2707ecffed5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/check-formspree-health.js:57"}, "properties": {"repobilityId": "a7171f432403085e", "scanner": "scanner-primary", "fingerprint": "50aac2707ecffed5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-23254c3115f19b1f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/audit-audience-buzz-contamination.js:256"}, "properties": {"repobilityId": "ed9d085486a16289", "scanner": "scanner-primary", "fingerprint": "23254c3115f19b1f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-130ba8a922981ec1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/select-best-reviews.js:116"}, "properties": {"repobilityId": "6f7577fb170283b8", "scanner": "scanner-primary", "fingerprint": "130ba8a922981ec1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea9cb9ef4087dad8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/extract-transcripts.js:86"}, "properties": {"repobilityId": "b0454d587204ea11", "scanner": "scanner-primary", "fingerprint": "ea9cb9ef4087dad8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6a49c0c13b316853", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/pre-classify-titles.js:80"}, "properties": {"repobilityId": "14b5aadacecc1053", "scanner": "scanner-primary", "fingerprint": "6a49c0c13b316853", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1cf7e1e79ec1dc84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/classify-reviews.js:152"}, "properties": {"repobilityId": "29cb115b04b14ca8", "scanner": "scanner-primary", "fingerprint": "1cf7e1e79ec1dc84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f85515365a879636", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/collect-transcripts.js:96"}, "properties": {"repobilityId": "e4b6cf104a3bcf72", "scanner": "scanner-primary", "fingerprint": "f85515365a879636", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-661b36dd70c8f135", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/audit-before-share.js:123"}, "properties": {"repobilityId": "f69a60057a57cb8a", "scanner": "scanner-primary", "fingerprint": "661b36dd70c8f135", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-178ca69f9afa6962", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/eval-prompts.js:134"}, "properties": {"repobilityId": "3db611b659d2a00d", "scanner": "scanner-primary", "fingerprint": "178ca69f9afa6962", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49cdaaf4a857e2e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/discover-videos.js:49"}, "properties": {"repobilityId": "b4744a5611823b03", "scanner": "scanner-primary", "fingerprint": "49cdaaf4a857e2e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e7e6f7485987f08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/backfill-thumbnails.js:38"}, "properties": {"repobilityId": "7f22d99b5bb6ed11", "scanner": "scanner-primary", "fingerprint": "8e7e6f7485987f08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c5f7ff21a8136a6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/build-video-reviews.js:71"}, "properties": {"repobilityId": "4cc17d9db934476b", "scanner": "scanner-primary", "fingerprint": "5c5f7ff21a8136a6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c8fb2cccbbcbda28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/video-reviews/score-video-reviews.js:92"}, "properties": {"repobilityId": "dfc5d65a0ae083de", "scanner": "scanner-primary", "fingerprint": "c8fb2cccbbcbda28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4043bbb8fbf4ea0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/cli/opening-night-budget.js:81"}, "properties": {"repobilityId": "2c28b42e11b96a7c", "scanner": "scanner-primary", "fingerprint": "a4043bbb8fbf4ea0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e45af0823cfa467", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/merge-commercial-conflict.js:51"}, "properties": {"repobilityId": "844cf5aec778aa87", "scanner": "scanner-primary", "fingerprint": "4e45af0823cfa467", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-59f7237c77656f71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bd-telemetry.js:60"}, "properties": {"repobilityId": "4a55597556431349", "scanner": "scanner-primary", "fingerprint": "59f7237c77656f71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8d2490d9d497b556", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/cookie-loader.js:104"}, "properties": {"repobilityId": "ebf601a61051a7f4", "scanner": "scanner-primary", "fingerprint": "8d2490d9d497b556", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9c5ea37987673a8b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/site-search-discovery.js:983"}, "properties": {"repobilityId": "c63d98f4a69d7b59", "scanner": "scanner-primary", "fingerprint": "9c5ea37987673a8b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d598b7de622bf4d0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/omc-discovery.js:200"}, "properties": {"repobilityId": "eebd54b9f0de0f42", "scanner": "scanner-primary", "fingerprint": "d598b7de622bf4d0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e045827cc2e97e5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/list-running-shows.js:114"}, "properties": {"repobilityId": "0ede2fae357c38df", "scanner": "scanner-primary", "fingerprint": "e045827cc2e97e5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8e8f336035004d4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/trade-press-scraper.js:487"}, "properties": {"repobilityId": "65c128b155de9107", "scanner": "scanner-primary", "fingerprint": "8e8f336035004d4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f098620e5c2d683f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/bww-rr-discover.js:187"}, "properties": {"repobilityId": "a0bdf2b1293fd13e", "scanner": "scanner-primary", "fingerprint": "f098620e5c2d683f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e924ca2ce9e07f08", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-extractor.js:252"}, "properties": {"repobilityId": "68a799b0a0b15ddc", "scanner": "scanner-primary", "fingerprint": "e924ca2ce9e07f08", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b61a9f5560bd1362", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/twitter-client.js:19"}, "properties": {"repobilityId": "eeed01e618ca675e", "scanner": "scanner-primary", "fingerprint": "b61a9f5560bd1362", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d2440f5c7f1b7518", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-history-snapshot.js:141"}, "properties": {"repobilityId": "641f7163ed92a4fa", "scanner": "scanner-primary", "fingerprint": "d2440f5c7f1b7518", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-853786257ebdbd65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/theatermania-discovery.js:120"}, "properties": {"repobilityId": "aad53490cbb4d885", "scanner": "scanner-primary", "fingerprint": "853786257ebdbd65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd2a29a3e9c3ebdb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-sla.js:76"}, "properties": {"repobilityId": "75aae0b319b9e570", "scanner": "scanner-primary", "fingerprint": "dd2a29a3e9c3ebdb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a35a829e16f50aab", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/lib/venue-listing-discover.js:171"}, "properties": {"repobilityId": "563e855a4cda946c", "scanner": "scanner-primary", "fingerprint": "a35a829e16f50aab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-192e42142227d416", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/content-verifier.js:251"}, "properties": {"repobilityId": "c0e1c009c4b933a0", "scanner": "scanner-primary", "fingerprint": "192e42142227d416", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f47025c203dcef19", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-cast.js:66"}, "properties": {"repobilityId": "43c30377f5d256f0", "scanner": "scanner-primary", "fingerprint": "f47025c203dcef19", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdf56f09235b63eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/source-validator.js:282"}, "properties": {"repobilityId": "7bb1dd59347bd5b3", "scanner": "scanner-primary", "fingerprint": "fdf56f09235b63eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9bcc0680927da3a2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-verdict-discover.js:173"}, "properties": {"repobilityId": "3fc6f8760050cd0c", "scanner": "scanner-primary", "fingerprint": "9bcc0680927da3a2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a7c4667175cd42a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/per-category-precursor.js:62"}, "properties": {"repobilityId": "2ec78f5a3031772f", "scanner": "scanner-primary", "fingerprint": "3a7c4667175cd42a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb82d9d63b43f8b7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opera-discovery-cache.js:123"}, "properties": {"repobilityId": "bb0553013e1e9ec2", "scanner": "scanner-primary", "fingerprint": "bb82d9d63b43f8b7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-97c117c30d642241", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/compress-image.js:49"}, "properties": {"repobilityId": "81eb35ba86922b74", "scanner": "scanner-primary", "fingerprint": "97c117c30d642241", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-61cc251d8d689ab3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/opening-night-budget.js:286"}, "properties": {"repobilityId": "9e6f15d68712fbe9", "scanner": "scanner-primary", "fingerprint": "61cc251d8d689ab3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0af6422a321043c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/llm-score-extractor.js:506"}, "properties": {"repobilityId": "3e79729bd77b3f46", "scanner": "scanner-primary", "fingerprint": "0af6422a321043c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a10a113b7ec92736", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/reddit-api.js:11"}, "properties": {"repobilityId": "07a49a116b2e3fe8", "scanner": "scanner-primary", "fingerprint": "a10a113b7ec92736", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d364454a28f5273d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/year-page-precursor.js:228"}, "properties": {"repobilityId": "5da08a17ea11abb4", "scanner": "scanner-primary", "fingerprint": "d364454a28f5273d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-908ed3f21c998271", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/discord-notify.js:22"}, "properties": {"repobilityId": "a2724d72effd521f", "scanner": "scanner-primary", "fingerprint": "908ed3f21c998271", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-568a1e572eaf7c0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/precursor-wikipedia.js:232"}, "properties": {"repobilityId": "f3d6e8c9e02881c6", "scanner": "scanner-primary", "fingerprint": "568a1e572eaf7c0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f3edde7870e9068e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/exclusion-logger.js:63"}, "properties": {"repobilityId": "ecd051bfeb36ec72", "scanner": "scanner-primary", "fingerprint": "f3edde7870e9068e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3dae04ea34898d8c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/brand-mention-email.js:181"}, "properties": {"repobilityId": "4e5395f80ba89545", "scanner": "scanner-primary", "fingerprint": "3dae04ea34898d8c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c07b6dbc386abbea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/check-sb-credits.js:75"}, "properties": {"repobilityId": "9f4e6e5ad83d2d70", "scanner": "scanner-primary", "fingerprint": "c07b6dbc386abbea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82234c729515e84a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/rss-discovery.js:338"}, "properties": {"repobilityId": "259b142c7c9224ce", "scanner": "scanner-primary", "fingerprint": "82234c729515e84a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab692b4544cbc5e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/scraper.js:179"}, "properties": {"repobilityId": "70733f4337ef36ca", "scanner": "scanner-primary", "fingerprint": "ab692b4544cbc5e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7ac15c71b27e3f7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/sec-edgar-scraper.js:18"}, "properties": {"repobilityId": "da32bb8371cae354", "scanner": "scanner-primary", "fingerprint": "b7ac15c71b27e3f7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7c4d866cd301aff0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/serp-slug-discovery.js:117"}, "properties": {"repobilityId": "3a64963990d43c31", "scanner": "scanner-primary", "fingerprint": "7c4d866cd301aff0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3832f1e601ff6279", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/buzz-classifier.js:401"}, "properties": {"repobilityId": "1f99eb282a4f3c92", "scanner": "scanner-primary", "fingerprint": "3832f1e601ff6279", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef1a10532496da7d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/playbill-roundup-discover.js:87"}, "properties": {"repobilityId": "97d16c255581420f", "scanner": "scanner-primary", "fingerprint": "ef1a10532496da7d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3b5b4e42e32b2d65", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/broadway-com-runtimes.js:324"}, "properties": {"repobilityId": "4c57766467d4ac3a", "scanner": "scanner-primary", "fingerprint": "3b5b4e42e32b2d65", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b70189e9a95a14e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/deep-research-guardian.js:20"}, "properties": {"repobilityId": "9acffcbb5653368e", "scanner": "scanner-primary", "fingerprint": "b70189e9a95a14e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fdbc81baf8428234", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/ibdb-dates.js:37"}, "properties": {"repobilityId": "bf2cb1d8e0f320e0", "scanner": "scanner-primary", "fingerprint": "fdbc81baf8428234", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-187074c6756546e3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/page-validator.js:16"}, "properties": {"repobilityId": "6a8f0c1f495204cb", "scanner": "scanner-primary", "fingerprint": "187074c6756546e3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fb9d194a74790a99", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/restore-protected-fields.js:127"}, "properties": {"repobilityId": "b9f2d333ccc21731", "scanner": "scanner-primary", "fingerprint": "fb9d194a74790a99", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-724ef43d10e328b8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/title-match.test.js:114"}, "properties": {"repobilityId": "266331400ead4315", "scanner": "scanner-primary", "fingerprint": "724ef43d10e328b8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-36a8cfecc81dc543", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/lib/critic-coverage-checks/coverage-drift.check.js:94"}, "properties": {"repobilityId": "8a98bd0fce0ce736", "scanner": "scanner-primary", "fingerprint": "36a8cfecc81dc543", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6f5070004f714efe", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/find-ss-gaps.js:50"}, "properties": {"repobilityId": "0c4243c76b2dab17", "scanner": "scanner-primary", "fingerprint": "6f5070004f714efe", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac336696e5e4328b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/shows-needing-scoring.js:36"}, "properties": {"repobilityId": "ba139cc8124e9ded", "scanner": "scanner-primary", "fingerprint": "ac336696e5e4328b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b63f1fd6211eb35", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/helpers/check-coverage.js:39"}, "properties": {"repobilityId": "d1a9e031cad725a8", "scanner": "scanner-primary", "fingerprint": "7b63f1fd6211eb35", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-09f212f5fa7015bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/admin/compute-composite.js:154"}, "properties": {"repobilityId": "02c1248adf8a4d26", "scanner": "scanner-primary", "fingerprint": "09f212f5fa7015bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48dbbeb43921dd1b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/generate-all-posts.js:622"}, "properties": {"repobilityId": "6159a42b5baf464c", "scanner": "scanner-primary", "fingerprint": "48dbbeb43921dd1b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb94adf5a77a5e0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/regen-posts.js:24"}, "properties": {"repobilityId": "02bb722a25773c8a", "scanner": "scanner-primary", "fingerprint": "cb94adf5a77a5e0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3f230aa1ab8ebd8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/gather-post-data.js:96"}, "properties": {"repobilityId": "9b57f8842cbc45d0", "scanner": "scanner-primary", "fingerprint": "d3f230aa1ab8ebd8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63895867db2819e4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/social-infographics/schedule-buffer.js:116"}, "properties": {"repobilityId": "60ba59ea8cb16384", "scanner": "scanner-primary", "fingerprint": "63895867db2819e4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d95c6082056b38eb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/test-llm-classification.js:28"}, "properties": {"repobilityId": "bd1ec4aeead9acdc", "scanner": "scanner-primary", "fingerprint": "d95c6082056b38eb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d34307e91973c552", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/diagnostics/validate-social-pulse-tiers.js:51"}, "properties": {"repobilityId": "5f995fc26dfdf4f0", "scanner": "scanner-primary", "fingerprint": "d34307e91973c552", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-028a3cc6fabdf6d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-gemini.ts:30"}, "properties": {"repobilityId": "d562081f996f4185", "scanner": "scanner-primary", "fingerprint": "028a3cc6fabdf6d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b7239db62d4bfe0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comprehensive-experiment.ts:268"}, "properties": {"repobilityId": "6d676f02ecc65839", "scanner": "scanner-primary", "fingerprint": "4b7239db62d4bfe0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6e62a1c1c18b883a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/kimi-scorer.ts:67"}, "properties": {"repobilityId": "80d83797151ada12", "scanner": "scanner-primary", "fingerprint": "6e62a1c1c18b883a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-847589cf8d7ddee3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/status.ts:35"}, "properties": {"repobilityId": "be3110b30cc7664e", "scanner": "scanner-primary", "fingerprint": "847589cf8d7ddee3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-de8199cfdc3bdf82", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/comparative-rescore.ts:285"}, "properties": {"repobilityId": "0f411606a676553f", "scanner": "scanner-primary", "fingerprint": "de8199cfdc3bdf82", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2cb4b0a4f074d4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/index.ts:121"}, "properties": {"repobilityId": "82db86692cc01b6b", "scanner": "scanner-primary", "fingerprint": "b2cb4b0a4f074d4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0df7f56cd0dd0e0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/evaluate.ts:376"}, "properties": {"repobilityId": "11f8188b40ec4694", "scanner": "scanner-primary", "fingerprint": "0df7f56cd0dd0e0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ab6e2ea72d8d4885", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-ensemble.ts:101"}, "properties": {"repobilityId": "572725492b917159", "scanner": "scanner-primary", "fingerprint": "ab6e2ea72d8d4885", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a57eeb33c6abb93d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/multi-model-critique.ts:40"}, "properties": {"repobilityId": "d05b8aa7935dbb15", "scanner": "scanner-primary", "fingerprint": "a57eeb33c6abb93d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-68e92c6c2b5d86ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/calibration.ts:290"}, "properties": {"repobilityId": "9fa4c4d4aae03e88", "scanner": "scanner-primary", "fingerprint": "68e92c6c2b5d86ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3388315e7ca26628", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/star-anchor-sample.ts:300"}, "properties": {"repobilityId": "0d9122a42d13477b", "scanner": "scanner-primary", "fingerprint": "3388315e7ca26628", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8cad65811b31dc8c", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 scripts/llm-scoring/ensemble-scorer.ts:568"}, "properties": {"repobilityId": "33e0430f1eea0b16", "scanner": "scanner-primary", "fingerprint": "8cad65811b31dc8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-e33239efc0cff9e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ensemble-scorer.ts:252"}, "properties": {"repobilityId": "a2e8ae95272c481b", "scanner": "scanner-primary", "fingerprint": "e33239efc0cff9e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-370d27f02e9b4aa3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-helen-shaw-fixture.ts:134"}, "properties": {"repobilityId": "bc9437d27f7a03cb", "scanner": "scanner-primary", "fingerprint": "370d27f02e9b4aa3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5eb1ffca3b642ee9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-consistency.ts:68"}, "properties": {"repobilityId": "5fcf0a68d8316a73", "scanner": "scanner-primary", "fingerprint": "5eb1ffca3b642ee9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01e30aaaafc9468b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/gemini-scorer.ts:97"}, "properties": {"repobilityId": "82e7270ec3cfe3b7", "scanner": "scanner-primary", "fingerprint": "01e30aaaafc9468b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9e53d9404b88bc28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/validation.ts:226"}, "properties": {"repobilityId": "25ea1f4c70e50f2e", "scanner": "scanner-primary", "fingerprint": "9e53d9404b88bc28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c96b34228f026ee", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/scorer.ts:179"}, "properties": {"repobilityId": "866b1e29b04b4f8d", "scanner": "scanner-primary", "fingerprint": "1c96b34228f026ee", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f81bc011f0442bd3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-structural-ab.ts:495"}, "properties": {"repobilityId": "fee748f5cbe17672", "scanner": "scanner-primary", "fingerprint": "f81bc011f0442bd3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-28c2ff880746c18c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/openai-scorer.ts:156"}, "properties": {"repobilityId": "b6725bd1e1b3565b", "scanner": "scanner-primary", "fingerprint": "28c2ff880746c18c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb2894f5b1c141c0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/test-prompt-variations.ts:220"}, "properties": {"repobilityId": "a9b2a65bc43e812a", "scanner": "scanner-primary", "fingerprint": "bb2894f5b1c141c0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e3094975342d3e20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/ground-truth.ts:302"}, "properties": {"repobilityId": "398b5ef05c7d4c42", "scanner": "scanner-primary", "fingerprint": "e3094975342d3e20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c8423e29ec6d640", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/llm-scoring/model-comparison-experiment.ts:102"}, "properties": {"repobilityId": "ee68fd96f935a525", "scanner": "scanner-primary", "fingerprint": "2c8423e29ec6d640", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9745f0468d27f1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-model-sweep.js:325"}, "properties": {"repobilityId": "b526234a6a3d07e2", "scanner": "scanner-primary", "fingerprint": "c9745f0468d27f1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-50b1faf46e6f58c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-scorecard-eval.js:39"}, "properties": {"repobilityId": "d8d936887332f268", "scanner": "scanner-primary", "fingerprint": "50b1faf46e6f58c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa5d9090b7e6973b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/content-verifier-eval.js:56"}, "properties": {"repobilityId": "8f59e0c964806f2e", "scanner": "scanner-primary", "fingerprint": "aa5d9090b7e6973b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72b7c80727219403", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/theater-tips-eval.js:42"}, "properties": {"repobilityId": "a7faf332098df911", "scanner": "scanner-primary", "fingerprint": "72b7c80727219403", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25c3af304a656a18", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/evals/buzz-classifier-eval.js:48"}, "properties": {"repobilityId": "ba7ae78d00d7624d", "scanner": "scanner-primary", "fingerprint": "25c3af304a656a18", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9dff7d33875a84f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/recover-wp-cv-valid.js:62"}, "properties": {"repobilityId": "6d66c092843054c0", "scanner": "scanner-primary", "fingerprint": "c9dff7d33875a84f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8ed8891b5ef1703", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/audit-wp-cv-valid.js:342"}, "properties": {"repobilityId": "a83c239bc8243cdc", "scanner": "scanner-primary", "fingerprint": "b8ed8891b5ef1703", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44db32234a154832", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/sweep-revival-wrong-production.js:74"}, "properties": {"repobilityId": "ace7ae3933dc486e", "scanner": "scanner-primary", "fingerprint": "44db32234a154832", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-33a2deab8da48a21", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-stale-ensemble-data.js:73"}, "properties": {"repobilityId": "8862533b3a1576ad", "scanner": "scanner-primary", "fingerprint": "33a2deab8da48a21", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-905c14130db80915", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/one-off/clear-mincemeat-wrongprod.js:49"}, "properties": {"repobilityId": "b8f086068ffda352", "scanner": "scanner-primary", "fingerprint": "905c14130db80915", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-438d16d22b782d07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:432"}, "properties": {"repobilityId": "972e74be05586d8d", "scanner": "scanner-primary", "fingerprint": "438d16d22b782d07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1c899c07ed7ea116", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrations/sweep-cv-promoted-fps-2026-05.js:208"}, "properties": {"repobilityId": "f8638098ff42e857", "scanner": "scanner-primary", "fingerprint": "1c899c07ed7ea116", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-81fb8d04d059edf5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/CompareShowPicker.tsx:75"}, "properties": {"repobilityId": "cc538003b0c27b4b", "scanner": "scanner-primary", "fingerprint": "81fb8d04d059edf5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8f567b36105a22de", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HeaderSearch.tsx:256"}, "properties": {"repobilityId": "7334ad798364394a", "scanner": "scanner-primary", "fingerprint": "8f567b36105a22de", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4cedfb4972afd335", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpot.tsx:178"}, "properties": {"repobilityId": "912186f1c1b82b14", "scanner": "scanner-primary", "fingerprint": "4cedfb4972afd335", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6485c16ee235bbf0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HamburgerMenu.tsx:99"}, "properties": {"repobilityId": "efe3c8c478051bad", "scanner": "scanner-primary", "fingerprint": "6485c16ee235bbf0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-05975cd3ffa6a366", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/HomepageExplainerShelf.tsx:113"}, "properties": {"repobilityId": "e0d365e143c3f13e", "scanner": "scanner-primary", "fingerprint": "05975cd3ffa6a366", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a8dccccd0cf2a2be", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/FeaturedSpotSlim.tsx:116"}, "properties": {"repobilityId": "53efb0762aa1fcfa", "scanner": "scanner-primary", "fingerprint": "a8dccccd0cf2a2be", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bafc83b9572e9fce", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/SortableLotteryRushTables.tsx:223"}, "properties": {"repobilityId": "baee281b9c79ead4", "scanner": "scanner-primary", "fingerprint": "bafc83b9572e9fce", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8301f4ee128f78b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/StickyScoreHeader.tsx:83"}, "properties": {"repobilityId": "43a8542b9cbce056", "scanner": "scanner-primary", "fingerprint": "8301f4ee128f78b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-bee742d1af6c309d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-page/ShowHeroRedesign.tsx:555"}, "properties": {"repobilityId": "55a3e119632ff5fb", "scanner": "scanner-primary", "fingerprint": "bee742d1af6c309d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-743c10ef337e0a6e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeShowCard.tsx:60"}, "properties": {"repobilityId": "664d6733e169d377", "scanner": "scanner-primary", "fingerprint": "743c10ef337e0a6e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a1eedbe54e82fda3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/creative/CreativeIndexClient.tsx:58"}, "properties": {"repobilityId": "613c52a9a0f3450c", "scanner": "scanner-primary", "fingerprint": "a1eedbe54e82fda3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e79e934b9a11b84f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/ReviewBody.tsx:14"}, "properties": {"repobilityId": "f85cc62ffe9c31cd", "scanner": "scanner-primary", "fingerprint": "e79e934b9a11b84f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-33ba36e178fbccf5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/reviews/StressTest.tsx:15"}, "properties": {"repobilityId": "7b605a85b8e2c3ee", "scanner": "scanner-primary", "fingerprint": "33ba36e178fbccf5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3a75ca41167118f1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony-noms/CategorySection.tsx:311"}, "properties": {"repobilityId": "f38fad01d768a0b7", "scanner": "scanner-primary", "fingerprint": "3a75ca41167118f1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-40375f1f91fa92e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowSearchDropdown.tsx:98"}, "properties": {"repobilityId": "e538f3efbd2ae3d9", "scanner": "scanner-primary", "fingerprint": "40375f1f91fa92e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8cf4e0ea903b733b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/ShowListCard.tsx:198"}, "properties": {"repobilityId": "60520e824f5c709b", "scanner": "scanner-primary", "fingerprint": "8cf4e0ea903b733b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-97f2b10ad32bac2a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/show-cards/StatGrid.tsx:32"}, "properties": {"repobilityId": "a74a296fc686f94c", "scanner": "scanner-primary", "fingerprint": "97f2b10ad32bac2a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3181371def72ae04", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ShowPageAddToListButton.tsx:174"}, "properties": {"repobilityId": "395029b71a57eb3c", "scanner": "scanner-primary", "fingerprint": "3181371def72ae04", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-10b3e84e7d9a3551", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/user/ReviewPanel.tsx:57"}, "properties": {"repobilityId": "7faf135c62f63868", "scanner": "scanner-primary", "fingerprint": "10b3e84e7d9a3551", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-08b31dc0724881bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyShowPicker.tsx:67"}, "properties": {"repobilityId": "03661224acb086c8", "scanner": "scanner-primary", "fingerprint": "08b31dc0724881bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e59c116a899dfd8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/fantasy/FantasyLeaderboardTable.tsx:115"}, "properties": {"repobilityId": "e70f8295a81cc727", "scanner": "scanner-primary", "fingerprint": "e59c116a899dfd8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-88eec037af648cda", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/components/tony/TrackRecord.tsx:76"}, "properties": {"repobilityId": "cf46b0230caaa028", "scanner": "scanner-primary", "fingerprint": "88eec037af648cda", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-74cc62684b6440db", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/page.tsx:277"}, "properties": {"repobilityId": "4d4ab3e03315f684", "scanner": "scanner-primary", "fingerprint": "74cc62684b6440db", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0bd9255b8ab71aa9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/layout.tsx:119"}, "properties": {"repobilityId": "0d72350965068f5b", "scanner": "scanner-primary", "fingerprint": "0bd9255b8ab71aa9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5b3dd0ed16fa855a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/CriticIndexClient.tsx:49"}, "properties": {"repobilityId": "6f3f8b9f0fe8a023", "scanner": "scanner-primary", "fingerprint": "5b3dd0ed16fa855a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dfe810965a44d9ff", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/page.tsx:56"}, "properties": {"repobilityId": "ad03cf58ab880e47", "scanner": "scanner-primary", "fingerprint": "dfe810965a44d9ff", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3839949cff5945f3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/page.tsx:57"}, "properties": {"repobilityId": "71f3cc55e127b560", "scanner": "scanner-primary", "fingerprint": "3839949cff5945f3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ccc50a08dbf1f762", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/OutletIndexClient.tsx:65"}, "properties": {"repobilityId": "4546ab5bd93b9e55", "scanner": "scanner-primary", "fingerprint": "ccc50a08dbf1f762", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f46b3b6cdfb2ba6a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/outlets/[slug]/page.tsx:75"}, "properties": {"repobilityId": "7edec91602ab06ab", "scanner": "scanner-primary", "fingerprint": "f46b3b6cdfb2ba6a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ce747f4eaa369ee7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/outlets/[slug]/OutletDetailClient.tsx:48"}, "properties": {"repobilityId": "89497b197b7d2a4a", "scanner": "scanner-primary", "fingerprint": "ce747f4eaa369ee7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b7f0088663c2b79b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/critics/[slug]/CriticDetailClient.tsx:58"}, "properties": {"repobilityId": "b083f333d1819149", "scanner": "scanner-primary", "fingerprint": "b7f0088663c2b79b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77d149b9214c98ba", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/critics/[slug]/page.tsx:70"}, "properties": {"repobilityId": "4c59770926e60e56", "scanner": "scanner-primary", "fingerprint": "77d149b9214c98ba", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0334db5f4b0fc349", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/creative/[slug]/page.tsx:59"}, "properties": {"repobilityId": "0f8c97e96f5c5983", "scanner": "scanner-primary", "fingerprint": "0334db5f4b0fc349", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-554537b63fe7ae7a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/brand/BrandPageClient.tsx:483"}, "properties": {"repobilityId": "8ce6705ea26a4f18", "scanner": "scanner-primary", "fingerprint": "554537b63fe7ae7a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-869c2826a626ba2c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/brand/BrandPageClient.tsx:163"}, "properties": {"repobilityId": "22f568256178a0ba", "scanner": "scanner-primary", "fingerprint": "869c2826a626ba2c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d980c19436d53ce0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/partners/PartnersPageClient.tsx:148"}, "properties": {"repobilityId": "2c9c8d64586c4e4c", "scanner": "scanner-primary", "fingerprint": "d980c19436d53ce0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-81a0ca492d2dc1ac", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/ListsTab.tsx:299"}, "properties": {"repobilityId": "5950f34db30a3ae3", "scanner": "scanner-primary", "fingerprint": "81a0ca492d2dc1ac", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5596eda0c212e971", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MyShowsClient.tsx:599"}, "properties": {"repobilityId": "1fc9ecd7499b6569", "scanner": "scanner-primary", "fingerprint": "5596eda0c212e971", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0167f2db16b74db4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/my-shows/MezzanineImport.tsx:532"}, "properties": {"repobilityId": "9dfdeef8b56832d4", "scanner": "scanner-primary", "fingerprint": "0167f2db16b74db4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-64ef3badcb8072bf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/beat-the-critics/BeatTheCriticsClient.tsx:625"}, "properties": {"repobilityId": "ae8780ff86298617", "scanner": "scanner-primary", "fingerprint": "64ef3badcb8072bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2dffe46e5b5d28e4", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/playwrights/page.tsx:45"}, "properties": {"repobilityId": "c1bff6fc5d22d557", "scanner": "scanner-primary", "fingerprint": "2dffe46e5b5d28e4", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d40e655549016fb5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-broadway/page.tsx:74"}, "properties": {"repobilityId": "6e708454103ee594", "scanner": "scanner-primary", "fingerprint": "d40e655549016fb5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a025643f745a636e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/browse/[slug]/page.tsx:183"}, "properties": {"repobilityId": "67e80b52998deb75", "scanner": "scanner-primary", "fingerprint": "a025643f745a636e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9867687f79c38f30", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/resend-webhook/route.ts:120"}, "properties": {"repobilityId": "90c5df8f9c512c4f", "scanner": "scanner-primary", "fingerprint": "9867687f79c38f30", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4e27fca8abedb657", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/admin/lock-score/route.ts:412"}, "properties": {"repobilityId": "4c5010a5638cf6ef", "scanner": "scanner-primary", "fingerprint": "4e27fca8abedb657", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-06ee98ad8426ad29", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/list/[slug]/SharedListClient.tsx:330"}, "properties": {"repobilityId": "3f997475f37800af", "scanner": "scanner-primary", "fingerprint": "06ee98ad8426ad29", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fda92963019d26a9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/olivier-awards/page.tsx:156"}, "properties": {"repobilityId": "3ef734c1c81e97d1", "scanner": "scanner-primary", "fingerprint": "fda92963019d26a9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7b8f882d3336f4e5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/page.tsx:107"}, "properties": {"repobilityId": "75596d6d250de83c", "scanner": "scanner-primary", "fingerprint": "7b8f882d3336f4e5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-257cbf1e86b8b901", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/[season]/page.tsx:193"}, "properties": {"repobilityId": "35fe9a5694d9e6d9", "scanner": "scanner-primary", "fingerprint": "257cbf1e86b8b901", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cbaacc2c315b2ef3", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/[season]/page.tsx:114"}, "properties": {"repobilityId": "8e41f2c380099c6b", "scanner": "scanner-primary", "fingerprint": "cbaacc2c315b2ef3", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-352b5f30df339788", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lists/[listType]/all-time/page.tsx:174"}, "properties": {"repobilityId": "ca2d74db835d4ada", "scanner": "scanner-primary", "fingerprint": "352b5f30df339788", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5a3deedea8408136", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lists/[listType]/all-time/page.tsx:99"}, "properties": {"repobilityId": "3bbf4eb19a76408e", "scanner": "scanner-primary", "fingerprint": "5a3deedea8408136", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f4fe8cd6ce36e2c3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lotteries/page.tsx:139"}, "properties": {"repobilityId": "422b54ecc7b0653a", "scanner": "scanner-primary", "fingerprint": "f4fe8cd6ce36e2c3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77408e7fa52b3e12", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lotteries/page.tsx:213"}, "properties": {"repobilityId": "f89bbbc986f14bb9", "scanner": "scanner-primary", "fingerprint": "77408e7fa52b3e12", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-75c5f13a2303f950", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/trending/page.tsx:88"}, "properties": {"repobilityId": "00846c27a963159b", "scanner": "scanner-primary", "fingerprint": "75c5f13a2303f950", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-76c224e8f6a5a8f5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast-changes/page.tsx:166"}, "properties": {"repobilityId": "3ad63b616ef44786", "scanner": "scanner-primary", "fingerprint": "76c224e8f6a5a8f5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2ac1007932ff34d6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast-changes/page.tsx:264"}, "properties": {"repobilityId": "757188ae79b90729", "scanner": "scanner-primary", "fingerprint": "2ac1007932ff34d6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f7c286075b289e72", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/reviews/[slug]/page.tsx:126"}, "properties": {"repobilityId": "cf178eab438d765c", "scanner": "scanner-primary", "fingerprint": "f7c286075b289e72", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5cd9eba15534e741", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/BestValueTable.tsx:156"}, "properties": {"repobilityId": "8f207e929e4eff2f", "scanner": "scanner-primary", "fingerprint": "5cd9eba15534e741", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-00a213443beee025", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/best-value/page.tsx:283"}, "properties": {"repobilityId": "e8efe949362f265a", "scanner": "scanner-primary", "fingerprint": "00a213443beee025", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dedad76d7a89ba5c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best-value/page.tsx:254"}, "properties": {"repobilityId": "39d1c90d0342df9f", "scanner": "scanner-primary", "fingerprint": "dedad76d7a89ba5c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d669cee2508f1ae9", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/page.tsx:53"}, "properties": {"repobilityId": "768730fd42c6fe55", "scanner": "scanner-primary", "fingerprint": "d669cee2508f1ae9", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-aad3d99b74292d9a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/cast/[slug]/ActorDetailClient.tsx:51"}, "properties": {"repobilityId": "383347886798bbb4", "scanner": "scanner-primary", "fingerprint": "aad3d99b74292d9a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-55d5a65c89635dbc", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/cast/[slug]/page.tsx:63"}, "properties": {"repobilityId": "52aa091d199412db", "scanner": "scanner-primary", "fingerprint": "55d5a65c89635dbc", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-75dff10baada699c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/ingest/IngestForm.tsx:176"}, "properties": {"repobilityId": "0cd2faff1e9c4391", "scanner": "scanner-primary", "fingerprint": "75dff10baada699c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-120eeb63eab826c0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/admin/locks/LocksTable.tsx:289"}, "properties": {"repobilityId": "72db45f320b63dd6", "scanner": "scanner-primary", "fingerprint": "120eeb63eab826c0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d0b1109e0285c9c7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/nvp/NVPClient.tsx:311"}, "properties": {"repobilityId": "e9193b41786f18da", "scanner": "scanner-primary", "fingerprint": "d0b1109e0285c9c7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e7b554d20382e940", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/broadway-theaters-map/page.tsx:55"}, "properties": {"repobilityId": "12ef79e38db5ffad", "scanner": "scanner-primary", "fingerprint": "e7b554d20382e940", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-743ca2fd24caed1a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/opera/page.tsx:87"}, "properties": {"repobilityId": "e8d01240df225ecc", "scanner": "scanner-primary", "fingerprint": "743ca2fd24caed1a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-ec45a58e7035b4e5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/box-office/page.tsx:90"}, "properties": {"repobilityId": "a8577eaaefc636a9", "scanner": "scanner-primary", "fingerprint": "ec45a58e7035b4e5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f1caa25f7cd05eba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/page.tsx:142"}, "properties": {"repobilityId": "59a1af108a289496", "scanner": "scanner-primary", "fingerprint": "f1caa25f7cd05eba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5b5dce5af783a8e8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/page.tsx:101"}, "properties": {"repobilityId": "a86adf9b5eb5c210", "scanner": "scanner-primary", "fingerprint": "5b5dce5af783a8e8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-565177481293ac27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/page.tsx:265"}, "properties": {"repobilityId": "7cd815ebff984b70", "scanner": "scanner-primary", "fingerprint": "565177481293ac27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b576a58c7bf8d60", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/page.tsx:139"}, "properties": {"repobilityId": "a98e29bd516f7888", "scanner": "scanner-primary", "fingerprint": "7b576a58c7bf8d60", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-35bb535fab0949b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/predictions/[season]/page.tsx:442"}, "properties": {"repobilityId": "3a40e03698d9499d", "scanner": "scanner-primary", "fingerprint": "35bb535fab0949b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7162507a7d4d5470", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/predictions/[season]/page.tsx:299"}, "properties": {"repobilityId": "5230db14ecba412f", "scanner": "scanner-primary", "fingerprint": "7162507a7d4d5470", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-669dac3a4090d085", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/press-picks/PressPicksBoard.tsx:131"}, "properties": {"repobilityId": "52e848ba89238475", "scanner": "scanner-primary", "fingerprint": "669dac3a4090d085", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6e6fd66b490a84a0", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/press-picks/page.tsx:55"}, "properties": {"repobilityId": "11d86918c2808bb0", "scanner": "scanner-primary", "fingerprint": "6e6fd66b490a84a0", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3ea71953e69570f8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tony-awards/winners-2026/page.tsx:83"}, "properties": {"repobilityId": "c4cf36ed89ffd827", "scanner": "scanner-primary", "fingerprint": "3ea71953e69570f8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c84c589ae7eb5bf6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/winners-2026/page.tsx:176"}, "properties": {"repobilityId": "7d11d45cd17aed7c", "scanner": "scanner-primary", "fingerprint": "c84c589ae7eb5bf6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-1858873f6769431c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/nominees/page.tsx:74"}, "properties": {"repobilityId": "0da79437e0a237e6", "scanner": "scanner-primary", "fingerprint": "1858873f6769431c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6ef9a86cbcadbf6f", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/tony-awards/people/page.tsx:97"}, "properties": {"repobilityId": "91511f04f4fccdcb", "scanner": "scanner-primary", "fingerprint": "6ef9a86cbcadbf6f", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4b7165c1677d055b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/audience-buzz/page.tsx:182"}, "properties": {"repobilityId": "878e4f36973a5801", "scanner": "scanner-primary", "fingerprint": "4b7165c1677d055b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ec4180f1ef971ff7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/audience-buzz/page.tsx:114"}, "properties": {"repobilityId": "11bd185327d23d07", "scanner": "scanner-primary", "fingerprint": "ec4180f1ef971ff7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a03ab4dc3fc14dca", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/aggregate-catalog/page.tsx:60"}, "properties": {"repobilityId": "48435bb972a45359", "scanner": "scanner-primary", "fingerprint": "a03ab4dc3fc14dca", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f51f1665119a689f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/catalog/page.tsx:77"}, "properties": {"repobilityId": "58f818ddbd614814", "scanner": "scanner-primary", "fingerprint": "f51f1665119a689f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fe2f55fe95d91329", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/directors/page.tsx:45"}, "properties": {"repobilityId": "3b1b7a296ef8f45a", "scanner": "scanner-primary", "fingerprint": "fe2f55fe95d91329", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5cfc509294f12907", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/discount-tickets/DiscountTicketsTable.tsx:318"}, "properties": {"repobilityId": "1610a87415b399f0", "scanner": "scanner-primary", "fingerprint": "5cfc509294f12907", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-90e1ce76cba31266", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/discount-tickets/page.tsx:149"}, "properties": {"repobilityId": "4e0937b03d5dae47", "scanner": "scanner-primary", "fingerprint": "90e1ce76cba31266", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4bc26be37958a8a9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/show/[slug]/page.tsx:731"}, "properties": {"repobilityId": "b940006b5e21ccec", "scanner": "scanner-primary", "fingerprint": "4bc26be37958a8a9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4c9741d943759c9a", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/show/[slug]/page.tsx:366"}, "properties": {"repobilityId": "2aa4b4ad405eb377", "scanner": "scanner-primary", "fingerprint": "4c9741d943759c9a", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-6513f8c0a981d2bb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/award-score/page.tsx:171"}, "properties": {"repobilityId": "585d08da9b9a5efc", "scanner": "scanner-primary", "fingerprint": "6513f8c0a981d2bb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a45ec26ae6fe91ea", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/page.tsx:101"}, "properties": {"repobilityId": "8ca01f1c41259bff", "scanner": "scanner-primary", "fingerprint": "a45ec26ae6fe91ea", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9635b20f29b2b93c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/award-score/[season]/page.tsx:86"}, "properties": {"repobilityId": "3d1218592164948a", "scanner": "scanner-primary", "fingerprint": "9635b20f29b2b93c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5a20da2c44d4b5de", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/lyricists/page.tsx:45"}, "properties": {"repobilityId": "993b473782f37f1c", "scanner": "scanner-primary", "fingerprint": "5a20da2c44d4b5de", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-be3cfe344e904cb7", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/composers/page.tsx:45"}, "properties": {"repobilityId": "25e9a835c50350ec", "scanner": "scanner-primary", "fingerprint": "be3cfe344e904cb7", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-97fc69120a508be6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/league/[code]/page.tsx:118"}, "properties": {"repobilityId": "ba28b80bc35dc924", "scanner": "scanner-primary", "fingerprint": "97fc69120a508be6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-32a9ac214fb19c57", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/fantasy/preview/FantasyPreviewClient.tsx:334"}, "properties": {"repobilityId": "771ce2eeb4e958b7", "scanner": "scanner-primary", "fingerprint": "32a9ac214fb19c57", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-52ad7a448a535494", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/standing-room/page.tsx:207"}, "properties": {"repobilityId": "92e07d16a314827a", "scanner": "scanner-primary", "fingerprint": "52ad7a448a535494", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b2f322787288fdc8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/standing-room/page.tsx:178"}, "properties": {"repobilityId": "bf13619ccbc6c8a0", "scanner": "scanner-primary", "fingerprint": "b2f322787288fdc8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-8fd9517818d859c8", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/off-west-end/page.tsx:72"}, "properties": {"repobilityId": "9a932a4081cedb47", "scanner": "scanner-primary", "fingerprint": "8fd9517818d859c8", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cb96016783de7509", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/page.tsx:130"}, "properties": {"repobilityId": "b643c5c90bf2a1c6", "scanner": "scanner-primary", "fingerprint": "cb96016783de7509", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cf0a6c08d3571e67", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/compare/[shows]/page.tsx:310"}, "properties": {"repobilityId": "028c1d4307bc3f2e", "scanner": "scanner-primary", "fingerprint": "cf0a6c08d3571e67", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-bb3b662d00a12582", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/page.tsx:44"}, "properties": {"repobilityId": "cf1620d3ef6075e0", "scanner": "scanner-primary", "fingerprint": "bb3b662d00a12582", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-f4e6148762e74e9d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:626"}, "properties": {"repobilityId": "ad55a188df9e0bda", "scanner": "scanner-primary", "fingerprint": "f4e6148762e74e9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-592393e98e920353", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/cheap-broadway-tickets/page.tsx:139"}, "properties": {"repobilityId": "13c010eb884f8c8a", "scanner": "scanner-primary", "fingerprint": "592393e98e920353", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-b1298a0d7b9de505", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/off-broadway-vs-broadway/page.tsx:77"}, "properties": {"repobilityId": "ae63cd6215560d86", "scanner": "scanner-primary", "fingerprint": "b1298a0d7b9de505", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c06664757b2582ca", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/broadway-first-timer-guide/page.tsx:74"}, "properties": {"repobilityId": "da627707535b3436", "scanner": "scanner-primary", "fingerprint": "c06664757b2582ca", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a822c0acf634712b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/what-to-wear-to-broadway/page.tsx:70"}, "properties": {"repobilityId": "58dad5d8da2fa0af", "scanner": "scanner-primary", "fingerprint": "a822c0acf634712b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e3707278f46a30ad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/guides/[slug]/page.tsx:341"}, "properties": {"repobilityId": "9abfd7a659ab34d1", "scanner": "scanner-primary", "fingerprint": "e3707278f46a30ad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-63960f49a9f065ea", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/guides/[slug]/page.tsx:204"}, "properties": {"repobilityId": "9c6dadf947f7ea69", "scanner": "scanner-primary", "fingerprint": "63960f49a9f065ea", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-a3cd8790f6c2581b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/page.tsx:58"}, "properties": {"repobilityId": "12ae4652e9c86952", "scanner": "scanner-primary", "fingerprint": "a3cd8790f6c2581b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d786f4e6366ab7b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/TheaterIndexClient.tsx:45"}, "properties": {"repobilityId": "8004342605666d9b", "scanner": "scanner-primary", "fingerprint": "d786f4e6366ab7b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-5077034f081ed033", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/TheaterDetailClient.tsx:135"}, "properties": {"repobilityId": "8aba2e88d646ef1c", "scanner": "scanner-primary", "fingerprint": "5077034f081ed033", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77180b81333facb7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/theater/[slug]/page.tsx:255"}, "properties": {"repobilityId": "9bdbff260e7888e6", "scanner": "scanner-primary", "fingerprint": "77180b81333facb7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1b288f4530b0b322", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/theater/[slug]/page.tsx:143"}, "properties": {"repobilityId": "ddd101b07bf8f83a", "scanner": "scanner-primary", "fingerprint": "1b288f4530b0b322", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-745b08ff9b9012e5", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/rush/page.tsx:158"}, "properties": {"repobilityId": "aeb85d7ffef6a491", "scanner": "scanner-primary", "fingerprint": "745b08ff9b9012e5", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-98f838ea1cbf53c5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rush/page.tsx:248"}, "properties": {"repobilityId": "f74e2496ce2b9885", "scanner": "scanner-primary", "fingerprint": "98f838ea1cbf53c5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-435815a4fdc0fd32", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/best/[category]/page.tsx:109"}, "properties": {"repobilityId": "2dfb73935484b7a8", "scanner": "scanner-primary", "fingerprint": "435815a4fdc0fd32", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-14e68d7776bcf2a1", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/rankings/page.tsx:177"}, "properties": {"repobilityId": "f466b2f3b9408827", "scanner": "scanner-primary", "fingerprint": "14e68d7776bcf2a1", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-940d3a8fd5200932", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/VideoCriticIndexClient.tsx:63"}, "properties": {"repobilityId": "90ec5e9ee794b517", "scanner": "scanner-primary", "fingerprint": "940d3a8fd5200932", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-da3681bd60902151", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/video-critics/[slug]/VideoCreatorDetailClient.tsx:108"}, "properties": {"repobilityId": "735c506a700cea94", "scanner": "scanner-primary", "fingerprint": "da3681bd60902151", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-80577b5984224761", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/methodology/page.tsx:133"}, "properties": {"repobilityId": "a675100446e45af5", "scanner": "scanner-primary", "fingerprint": "80577b5984224761", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e78a461ebc7cad8b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/biz/page.tsx:190"}, "properties": {"repobilityId": "0c99f17824c2747e", "scanner": "scanner-primary", "fingerprint": "e78a461ebc7cad8b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-cdc05a59c1c1973c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/page.tsx:124"}, "properties": {"repobilityId": "71f78237da1f1e99", "scanner": "scanner-primary", "fingerprint": "cdc05a59c1c1973c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-5bdea6ceab5e9ab9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/lotteries/page.tsx:136"}, "properties": {"repobilityId": "ffc114e108a8a713", "scanner": "scanner-primary", "fingerprint": "5bdea6ceab5e9ab9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c602b7b6dd500d95", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/lotteries/page.tsx:207"}, "properties": {"repobilityId": "fe2ad63fed91f849", "scanner": "scanner-primary", "fingerprint": "c602b7b6dd500d95", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-448b265bcfcd6418", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/trending/page.tsx:90"}, "properties": {"repobilityId": "e912704dbc4710df", "scanner": "scanner-primary", "fingerprint": "448b265bcfcd6418", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-0edbd715d1a4c496", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/best-value/page.tsx:265"}, "properties": {"repobilityId": "8884701986913e0f", "scanner": "scanner-primary", "fingerprint": "0edbd715d1a4c496", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-548bb5c1437dc51c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/best-value/page.tsx:238"}, "properties": {"repobilityId": "b2ea3f495960f7bc", "scanner": "scanner-primary", "fingerprint": "548bb5c1437dc51c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-3f0bcd384a64e9d0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/audience-buzz/page.tsx:153"}, "properties": {"repobilityId": "3dd509d93e99f56f", "scanner": "scanner-primary", "fingerprint": "3f0bcd384a64e9d0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d729993247c82d06", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/audience-buzz/page.tsx:86"}, "properties": {"repobilityId": "ace1d46e44955cfa", "scanner": "scanner-primary", "fingerprint": "d729993247c82d06", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-82b3716a19e57c1c", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/discount-tickets/page.tsx:152"}, "properties": {"repobilityId": "88df6d2594dd6012", "scanner": "scanner-primary", "fingerprint": "82b3716a19e57c1c", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-35bdb89e9ed2e0d4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/standing-room/page.tsx:194"}, "properties": {"repobilityId": "0e008bd7652f245f", "scanner": "scanner-primary", "fingerprint": "35bdb89e9ed2e0d4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b26c72623f228e6", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/standing-room/page.tsx:167"}, "properties": {"repobilityId": "551bc117ad346b62", "scanner": "scanner-primary", "fingerprint": "0b26c72623f228e6", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-7866fb5e788edecf", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/page.tsx:55"}, "properties": {"repobilityId": "700f74ca35774736", "scanner": "scanner-primary", "fingerprint": "7866fb5e788edecf", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-c269007600f48ba2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/LondonTheaterIndexClient.tsx:36"}, "properties": {"repobilityId": "ab20a30398ea2622", "scanner": "scanner-primary", "fingerprint": "c269007600f48ba2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-164a81f93af00564", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/theater/[slug]/page.tsx:171"}, "properties": {"repobilityId": "c241b04272764501", "scanner": "scanner-primary", "fingerprint": "164a81f93af00564", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4ac6bb5f21054676", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/theater/[slug]/page.tsx:97"}, "properties": {"repobilityId": "63d82c8923cdd34e", "scanner": "scanner-primary", "fingerprint": "4ac6bb5f21054676", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-4e75cae5ac9ac610", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/west-end/rush/page.tsx:151"}, "properties": {"repobilityId": "3d695c4fb9851449", "scanner": "scanner-primary", "fingerprint": "4e75cae5ac9ac610", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0b3fe8f11234f40e", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/rush/page.tsx:238"}, "properties": {"repobilityId": "6e90ecd62f2c4e4c", "scanner": "scanner-primary", "fingerprint": "0b3fe8f11234f40e", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-147d3436ab957f43", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/app/west-end/methodology/page.tsx:134"}, "properties": {"repobilityId": "d5e416f941a715a0", "scanner": "scanner-primary", "fingerprint": "147d3436ab957f43", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-24edeb738b1a7de9", "level": "warning", "message": {"text": "Privileged port 16 in use"}, "properties": {"repobilityId": "d31009168c502ace", "scanner": "scanner-primary", "fingerprint": "24edeb738b1a7de9", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4ee7e8d43ed7f6b6", "level": "warning", "message": {"text": "Privileged port 19 in use"}, "properties": {"repobilityId": "a6b5b06deac36eac", "scanner": "scanner-primary", "fingerprint": "4ee7e8d43ed7f6b6", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c80e69828e7a4174", "level": "warning", "message": {"text": "Privileged port 54 in use"}, "properties": {"repobilityId": "cfa860c24fdc3eef", "scanner": "scanner-primary", "fingerprint": "c80e69828e7a4174", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e4805ba2648e0675", "level": "warning", "message": {"text": "Privileged port 58 in use"}, "properties": {"repobilityId": "6d9ae83ac6aad676", "scanner": "scanner-primary", "fingerprint": "e4805ba2648e0675", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e90749495b050a84", "level": "warning", "message": {"text": "Privileged port 59 in use"}, "properties": {"repobilityId": "6c14a9dab4958e92", "scanner": "scanner-primary", "fingerprint": "e90749495b050a84", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d8a70207cc7421f2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/watch-proof-tonight.js:23"}, "properties": {"repobilityId": "452aa977e63c8566", "scanner": "scanner-primary", "fingerprint": "d8a70207cc7421f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/watch-proof-tonight.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-8b593ea8665d60fc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/verify-existing-reviews.js:27"}, "properties": {"repobilityId": "a9304a762366698b", "scanner": "scanner-primary", "fingerprint": "8b593ea8665d60fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-existing-reviews.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-b5e313fcc31ca36e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-full-data-audit.js:15"}, "properties": {"repobilityId": "c6349205131a205b", "scanner": "scanner-primary", "fingerprint": "b5e313fcc31ca36e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-full-data-audit.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-4a08760008528468", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/opening-night-readiness.js:26"}, "properties": {"repobilityId": "5d366217f00cd816", "scanner": "scanner-primary", "fingerprint": "4a08760008528468", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/opening-night-readiness.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-94e6fe0a2869dfd1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/apply-commercial-pending.js:21"}, "properties": {"repobilityId": "b039bded93a2806c", "scanner": "scanner-primary", "fingerprint": "94e6fe0a2869dfd1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/apply-commercial-pending.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-edd30c8c126ad605", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/deploy-now.js:23"}, "properties": {"repobilityId": "b7524db9aa1a1aa3", "scanner": "scanner-primary", "fingerprint": "edd30c8c126ad605", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/deploy-now.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-e748836591b3dcdb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/pause-rebuild.js:28"}, "properties": {"repobilityId": "d425aa1b5d07ea5d", "scanner": "scanner-primary", "fingerprint": "e748836591b3dcdb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/pause-rebuild.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-87eb567362fe2c7c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/notion-action-poll.js:21"}, "properties": {"repobilityId": "d9dcd2e645c8f38d", "scanner": "scanner-primary", "fingerprint": "87eb567362fe2c7c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/notion-action-poll.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-538a0639e7fba2f1", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-send-lock.js:18"}, "properties": {"repobilityId": "5d16dd9621be2e05", "scanner": "scanner-primary", "fingerprint": "538a0639e7fba2f1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-send-lock.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-cd38aa55cfa23e5f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-commercial-integration.js:19"}, "properties": {"repobilityId": "5de32f05e3b2ccd1", "scanner": "scanner-primary", "fingerprint": "cd38aa55cfa23e5f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-commercial-integration.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-a50af10ef783218f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/migrate-outlet-id-canonicalization.js:130"}, "properties": {"repobilityId": "e8ba6e4c9d437738", "scanner": "scanner-primary", "fingerprint": "a50af10ef783218f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/migrate-outlet-id-canonicalization.js"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-17ca24f66b7cca9f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/btc-smoke-test.js:14"}, "properties": {"repobilityId": "58e050d34929bfb1", "scanner": "scanner-primary", "fingerprint": "17ca24f66b7cca9f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/btc-smoke-test.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-9555a64659f9fdad", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in scripts/scrape-seatplan-audience.js:126"}, "properties": {"repobilityId": "796fe0d5094c47ac", "scanner": "scanner-primary", "fingerprint": "9555a64659f9fdad", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape-seatplan-audience.js"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-c37806ab7d301c37", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-gd-scraper-parity.js:17"}, "properties": {"repobilityId": "b67dc001a9d4305d", "scanner": "scanner-primary", "fingerprint": "c37806ab7d301c37", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-gd-scraper-parity.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-268b16c8a0da0139", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-closing-dates.js:190"}, "properties": {"repobilityId": "b434ee01d6d804b8", "scanner": "scanner-primary", "fingerprint": "268b16c8a0da0139", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-closing-dates.js"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-e5edf8a888e79fb6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/test-sync-tracker.js:15"}, "properties": {"repobilityId": "5542e026b010ee09", "scanner": "scanner-primary", "fingerprint": "e5edf8a888e79fb6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/test-sync-tracker.js"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-520023a1cd54c404", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/deep-research-commercial.js:889"}, "properties": {"repobilityId": "0ed7276810c9ee02", "scanner": "scanner-primary", "fingerprint": "520023a1cd54c404", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/deep-research-commercial.js"}, "region": {"startLine": 889}}}]}, {"ruleId": "scanner-dbb4be10d263e61d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/execute-approved-fix.js:22"}, "properties": {"repobilityId": "d4422b5bf9f1f053", "scanner": "scanner-primary", "fingerprint": "dbb4be10d263e61d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/execute-approved-fix.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-7206705c8f9e35b6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-cohort-recovery.js:65"}, "properties": {"repobilityId": "acc1a0390bf80459", "scanner": "scanner-primary", "fingerprint": "7206705c8f9e35b6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-cohort-recovery.js"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-f07805b7f5ffc41b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/validate-stubhub-urls.js:29"}, "properties": {"repobilityId": "ca479d4b89cd35f8", "scanner": "scanner-primary", "fingerprint": "f07805b7f5ffc41b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-stubhub-urls.js"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-6cf237e400dd48b8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-post-rebase-survival.js:44"}, "properties": {"repobilityId": "a8bb9c4b8bb45696", "scanner": "scanner-primary", "fingerprint": "6cf237e400dd48b8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-post-rebase-survival.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-29730edc04052289", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/generate-status-page.js:413"}, "properties": {"repobilityId": "d1a7789368ab7750", "scanner": "scanner-primary", "fingerprint": "29730edc04052289", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-status-page.js"}, "region": {"startLine": 413}}}]}, {"ruleId": "scanner-ac3028307f4eb693", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in scripts/generate-status-page.js:616"}, "properties": {"repobilityId": "204987e0208ee863", "scanner": "scanner-primary", "fingerprint": "ac3028307f4eb693", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-status-page.js"}, "region": {"startLine": 616}}}]}, {"ruleId": "scanner-a94a0653c46724f7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/manual-review-direct.js:19"}, "properties": {"repobilityId": "510468ef6d9b5b56", "scanner": "scanner-primary", "fingerprint": "a94a0653c46724f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/manual-review-direct.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-bfc397a954e0d557", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scrape-show-score-audience.js:956"}, "properties": {"repobilityId": "3de079604f566914", "scanner": "scanner-primary", "fingerprint": "bfc397a954e0d557", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape-show-score-audience.js"}, "region": {"startLine": 956}}}]}, {"ruleId": "scanner-e81175e7ff79ecca", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/health-check.js:32"}, "properties": {"repobilityId": "a5cf9163cb9e2862", "scanner": "scanner-primary", "fingerprint": "e81175e7ff79ecca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/health-check.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-0b6af93a22fd74ff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-image-aspect.js:34"}, "properties": {"repobilityId": "c0aab6cd3875716f", "scanner": "scanner-primary", "fingerprint": "0b6af93a22fd74ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-image-aspect.js"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-12462c109aabe8a7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-secrets-health.js:201"}, "properties": {"repobilityId": "59f8ad1cf149b8e8", "scanner": "scanner-primary", "fingerprint": "12462c109aabe8a7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-secrets-health.js"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-75af3e6ce8602c05", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sweep-we-aggregators.js:23"}, "properties": {"repobilityId": "113bdbd77cc2cc5e", "scanner": "scanner-primary", "fingerprint": "75af3e6ce8602c05", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sweep-we-aggregators.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-cf2e9e274e499e74", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/visual-qa.mjs:23"}, "properties": {"repobilityId": "48347d677b40156e", "scanner": "scanner-primary", "fingerprint": "cf2e9e274e499e74", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/visual-qa.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-ab776ccf70c3a5f8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-west-end-dates.js:688"}, "properties": {"repobilityId": "c4f126d91f41ee68", "scanner": "scanner-primary", "fingerprint": "ab776ccf70c3a5f8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/enrich-west-end-dates.js"}, "region": {"startLine": 688}}}]}, {"ruleId": "scanner-3254de8a22e83680", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/batch-correct-reviews.js:151"}, "properties": {"repobilityId": "fec79637e73bbf30", "scanner": "scanner-primary", "fingerprint": "3254de8a22e83680", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/batch-correct-reviews.js"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-087df8368baa2a27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/opening-night-status.js:24"}, "properties": {"repobilityId": "c8faccc1863df0e4", "scanner": "scanner-primary", "fingerprint": "087df8368baa2a27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/opening-night-status.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-90db50e94da70080", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ingest-manual-review.js:286"}, "properties": {"repobilityId": "f145650bf4102298", "scanner": "scanner-primary", "fingerprint": "90db50e94da70080", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ingest-manual-review.js"}, "region": {"startLine": 286}}}]}, {"ruleId": "scanner-30415011506a377f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scrape-lottery-rush.js:1934"}, "properties": {"repobilityId": "d883664a7cbcee2c", "scanner": "scanner-primary", "fingerprint": "30415011506a377f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape-lottery-rush.js"}, "region": {"startLine": 1934}}}]}, {"ruleId": "scanner-1e5b75653daab822", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/backfill-playwright-credits.js:54"}, "properties": {"repobilityId": "59f521fab6c357cf", "scanner": "scanner-primary", "fingerprint": "1e5b75653daab822", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/backfill-playwright-credits.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-37a9da4757e1c89c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/analyze-rebuild-drops.js:23"}, "properties": {"repobilityId": "cee93238ef0ae232", "scanner": "scanner-primary", "fingerprint": "37a9da4757e1c89c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze-rebuild-drops.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-9f7c8cc6dcb7979c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/fantasy-admin.js:20"}, "properties": {"repobilityId": "05d64d78ca16d7bb", "scanner": "scanner-primary", "fingerprint": "9f7c8cc6dcb7979c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fantasy-admin.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-073ee187556fa23f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/analyze-score-extraction-soak.js:18"}, "properties": {"repobilityId": "d2ace3c90af967f1", "scanner": "scanner-primary", "fingerprint": "073ee187556fa23f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/analyze-score-extraction-soak.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-19534ed455b73194", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-aggregator-pages.ts:510"}, "properties": {"repobilityId": "3dd16ac10fb520a8", "scanner": "scanner-primary", "fingerprint": "19534ed455b73194", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fetch-aggregator-pages.ts"}, "region": {"startLine": 510}}}]}, {"ruleId": "scanner-5bec819df3e17f5d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/preflight-recovery-budget.js:41"}, "properties": {"repobilityId": "e3509d69605c0cf4", "scanner": "scanner-primary", "fingerprint": "5bec819df3e17f5d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/preflight-recovery-budget.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-22d5fbc61452f8a0", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in scripts/scrape-off-broadway-alliance.js:168"}, "properties": {"repobilityId": "6868e3a72c5b807d", "scanner": "scanner-primary", "fingerprint": "22d5fbc61452f8a0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scrape-off-broadway-alliance.js"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-f04242c102c10c47", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/recover-wsj-subscriber.js:27"}, "properties": {"repobilityId": "49c28222538018b5", "scanner": "scanner-primary", "fingerprint": "f04242c102c10c47", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/recover-wsj-subscriber.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-238beb9abda11f5f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/rediscover-review-urls.js:22"}, "properties": {"repobilityId": "b6ce6a843dd2dea2", "scanner": "scanner-primary", "fingerprint": "238beb9abda11f5f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/rediscover-review-urls.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-98ebe815600dde46", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/classify-wrong-production.js:305"}, "properties": {"repobilityId": "70f91904cff923a8", "scanner": "scanner-primary", "fingerprint": "98ebe815600dde46", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/classify-wrong-production.js"}, "region": {"startLine": 305}}}]}, {"ruleId": "scanner-e212f16132f9b049", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/gather-reviews.js:4214"}, "properties": {"repobilityId": "050e8aff28e808f4", "scanner": "scanner-primary", "fingerprint": "e212f16132f9b049", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/gather-reviews.js"}, "region": {"startLine": 4214}}}]}, {"ruleId": "scanner-4090f92a9b58c975", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/bundle-show-page-catalog-pdf.mjs:16"}, "properties": {"repobilityId": "cf5fd57f4b79d1a9", "scanner": "scanner-primary", "fingerprint": "4090f92a9b58c975", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/bundle-show-page-catalog-pdf.mjs"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-78680ebd6dcf4263", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-bundle-size.js:21"}, "properties": {"repobilityId": "c4f8e331dd9179ff", "scanner": "scanner-primary", "fingerprint": "78680ebd6dcf4263", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-bundle-size.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-43487ef54b092e2c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-show-review-gap.js:51"}, "properties": {"repobilityId": "7c4fff263d422d8b", "scanner": "scanner-primary", "fingerprint": "43487ef54b092e2c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-show-review-gap.js"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-fc9b5f075a585ba0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/newspapers-com-extract.js:297"}, "properties": {"repobilityId": "dd61a0914d93f2f4", "scanner": "scanner-primary", "fingerprint": "fc9b5f075a585ba0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/newspapers-com-extract.js"}, "region": {"startLine": 297}}}]}, {"ruleId": "scanner-17ad91b7283dcb50", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/rebuild-awards-from-precursors.js:28"}, "properties": {"repobilityId": "fc3506c0e762f30c", "scanner": "scanner-primary", "fingerprint": "17ad91b7283dcb50", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/rebuild-awards-from-precursors.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-34e4d0b109b972d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-off-broadway-dates.js:994"}, "properties": {"repobilityId": "dec22a208a3d0e0a", "scanner": "scanner-primary", "fingerprint": "34e4d0b109b972d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/enrich-off-broadway-dates.js"}, "region": {"startLine": 994}}}]}, {"ruleId": "scanner-40ba253eeb56df87", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/send-opening-night-broadcast.js:24"}, "properties": {"repobilityId": "ede7489282d2b2ff", "scanner": "scanner-primary", "fingerprint": "40ba253eeb56df87", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/send-opening-night-broadcast.js"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-7d9126ec06736ae8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/extract-theatre-record.js:19"}, "properties": {"repobilityId": "f351ec3235d2366f", "scanner": "scanner-primary", "fingerprint": "7d9126ec06736ae8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/extract-theatre-record.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-e2e2e09f8bbd3cf6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/sync-review-texts.sh:89"}, "properties": {"repobilityId": "cf031406a4245725", "scanner": "scanner-primary", "fingerprint": "e2e2e09f8bbd3cf6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/sync-review-texts.sh"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-9399379918e51bff", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/query.js:17"}, "properties": {"repobilityId": "400a1ce63124f624", "scanner": "scanner-primary", "fingerprint": "9399379918e51bff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/query.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-5cf95da1dee00273", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-data-health.js:18"}, "properties": {"repobilityId": "5924de53cea2ff93", "scanner": "scanner-primary", "fingerprint": "5cf95da1dee00273", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-data-health.js"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-1f85722435894025", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/validate-data.js:1264"}, "properties": {"repobilityId": "6cd283cf5627b38f", "scanner": "scanner-primary", "fingerprint": "1f85722435894025", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/validate-data.js"}, "region": {"startLine": 1264}}}]}, {"ruleId": "scanner-6a033c33299ccad0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-opening-night-coverage.js:311"}, "properties": {"repobilityId": "26477a1ab911df73", "scanner": "scanner-primary", "fingerprint": "6a033c33299ccad0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-opening-night-coverage.js"}, "region": {"startLine": 311}}}]}, {"ruleId": "scanner-3ea5208c257f3509", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/auto-fix-feedback-bug.js:20"}, "properties": {"repobilityId": "f1162782a61c7598", "scanner": "scanner-primary", "fingerprint": "3ea5208c257f3509", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/auto-fix-feedback-bug.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-7236f73a0701b7dc", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-bulk-historical-import.js:46"}, "properties": {"repobilityId": "1eb89b34f6af6c00", "scanner": "scanner-primary", "fingerprint": "7236f73a0701b7dc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-bulk-historical-import.js"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-9afe37827dbf09f7", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/notify-pending-commercial-notion.js:22"}, "properties": {"repobilityId": "0bc6b68c7fcce9da", "scanner": "scanner-primary", "fingerprint": "9afe37827dbf09f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/notify-pending-commercial-notion.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-b5766b0f1a39d055", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/scoring-delta.js:43"}, "properties": {"repobilityId": "f22d93731083e10b", "scanner": "scanner-primary", "fingerprint": "b5766b0f1a39d055", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/scoring-delta.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-5b4a619c2c0fa5a6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/audit-opening-dates.js:84"}, "properties": {"repobilityId": "2001de986cf71b3f", "scanner": "scanner-primary", "fingerprint": "5b4a619c2c0fa5a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/audit-opening-dates.js"}, "region": {"startLine": 84}}}]}, {"ruleId": "scanner-40e8070a70998825", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/fetch-square-images.js:22"}, "properties": {"repobilityId": "e20c8f7267997850", "scanner": "scanner-primary", "fingerprint": "40e8070a70998825", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/fetch-square-images.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-4557e66e3f72c430", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/simulate-opening-night-full.sh:113"}, "properties": {"repobilityId": "3a0c2475dcd138d3", "scanner": "scanner-primary", "fingerprint": "4557e66e3f72c430", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/simulate-opening-night-full.sh"}, "region": {"startLine": 113}}}]}, {"ruleId": "scanner-3e1703639f5b9c1b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-cutoff-freshness.js:21"}, "properties": {"repobilityId": "169478f855845cbb", "scanner": "scanner-primary", "fingerprint": "3e1703639f5b9c1b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-cutoff-freshness.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-c31b6302642d5ad3", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/recover-wayback-reviews.js:27"}, "properties": {"repobilityId": "12e235f81cb8e694", "scanner": "scanner-primary", "fingerprint": "c31b6302642d5ad3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/recover-wayback-reviews.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-c3dd6af4c59ab2a6", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/bundle-aggregate-catalog-pdf.mjs:17"}, "properties": {"repobilityId": "457c40ebe01561bb", "scanner": "scanner-primary", "fingerprint": "c3dd6af4c59ab2a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/bundle-aggregate-catalog-pdf.mjs"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-663ec03ec5821343", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/enrich-ibdb-dates.js:341"}, "properties": {"repobilityId": "8c1265f580a05030", "scanner": "scanner-primary", "fingerprint": "663ec03ec5821343", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/enrich-ibdb-dates.js"}, "region": {"startLine": 341}}}]}, {"ruleId": "scanner-b5929afef83a5bfd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/auto-fix-friction-card.js:25"}, "properties": {"repobilityId": "395491f9d00af853", "scanner": "scanner-primary", "fingerprint": "b5929afef83a5bfd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/auto-fix-friction-card.js"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-a97c2398348e759e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/rebuild-memory-index.js:27"}, "properties": {"repobilityId": "673aeb17e00730e1", "scanner": "scanner-primary", "fingerprint": "a97c2398348e759e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/rebuild-memory-index.js"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-5af98c403fd7398a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/merge-bww-excerpts.js:14"}, "properties": {"repobilityId": "4f2e48fdc719d861", "scanner": "scanner-primary", "fingerprint": "5af98c403fd7398a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/merge-bww-excerpts.js"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3b5c0a836d2e232e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/collect-review-texts.js:5195"}, "properties": {"repobilityId": "ab425c742d9f6c5d", "scanner": "scanner-primary", "fingerprint": "3b5c0a836d2e232e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/collect-review-texts.js"}, "region": {"startLine": 5195}}}]}, {"ruleId": "scanner-a0694044a3de5307", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/watch-aggregator-urls.js:32"}, "properties": {"repobilityId": "8f1222c8403fa224", "scanner": "scanner-primary", "fingerprint": "a0694044a3de5307", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/watch-aggregator-urls.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-49fd40baefbff16e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/clean-orphan-pending.js:35"}, "properties": {"repobilityId": "33d61b9c68929b44", "scanner": "scanner-primary", "fingerprint": "49fd40baefbff16e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/clean-orphan-pending.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-c990c7ba7fd89961", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/detect-revivals-ibdb.js:193"}, "properties": {"repobilityId": "855d2012da7be78e", "scanner": "scanner-primary", "fingerprint": "c990c7ba7fd89961", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/detect-revivals-ibdb.js"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-ff85f76f3cc09717", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ingest-urls.js:20"}, "properties": {"repobilityId": "ddaa526b31d5dcaa", "scanner": "scanner-primary", "fingerprint": "ff85f76f3cc09717", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ingest-urls.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-ba56d307fe566b42", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/verify-review-recovery.js:37"}, "properties": {"repobilityId": "27e6701ee0741cdc", "scanner": "scanner-primary", "fingerprint": "ba56d307fe566b42", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-review-recovery.js"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-b7daec57c7a7646d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/extract-transcripts.js:10"}, "properties": {"repobilityId": "96cba41317e5a707", "scanner": "scanner-primary", "fingerprint": "b7daec57c7a7646d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/video-reviews/extract-transcripts.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-022dbd9a213cd999", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/collect-transcripts.js:23"}, "properties": {"repobilityId": "701743143cc07ca8", "scanner": "scanner-primary", "fingerprint": "022dbd9a213cd999", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/video-reviews/collect-transcripts.js"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-08c05e5e9d3d214e", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/discover-videos.js:26"}, "properties": {"repobilityId": "a63715893f034a8e", "scanner": "scanner-primary", "fingerprint": "08c05e5e9d3d214e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/video-reviews/discover-videos.js"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-0f78954a86904e48", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/video-reviews/backfill-thumbnails.js:13"}, "properties": {"repobilityId": "8d021715ec944ec0", "scanner": "scanner-primary", "fingerprint": "0f78954a86904e48", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/video-reviews/backfill-thumbnails.js"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-76e7abbd3b9f7951", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/merge-commercial-conflict.js:20"}, "properties": {"repobilityId": "a22f901d53bfd1c6", "scanner": "scanner-primary", "fingerprint": "76e7abbd3b9f7951", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/merge-commercial-conflict.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-3af92cc60a61e605", "level": "error", "message": {"text": "Insecure pattern 'eval_used' in scripts/lib/dom-article-extractor.js:211"}, "properties": {"repobilityId": "971ea520f1e3d31c", "scanner": "scanner-primary", "fingerprint": "3af92cc60a61e605", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "eval_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/dom-article-extractor.js"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-ca305a5895b5b7c5", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.test.mjs:9"}, "properties": {"repobilityId": "9d2f8332beebe1b5", "scanner": "scanner-primary", "fingerprint": "ca305a5895b5b7c5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/visual-qa-ledger.test.mjs"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-9100eb9b9ee21014", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/send-lock.js:31"}, "properties": {"repobilityId": "d7d87e4240a50f57", "scanner": "scanner-primary", "fingerprint": "9100eb9b9ee21014", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/send-lock.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-23fe9907e1310c1c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/visual-qa-ledger.mjs:34"}, "properties": {"repobilityId": "bbf97293dba98686", "scanner": "scanner-primary", "fingerprint": "23fe9907e1310c1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/visual-qa-ledger.mjs"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-8d785ebcce8b4b86", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lib/restore-protected-fields.js:22"}, "properties": {"repobilityId": "6f99faf919715e99", "scanner": "scanner-primary", "fingerprint": "8d785ebcce8b4b86", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lib/restore-protected-fields.js"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-d7ad420d4536d388", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/llm-scoring/index.ts:56"}, "properties": {"repobilityId": "03fd048557accdca", "scanner": "scanner-primary", "fingerprint": "d7ad420d4536d388", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/llm-scoring/index.ts"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-92f6e81c90ad38ed", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/one-off/clear-stale-ensemble-data.js:19"}, "properties": {"repobilityId": "d9005ffc58f9ad8d", "scanner": "scanner-primary", "fingerprint": "92f6e81c90ad38ed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/one-off/clear-stale-ensemble-data.js"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-d7a1594dd43f2c96", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/create-broadcast-draft.mjs:39"}, "properties": {"repobilityId": "9675dc872d4d4b4d", "scanner": "scanner-primary", "fingerprint": "d7a1594dd43f2c96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/newsletter/create-broadcast-draft.mjs"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-1938108c5787cb4a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/generate.mjs:6"}, "properties": {"repobilityId": "598e459991b27d4f", "scanner": "scanner-primary", "fingerprint": "1938108c5787cb4a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/newsletter/generate.mjs"}, "region": {"startLine": 6}}}]}, {"ruleId": "scanner-3965a5952959b57f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/newsletter/regression-test.mjs:23"}, "properties": {"repobilityId": "48ce2844b0a7b8c9", "scanner": "scanner-primary", "fingerprint": "3965a5952959b57f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/newsletter/regression-test.mjs"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-2606ee42ccb3b92d", "level": "error", "message": {"text": "Insecure pattern 'tls_verify_false' in .claude/hooks/verify-edits.sh:392"}, "properties": {"repobilityId": "9fb62cf263e55242", "scanner": "scanner-primary", "fingerprint": "2606ee42ccb3b92d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "tls_verify_false"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/hooks/verify-edits.sh"}, "region": {"startLine": 392}}}]}, {"ruleId": "scanner-c1221915e8bcb851", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/status.html:145"}, "properties": {"repobilityId": "e1a76b013d5d2db1", "scanner": "scanner-primary", "fingerprint": "c1221915e8bcb851", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/status.html"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-e99bc2b09952dd73", "level": "warning", "message": {"text": "Insecure pattern 'insert_adjacent_html' in public/status.html:348"}, "properties": {"repobilityId": "6c38fbed8a405b11", "scanner": "scanner-primary", "fingerprint": "e99bc2b09952dd73", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "insert_adjacent_html"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/status.html"}, "region": {"startLine": 348}}}]}, {"ruleId": "scanner-ab8a0ab57dc0020d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in public/og/social/top5-running.html:293"}, "properties": {"repobilityId": "e4bc3c0af73c4bb1", "scanner": "scanner-primary", "fingerprint": "ab8a0ab57dc0020d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "public/og/social/top5-running.html"}, "region": {"startLine": 293}}}]}, {"ruleId": "scanner-87ca94236e6c4f18", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .github/workflows/check-cwv-health.yml:32"}, "properties": {"repobilityId": "bcce931c34f1407e", "scanner": "scanner-primary", "fingerprint": "87ca94236e6c4f18", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cwv-health.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-b1d277df8721d47a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .github/workflows/check-performance.yml:109"}, "properties": {"repobilityId": "fa4a81e0cebc5323", "scanner": "scanner-primary", "fingerprint": "b1d277df8721d47a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-performance.yml"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-4b8866c37e6323fd", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .github/actions/push-review-texts/action.yml:69"}, "properties": {"repobilityId": "e7ea227f1406806d", "scanner": "scanner-primary", "fingerprint": "4b8866c37e6323fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/actions/push-review-texts/action.yml"}, "region": {"startLine": 69}}}]}, {"ruleId": "scanner-994f77bbbe494776", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/ReviewBody.tsx:14"}, "properties": {"repobilityId": "e975451e63c57c30", "scanner": "scanner-primary", "fingerprint": "994f77bbbe494776", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/reviews/ReviewBody.tsx"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-1e7ec9eb72ecd612", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/reviews/StressTest.tsx:15"}, "properties": {"repobilityId": "6d4b65bb0858ad33", "scanner": "scanner-primary", "fingerprint": "1e7ec9eb72ecd612", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/reviews/StressTest.tsx"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-7920925c7bec26a5", "level": "error", "message": {"text": "Possible secret in src/components/show-cards/ShowListCard.tsx"}, "properties": {"repobilityId": "c0ef53c50a8d9572", "scanner": "scanner-primary", "fingerprint": "7920925c7bec26a5", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/show-cards/ShowListCard.tsx"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-4e5850ed80e8746c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/page.tsx:277"}, "properties": {"repobilityId": "88fd235b712bda65", "scanner": "scanner-primary", "fingerprint": "4e5850ed80e8746c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/page.tsx"}, "region": {"startLine": 277}}}]}, {"ruleId": "scanner-c7513ee7dfab1ed8", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/layout.tsx:119"}, "properties": {"repobilityId": "0bca654fa2052eb0", "scanner": "scanner-primary", "fingerprint": "c7513ee7dfab1ed8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/layout.tsx"}, "region": {"startLine": 119}}}]}, {"ruleId": "scanner-63e629cbf3a0831e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/page.tsx:56"}, "properties": {"repobilityId": "7b96939c01c2642d", "scanner": "scanner-primary", "fingerprint": "63e629cbf3a0831e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/critics/page.tsx"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-990dbfd551d04535", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/page.tsx:57"}, "properties": {"repobilityId": "8a246f13ac416877", "scanner": "scanner-primary", "fingerprint": "990dbfd551d04535", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/critics/outlets/page.tsx"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-d3654935a292a086", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/outlets/[slug]/page.tsx:75"}, "properties": {"repobilityId": "6de2755b6a0e952d", "scanner": "scanner-primary", "fingerprint": "d3654935a292a086", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/critics/outlets/[slug]/page.tsx"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-c47affdfe8f177fb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/critics/[slug]/page.tsx:70"}, "properties": {"repobilityId": "47d69d054e017121", "scanner": "scanner-primary", "fingerprint": "c47affdfe8f177fb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/critics/[slug]/page.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-28e8d14f5af79f61", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/creative/[slug]/page.tsx:59"}, "properties": {"repobilityId": "fce1e18ebaa67ef8", "scanner": "scanner-primary", "fingerprint": "28e8d14f5af79f61", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/creative/[slug]/page.tsx"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-519d1560a575949d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/playwrights/page.tsx:45"}, "properties": {"repobilityId": "06873c1e42ba564a", "scanner": "scanner-primary", "fingerprint": "519d1560a575949d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/playwrights/page.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-2d0abf50db231721", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/off-broadway/page.tsx:74"}, "properties": {"repobilityId": "1caea7c83c4a6734", "scanner": "scanner-primary", "fingerprint": "2d0abf50db231721", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/off-broadway/page.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-ea28252191076b63", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/browse/[slug]/page.tsx:183"}, "properties": {"repobilityId": "4b0929049054e318", "scanner": "scanner-primary", "fingerprint": "ea28252191076b63", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/browse/[slug]/page.tsx"}, "region": {"startLine": 183}}}]}, {"ruleId": "scanner-64e9134507610524", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in src/app/api/badge/[slug]/route.ts:75"}, "properties": {"repobilityId": "0d32a15c301eba65", "scanner": "scanner-primary", "fingerprint": "64e9134507610524", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/api/badge/[slug]/route.ts"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-da8fa5b3e96fc6a6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/olivier-awards/page.tsx:156"}, "properties": {"repobilityId": "9fd8ed96e18f1ec2", "scanner": "scanner-primary", "fingerprint": "da8fa5b3e96fc6a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/olivier-awards/page.tsx"}, "region": {"startLine": 156}}}]}, {"ruleId": "scanner-6127a0cbc40e9326", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/page.tsx:107"}, "properties": {"repobilityId": "ddbd8fc28b8b5494", "scanner": "scanner-primary", "fingerprint": "6127a0cbc40e9326", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/lists/page.tsx"}, "region": {"startLine": 107}}}]}, {"ruleId": "scanner-ad775a2918ef4e29", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/[season]/page.tsx:114"}, "properties": {"repobilityId": "61c2db07a353730d", "scanner": "scanner-primary", "fingerprint": "ad775a2918ef4e29", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/lists/[listType]/[season]/page.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-d4c6170ce8c6ba12", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lists/[listType]/all-time/page.tsx:99"}, "properties": {"repobilityId": "525fea58b29bb2d9", "scanner": "scanner-primary", "fingerprint": "d4c6170ce8c6ba12", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/lists/[listType]/all-time/page.tsx"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-3bf68031cbb52ce2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lotteries/page.tsx:213"}, "properties": {"repobilityId": "3857e8f2d8a6f9a6", "scanner": "scanner-primary", "fingerprint": "3bf68031cbb52ce2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/lotteries/page.tsx"}, "region": {"startLine": 213}}}]}, {"ruleId": "scanner-b4f01b7725efc1d3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/trending/page.tsx:88"}, "properties": {"repobilityId": "aff3eba1d651eaf6", "scanner": "scanner-primary", "fingerprint": "b4f01b7725efc1d3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/trending/page.tsx"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-b3d7b8694c9ec075", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast-changes/page.tsx:264"}, "properties": {"repobilityId": "28d9dd1d207a579c", "scanner": "scanner-primary", "fingerprint": "b3d7b8694c9ec075", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/cast-changes/page.tsx"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-b0a5f81be761e872", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/reviews/[slug]/page.tsx:126"}, "properties": {"repobilityId": "2bcccb4a19b9f181", "scanner": "scanner-primary", "fingerprint": "b0a5f81be761e872", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/reviews/[slug]/page.tsx"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-748b6a21aa6b98e6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/best-value/page.tsx:254"}, "properties": {"repobilityId": "87818fb7ee34745d", "scanner": "scanner-primary", "fingerprint": "748b6a21aa6b98e6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/best-value/page.tsx"}, "region": {"startLine": 254}}}]}, {"ruleId": "scanner-d8a0ef8466c5bf8c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/page.tsx:53"}, "properties": {"repobilityId": "2337b662dc04b4a8", "scanner": "scanner-primary", "fingerprint": "d8a0ef8466c5bf8c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/cast/page.tsx"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-036b275cdb96fe13", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/cast/[slug]/page.tsx:63"}, "properties": {"repobilityId": "1bd4e46234f21abd", "scanner": "scanner-primary", "fingerprint": "036b275cdb96fe13", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/cast/[slug]/page.tsx"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-1f4f41fd44e6216f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/broadway-theaters-map/page.tsx:55"}, "properties": {"repobilityId": "2f96d8911ee6dd2a", "scanner": "scanner-primary", "fingerprint": "1f4f41fd44e6216f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/broadway-theaters-map/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-8215ef75d907a6f3", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/opera/page.tsx:87"}, "properties": {"repobilityId": "e4bc5cf7211e5a82", "scanner": "scanner-primary", "fingerprint": "8215ef75d907a6f3", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/opera/page.tsx"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-abba110706ab2db0", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/box-office/page.tsx:90"}, "properties": {"repobilityId": "24326fd5d5affd2e", "scanner": "scanner-primary", "fingerprint": "abba110706ab2db0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/box-office/page.tsx"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-99646c2fc3c69816", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/page.tsx:101"}, "properties": {"repobilityId": "424acae285c5c271", "scanner": "scanner-primary", "fingerprint": "99646c2fc3c69816", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/page.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-a60b7f04a3afd2a9", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/page.tsx:139"}, "properties": {"repobilityId": "431d0828e5ed51da", "scanner": "scanner-primary", "fingerprint": "a60b7f04a3afd2a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/predictions/page.tsx"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-fe1ab6e7257710bf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/predictions/[season]/page.tsx:299"}, "properties": {"repobilityId": "582d87c87e05ae0f", "scanner": "scanner-primary", "fingerprint": "fe1ab6e7257710bf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/predictions/[season]/page.tsx"}, "region": {"startLine": 299}}}]}, {"ruleId": "scanner-b2829ef74a66a9fc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/press-picks/page.tsx:55"}, "properties": {"repobilityId": "4914986246e56ad3", "scanner": "scanner-primary", "fingerprint": "b2829ef74a66a9fc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/press-picks/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-83e7508a632ae190", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/winners-2026/page.tsx:176"}, "properties": {"repobilityId": "0ed28a2338aadacd", "scanner": "scanner-primary", "fingerprint": "83e7508a632ae190", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/winners-2026/page.tsx"}, "region": {"startLine": 176}}}]}, {"ruleId": "scanner-813012bb38926a6c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/nominees/page.tsx:74"}, "properties": {"repobilityId": "1a1a884df8d6ba2d", "scanner": "scanner-primary", "fingerprint": "813012bb38926a6c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/nominees/page.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-ef472306e52b175e", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/tony-awards/people/page.tsx:97"}, "properties": {"repobilityId": "0240f9ae4415d588", "scanner": "scanner-primary", "fingerprint": "ef472306e52b175e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/tony-awards/people/page.tsx"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-8199b3691b8b8619", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/audience-buzz/page.tsx:114"}, "properties": {"repobilityId": "cdeefac05419a7f7", "scanner": "scanner-primary", "fingerprint": "8199b3691b8b8619", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/audience-buzz/page.tsx"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-5b0b40bf257f6c6d", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/directors/page.tsx:45"}, "properties": {"repobilityId": "fdd9fe8d364406b1", "scanner": "scanner-primary", "fingerprint": "5b0b40bf257f6c6d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/directors/page.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-0afc4123d5d0b410", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/discount-tickets/page.tsx:149"}, "properties": {"repobilityId": "44d6c284548d6a3d", "scanner": "scanner-primary", "fingerprint": "0afc4123d5d0b410", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/discount-tickets/page.tsx"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-6d5fed38f6463625", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/show/[slug]/page.tsx:366"}, "properties": {"repobilityId": "41262e0ddcd7e341", "scanner": "scanner-primary", "fingerprint": "6d5fed38f6463625", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/show/[slug]/page.tsx"}, "region": {"startLine": 366}}}]}, {"ruleId": "scanner-f8903b621394effa", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/page.tsx:101"}, "properties": {"repobilityId": "25563debf69f1db1", "scanner": "scanner-primary", "fingerprint": "f8903b621394effa", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/award-score/page.tsx"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-4c6a3f002c5d98eb", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/award-score/[season]/page.tsx:86"}, "properties": {"repobilityId": "cc0969b4be0d51ff", "scanner": "scanner-primary", "fingerprint": "4c6a3f002c5d98eb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/award-score/[season]/page.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-c711012db1c75091", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/lyricists/page.tsx:45"}, "properties": {"repobilityId": "89fe7e3f13d275e1", "scanner": "scanner-primary", "fingerprint": "c711012db1c75091", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/lyricists/page.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-42af3ce100c48aca", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/composers/page.tsx:45"}, "properties": {"repobilityId": "ceb134c64de2a2cd", "scanner": "scanner-primary", "fingerprint": "42af3ce100c48aca", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/composers/page.tsx"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-2bd0207363fad08f", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/standing-room/page.tsx:178"}, "properties": {"repobilityId": "c2b1c0860dc0447d", "scanner": "scanner-primary", "fingerprint": "2bd0207363fad08f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/standing-room/page.tsx"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-589b12e79dfb4dcf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/off-west-end/page.tsx:72"}, "properties": {"repobilityId": "64fbec7003b2fdb2", "scanner": "scanner-primary", "fingerprint": "589b12e79dfb4dcf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/off-west-end/page.tsx"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-7ddf9dd12c7e1346", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/page.tsx:130"}, "properties": {"repobilityId": "a3c36a3e5347d8fe", "scanner": "scanner-primary", "fingerprint": "7ddf9dd12c7e1346", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/compare/page.tsx"}, "region": {"startLine": 130}}}]}, {"ruleId": "scanner-e1ffc8b914c3ead2", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/compare/[shows]/page.tsx:310"}, "properties": {"repobilityId": "f710a01b97d566d0", "scanner": "scanner-primary", "fingerprint": "e1ffc8b914c3ead2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/compare/[shows]/page.tsx"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-b93d013817857947", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/page.tsx:44"}, "properties": {"repobilityId": "44bc7d4b74be8033", "scanner": "scanner-primary", "fingerprint": "b93d013817857947", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/page.tsx"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-da037a0ea4129d94", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/cheap-broadway-tickets/page.tsx:139"}, "properties": {"repobilityId": "6e47e90171864bc5", "scanner": "scanner-primary", "fingerprint": "da037a0ea4129d94", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/cheap-broadway-tickets/page.tsx"}, "region": {"startLine": 139}}}]}, {"ruleId": "scanner-6eca46afd407e5bd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/off-broadway-vs-broadway/page.tsx:77"}, "properties": {"repobilityId": "b2103dd99d774fec", "scanner": "scanner-primary", "fingerprint": "6eca46afd407e5bd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/off-broadway-vs-broadway/page.tsx"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-47f34334741f0d88", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/broadway-first-timer-guide/page.tsx:74"}, "properties": {"repobilityId": "085bd4060ce8428a", "scanner": "scanner-primary", "fingerprint": "47f34334741f0d88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/broadway-first-timer-guide/page.tsx"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-f4df8b4f1b50fc1c", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/what-to-wear-to-broadway/page.tsx:70"}, "properties": {"repobilityId": "5469c89dc2f4d52e", "scanner": "scanner-primary", "fingerprint": "f4df8b4f1b50fc1c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/what-to-wear-to-broadway/page.tsx"}, "region": {"startLine": 70}}}]}, {"ruleId": "scanner-46fe982b26e30ee7", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/guides/[slug]/page.tsx:204"}, "properties": {"repobilityId": "b0aa78c006a9f5d8", "scanner": "scanner-primary", "fingerprint": "46fe982b26e30ee7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/guides/[slug]/page.tsx"}, "region": {"startLine": 204}}}]}, {"ruleId": "scanner-db64a48f8a7be4d5", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/page.tsx:58"}, "properties": {"repobilityId": "2fdbbe6012ea48df", "scanner": "scanner-primary", "fingerprint": "db64a48f8a7be4d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/theater/page.tsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-61706615437d4f88", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/theater/[slug]/page.tsx:143"}, "properties": {"repobilityId": "047c1b1c1a58c6eb", "scanner": "scanner-primary", "fingerprint": "61706615437d4f88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/theater/[slug]/page.tsx"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-b54d39914241bbd4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/rush/page.tsx:248"}, "properties": {"repobilityId": "d0d3dd18d57d6d48", "scanner": "scanner-primary", "fingerprint": "b54d39914241bbd4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/rush/page.tsx"}, "region": {"startLine": 248}}}]}, {"ruleId": "scanner-ec66e45273b4edbd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/best/[category]/page.tsx:109"}, "properties": {"repobilityId": "be8ef9c2c39daa26", "scanner": "scanner-primary", "fingerprint": "ec66e45273b4edbd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/best/[category]/page.tsx"}, "region": {"startLine": 109}}}]}, {"ruleId": "scanner-ac791c44cb34386a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/rankings/page.tsx:177"}, "properties": {"repobilityId": "bd84b856b5303d1f", "scanner": "scanner-primary", "fingerprint": "ac791c44cb34386a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/rankings/page.tsx"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-f5c8659aa8edac92", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/methodology/page.tsx:133"}, "properties": {"repobilityId": "2f0b3c4b9eed3aa8", "scanner": "scanner-primary", "fingerprint": "f5c8659aa8edac92", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/methodology/page.tsx"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-3eaecd9e5a90ac82", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/biz/page.tsx:190"}, "properties": {"repobilityId": "924d78b4653046ed", "scanner": "scanner-primary", "fingerprint": "3eaecd9e5a90ac82", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/biz/page.tsx"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-058dc650073bf3d1", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/page.tsx:124"}, "properties": {"repobilityId": "c6c1df796bb188cb", "scanner": "scanner-primary", "fingerprint": "058dc650073bf3d1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/page.tsx"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-f78f17ed4157d362", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/lotteries/page.tsx:207"}, "properties": {"repobilityId": "368578958780e809", "scanner": "scanner-primary", "fingerprint": "f78f17ed4157d362", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/lotteries/page.tsx"}, "region": {"startLine": 207}}}]}, {"ruleId": "scanner-e64d0e84ac279268", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/trending/page.tsx:90"}, "properties": {"repobilityId": "303fc6ab7815b99e", "scanner": "scanner-primary", "fingerprint": "e64d0e84ac279268", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/trending/page.tsx"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-6ad3b3a604ec8107", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/best-value/page.tsx:238"}, "properties": {"repobilityId": "63081f73e96a3be7", "scanner": "scanner-primary", "fingerprint": "6ad3b3a604ec8107", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/best-value/page.tsx"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-68f2f45c55f3a7fd", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/audience-buzz/page.tsx:86"}, "properties": {"repobilityId": "92607b08c45f3657", "scanner": "scanner-primary", "fingerprint": "68f2f45c55f3a7fd", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/audience-buzz/page.tsx"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-2cc4b69e87101a19", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/discount-tickets/page.tsx:152"}, "properties": {"repobilityId": "4ff58405929b0399", "scanner": "scanner-primary", "fingerprint": "2cc4b69e87101a19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/discount-tickets/page.tsx"}, "region": {"startLine": 152}}}]}, {"ruleId": "scanner-3540581e185f9bdf", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/standing-room/page.tsx:167"}, "properties": {"repobilityId": "f6c24fd62be48022", "scanner": "scanner-primary", "fingerprint": "3540581e185f9bdf", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/standing-room/page.tsx"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-b2cbb25a0c3248cc", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/page.tsx:55"}, "properties": {"repobilityId": "fc3ba9de5cebe155", "scanner": "scanner-primary", "fingerprint": "b2cbb25a0c3248cc", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/theater/page.tsx"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-e5a0352731a74b75", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/theater/[slug]/page.tsx:97"}, "properties": {"repobilityId": "a3817913ca0f43db", "scanner": "scanner-primary", "fingerprint": "e5a0352731a74b75", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/theater/[slug]/page.tsx"}, "region": {"startLine": 97}}}]}, {"ruleId": "scanner-2ad8cfdc72b81674", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/rush/page.tsx:238"}, "properties": {"repobilityId": "fa6ac9d337abe0d6", "scanner": "scanner-primary", "fingerprint": "2ad8cfdc72b81674", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/rush/page.tsx"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-94699df299e7fc21", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/app/west-end/methodology/page.tsx:134"}, "properties": {"repobilityId": "4cdd69d5c9759842", "scanner": "scanner-primary", "fingerprint": "94699df299e7fc21", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/app/west-end/methodology/page.tsx"}, "region": {"startLine": 134}}}]}, {"ruleId": "scanner-b4ee01d1e475c219", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "80dfba263680085e", "scanner": "scanner-primary", "fingerprint": "b4ee01d1e475c219", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/snapshot-award-scores.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-b4ee01d1e475c219", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "84dff97da28186fc", "scanner": "scanner-primary", "fingerprint": "b4ee01d1e475c219", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/snapshot-award-scores.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-b77b11e995da0bfb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0a09a1bb1516c9ec", "scanner": "scanner-primary", "fingerprint": "b77b11e995da0bfb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-ensemble-score.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-b77b11e995da0bfb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4cb40f3c2cc18771", "scanner": "scanner-primary", "fingerprint": "b77b11e995da0bfb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-ensemble-score.yml"}, "region": {"startLine": 162}}}]}, {"ruleId": "scanner-37f7bb238d1ed86a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "e50a3c507b1ee291", "scanner": "scanner-primary", "fingerprint": "37f7bb238d1ed86a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-ensemble-score.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3a3aada82aead542", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7b74d65b433657cb", "scanner": "scanner-primary", "fingerprint": "3a3aada82aead542", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-closing-dates.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-3a3aada82aead542", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "437ab47aca189b0f", "scanner": "scanner-primary", "fingerprint": "3a3aada82aead542", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-closing-dates.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7678cf078af07586", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b06c8443c87770a2", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 104}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7678cf078af07586", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b06c8443c87770a2", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-ac4b718508d11a5f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c23a40170c9f61aa", "scanner": "scanner-primary", "fingerprint": "ac4b718508d11a5f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-submission.yml"}, "region": {"startLine": 310}}}]}, {"ruleId": "scanner-4f148fe8928fe406", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d00a8669bd9efbc1", "scanner": "scanner-primary", "fingerprint": "4f148fe8928fe406", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-ltd.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-4f148fe8928fe406", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8c3b16aef88603e2", "scanner": "scanner-primary", "fingerprint": "4f148fe8928fe406", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-ltd.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-b68182cdad78ebfc", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6fbdd9ee2603ff25", "scanner": "scanner-primary", "fingerprint": "b68182cdad78ebfc", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-ltd.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d687d1b763f74f4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "193a406e99a7e40c", "scanner": "scanner-primary", "fingerprint": "d687d1b763f74f4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-evaluate.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-d687d1b763f74f4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8a7e4606f2592072", "scanner": "scanner-primary", "fingerprint": "d687d1b763f74f4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-evaluate.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-d687d1b763f74f4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1bfcb4cba1f2f79b", "scanner": "scanner-primary", "fingerprint": "d687d1b763f74f4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/llm-evaluate.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-f5f0501b53174559", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b2d6a34344e12aba", "scanner": "scanner-primary", "fingerprint": "f5f0501b53174559", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/snapshot-audience-grades.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-f5f0501b53174559", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f033425664b7dc12", "scanner": "scanner-primary", "fingerprint": "f5f0501b53174559", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/snapshot-audience-grades.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-8c2c22c083ddd702", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "83215a5b53b165c8", "scanner": "scanner-primary", "fingerprint": "8c2c22c083ddd702", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-off-broadway-dates.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-59bda82f3491b6e6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f66bf18d87b867f0", "scanner": "scanner-primary", "fingerprint": "59bda82f3491b6e6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/critique-plan-v2.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-164979f738d2da72", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7cdde0cf008e2027", "scanner": "scanner-primary", "fingerprint": "164979f738d2da72", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-rss-poll.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d17e1fc6f2776fa4", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a66eb970d6ea805", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 192}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ac79e9884fdb41b", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 388}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d17e1fc6f2776fa4", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 547}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a66eb970d6ea805", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 563}}}]}, {"ruleId": "scanner-a718d4463c5387c2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ac79e9884fdb41b", "scanner": "scanner-primary", "fingerprint": "a718d4463c5387c2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 702}}}]}, {"ruleId": "scanner-4e6c78610559b7d7", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "78f7cfa54e245e1a", "scanner": "scanner-primary", "fingerprint": "4e6c78610559b7d7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-review-texts.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f78b6f5eae8546e2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18ccec4cabeff2be", "scanner": "scanner-primary", "fingerprint": "f78b6f5eae8546e2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-audit.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-f78b6f5eae8546e2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ee33d03a45542b69", "scanner": "scanner-primary", "fingerprint": "f78b6f5eae8546e2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-audit.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-f78b6f5eae8546e2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "65f6a312743e490a", "scanner": "scanner-primary", "fingerprint": "f78b6f5eae8546e2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-audit.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-b516010b6c00e07d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "fecdfe21a49c3b8b", "scanner": "scanner-primary", "fingerprint": "b516010b6c00e07d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-audit.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1838e20eff47c243", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6ff08d360d87550", "scanner": "scanner-primary", "fingerprint": "1838e20eff47c243", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-reviews.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-0f9a13f7a7a11cb4", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ced840a4ba57b4e6", "scanner": "scanner-primary", "fingerprint": "0f9a13f7a7a11cb4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-494d2ab9d1b28d08", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4d81ed463c7310bb", "scanner": "scanner-primary", "fingerprint": "494d2ab9d1b28d08", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reconcile-broadcast-state.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-ba7fa7889334b075", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1a8c3af06ada9f04", "scanner": "scanner-primary", "fingerprint": "ba7fa7889334b075", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reconcile-broadcast-state.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-029bae6adc723538", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6630402897393aa7", "scanner": "scanner-primary", "fingerprint": "029bae6adc723538", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-score.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-029bae6adc723538", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e904e47e0f528e93", "scanner": "scanner-primary", "fingerprint": "029bae6adc723538", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-score.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-438549277c388942", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c91a1b770ca32f57", "scanner": "scanner-primary", "fingerprint": "438549277c388942", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/submit-indexnow.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-438549277c388942", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "03e22455113a1ab6", "scanner": "scanner-primary", "fingerprint": "438549277c388942", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/submit-indexnow.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-4bc8b5ad0012f628", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8536555c904bcfcc", "scanner": "scanner-primary", "fingerprint": "4bc8b5ad0012f628", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/newsletter-draft.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-43fb83fcc7a0e8c0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "dcca528d7c647bd6", "scanner": "scanner-primary", "fingerprint": "43fb83fcc7a0e8c0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/newsletter-draft.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-634f2322402e8f14", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d5419ad9e581c30", "scanner": "scanner-primary", "fingerprint": "634f2322402e8f14", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cwv-health.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-634f2322402e8f14", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb6a68d6dc41596c", "scanner": "scanner-primary", "fingerprint": "634f2322402e8f14", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cwv-health.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-1acb52d4e0d39142", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6b83cb51a3438c9e", "scanner": "scanner-primary", "fingerprint": "1acb52d4e0d39142", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-aggregator-pages.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-c8f9b6dd6fe7657c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2fd036e819453bbd", "scanner": "scanner-primary", "fingerprint": "c8f9b6dd6fe7657c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-all-image-formats.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-d6f2b40effb1b947", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "30daa5c134b16d5d", "scanner": "scanner-primary", "fingerprint": "d6f2b40effb1b947", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-all-image-formats.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-124aeb9a3b39c589", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4de0b778246998f8", "scanner": "scanner-primary", "fingerprint": "124aeb9a3b39c589", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive-aggregator-pages.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-124aeb9a3b39c589", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d07178b6b9e1f6b", "scanner": "scanner-primary", "fingerprint": "124aeb9a3b39c589", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/archive-aggregator-pages.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-0a435f836c14b168", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "12aca6fb68be5933", "scanner": "scanner-primary", "fingerprint": "0a435f836c14b168", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-related-shows.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-0a435f836c14b168", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4fef828032488df9", "scanner": "scanner-primary", "fingerprint": "0a435f836c14b168", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-related-shows.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-25c64c1e94da26d1", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3860bad8325f6d19", "scanner": "scanner-primary", "fingerprint": "25c64c1e94da26d1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-related-shows.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-71298f45e512e29c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7e0dbf48d314f837", "scanner": "scanner-primary", "fingerprint": "71298f45e512e29c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rebuild-fast.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-f94c2632685d3ec7", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b89f8afc3f22af5c", "scanner": "scanner-primary", "fingerprint": "f94c2632685d3ec7", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rebuild-fast.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-973e67a9fcfcc421", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c52b1bb24783291", "scanner": "scanner-primary", "fingerprint": "973e67a9fcfcc421", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-freshness.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-973e67a9fcfcc421", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "36e25adae4696962", "scanner": "scanner-primary", "fingerprint": "973e67a9fcfcc421", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-freshness.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-973e67a9fcfcc421", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "004a0168cede1785", "scanner": "scanner-primary", "fingerprint": "973e67a9fcfcc421", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-freshness.yml"}, "region": {"startLine": 155}}}]}, {"ruleId": "scanner-927c1275740a7015", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1034770b9c4523ab", "scanner": "scanner-primary", "fingerprint": "927c1275740a7015", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-freshness.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82ccd87f67e2696e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "766b5247797c4119", "scanner": "scanner-primary", "fingerprint": "82ccd87f67e2696e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wayback-reviews.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-82ccd87f67e2696e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "32a87b49dbcb344c", "scanner": "scanner-primary", "fingerprint": "82ccd87f67e2696e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wayback-reviews.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-38165696de186def", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1916aec3d68fb21d", "scanner": "scanner-primary", "fingerprint": "38165696de186def", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wayback-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f705e42328f48380", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "918f5527aebcee1c", "scanner": "scanner-primary", "fingerprint": "f705e42328f48380", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/close-coverage-gaps.yml"}, "region": {"startLine": 378}}}]}, {"ruleId": "scanner-65de013c2bb2c02d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "67ac510413c19deb", "scanner": "scanner-primary", "fingerprint": "65de013c2bb2c02d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/close-coverage-gaps.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc1ba2f5ff2c577c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb9a2e0f92732254", "scanner": "scanner-primary", "fingerprint": "dc1ba2f5ff2c577c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-fix-feedback-bug.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-dc1ba2f5ff2c577c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8593ac363925e301", "scanner": "scanner-primary", "fingerprint": "dc1ba2f5ff2c577c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-fix-feedback-bug.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-dc1ba2f5ff2c577c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b93a3304d319aee7", "scanner": "scanner-primary", "fingerprint": "dc1ba2f5ff2c577c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/auto-fix-feedback-bug.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 146}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 639}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 641}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 661}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 703}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 705}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 732}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 734}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 808}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 810}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 931}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1035}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "656f28f8de836c82", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1263}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1315}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1328}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8f70c54785315f8c", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1407}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "656f28f8de836c82", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1425}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3bc3b4fe4a919063", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1471}}}]}, {"ruleId": "scanner-7efbda965f283c17", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "31abe471e20f8800", "scanner": "scanner-primary", "fingerprint": "7efbda965f283c17", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test.yml"}, "region": {"startLine": 1484}}}]}, {"ruleId": "scanner-88f74990bb0c23b6", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2ec7ef9f639c295f", "scanner": "scanner-primary", "fingerprint": "88f74990bb0c23b6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-show-score-opening-night.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-874036cb92b64a11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bfecf8f0806dd476", "scanner": "scanner-primary", "fingerprint": "874036cb92b64a11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-review-quality.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-874036cb92b64a11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "489943e0cda6b24b", "scanner": "scanner-primary", "fingerprint": "874036cb92b64a11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-review-quality.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-fba0716278390204", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "345ffd7bb78ed817", "scanner": "scanner-primary", "fingerprint": "fba0716278390204", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-review-quality.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eded304b74aff7ad", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "433a7cc67d21f421", "scanner": "scanner-primary", "fingerprint": "eded304b74aff7ad", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-west-end-dates.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-eded304b74aff7ad", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6cb9042985bb9b0b", "scanner": "scanner-primary", "fingerprint": "eded304b74aff7ad", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-west-end-dates.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-fb7f628c3275d342", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3c0a47834cda9eaf", "scanner": "scanner-primary", "fingerprint": "fb7f628c3275d342", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-west-end-dates.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ab5dacc467a1e8e1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "91eceffb0e3e8703", "scanner": "scanner-primary", "fingerprint": "ab5dacc467a1e8e1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/batch-commercial-research.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-ab5dacc467a1e8e1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f82d9c4a2299e860", "scanner": "scanner-primary", "fingerprint": "ab5dacc467a1e8e1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/batch-commercial-research.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-02a5bf5ca594efe4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "96f102dd76d2c6d6", "scanner": "scanner-primary", "fingerprint": "02a5bf5ca594efe4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cleanup-multishow-flags.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-02a5bf5ca594efe4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "96f102dd76d2c6d6", "scanner": "scanner-primary", "fingerprint": "02a5bf5ca594efe4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cleanup-multishow-flags.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-02a5bf5ca594efe4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6fceabef91a686e0", "scanner": "scanner-primary", "fingerprint": "02a5bf5ca594efe4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cleanup-multishow-flags.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5338b3075dd0a573", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "98bc4484bdd1bf5a", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5338b3075dd0a573", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "98bc4484bdd1bf5a", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f28a45e84b6bf952", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 251}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5338b3075dd0a573", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 269}}}]}, {"ruleId": "scanner-d19e8a5691227781", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "98bc4484bdd1bf5a", "scanner": "scanner-primary", "fingerprint": "d19e8a5691227781", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 285}}}]}, {"ruleId": "scanner-068220d4baa42b17", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a6f637d73c28123f", "scanner": "scanner-primary", "fingerprint": "068220d4baa42b17", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-existing-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4cf19cfa4b9da52", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3041942e9bed46dd", "scanner": "scanner-primary", "fingerprint": "d4cf19cfa4b9da52", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ingest-urls.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-d4cf19cfa4b9da52", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1cc08d4b7e4cd689", "scanner": "scanner-primary", "fingerprint": "d4cf19cfa4b9da52", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ingest-urls.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-7d823060b78ae6ab", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2771334ac974afdc", "scanner": "scanner-primary", "fingerprint": "7d823060b78ae6ab", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ingest-urls.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9ccab4da98dac2f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ee3c4dffe650a7f3", "scanner": "scanner-primary", "fingerprint": "9ccab4da98dac2f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mirror-to-gitlab.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe4b903948e8783f", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7ad8e98fac712070", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "74b687349e4acb12", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 350}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe4b903948e8783f", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 407}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7ad8e98fac712070", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 423}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "74b687349e4acb12", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 574}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe4b903948e8783f", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 597}}}]}, {"ruleId": "scanner-9fc4ac5db94f0352", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7ad8e98fac712070", "scanner": "scanner-primary", "fingerprint": "9fc4ac5db94f0352", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 613}}}]}, {"ruleId": "scanner-be572a3e14f724fb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "7f8b3abe7d94a993", "scanner": "scanner-primary", "fingerprint": "be572a3e14f724fb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-hard-paywall.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cf25df0c38e818eb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e0861cecaac04e0", "scanner": "scanner-primary", "fingerprint": "cf25df0c38e818eb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/poll-loureviews.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-3333b53e43f87d94", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2b07d477e396a222", "scanner": "scanner-primary", "fingerprint": "3333b53e43f87d94", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-preview.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-3333b53e43f87d94", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b1608f43df56ebd6", "scanner": "scanner-primary", "fingerprint": "3333b53e43f87d94", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-preview.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-87a073f00d152d22", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f407b2e4a92ec27f", "scanner": "scanner-primary", "fingerprint": "87a073f00d152d22", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-nysr.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-4988a1544115a5f8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a5520cffe89e8a1a", "scanner": "scanner-primary", "fingerprint": "4988a1544115a5f8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-nysr.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f6d521733327e9db", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7917482a35071ebb", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f6d521733327e9db", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 523}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 533}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f6d521733327e9db", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 597}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 669}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 692}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 719}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 740}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 761}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 782}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 803}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 824}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 845}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 866}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 887}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 908}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 930}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 951}}}]}, {"ruleId": "scanner-d31abb5adfc9d21c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9b99616ca9d0eef", "scanner": "scanner-primary", "fingerprint": "d31abb5adfc9d21c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 996}}}]}, {"ruleId": "scanner-89b61e4892c2fc3d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a9ff5d3636cc64ce", "scanner": "scanner-primary", "fingerprint": "89b61e4892c2fc3d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-show-status.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5af718beb5c27d8b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8cd9bec190eac9f2", "scanner": "scanner-primary", "fingerprint": "5af718beb5c27d8b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-lottery-rush.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-5af718beb5c27d8b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd5c12963170b082", "scanner": "scanner-primary", "fingerprint": "5af718beb5c27d8b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-lottery-rush.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-4018610f40d4734e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d3067fd6cddf07b8", "scanner": "scanner-primary", "fingerprint": "4018610f40d4734e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reddit-engagement-digest.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-4018610f40d4734e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "07cc012a34ad65eb", "scanner": "scanner-primary", "fingerprint": "4018610f40d4734e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/reddit-engagement-digest.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-c2cc91ae9a754aaf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9a8b979ae260c561", "scanner": "scanner-primary", "fingerprint": "c2cc91ae9a754aaf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-refresh.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-c2cc91ae9a754aaf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c0bf6ac8cff2d74", "scanner": "scanner-primary", "fingerprint": "c2cc91ae9a754aaf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-refresh.yml"}, "region": {"startLine": 62}}}]}, {"ruleId": "scanner-c2cc91ae9a754aaf", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c2b912d4c7ba1dfd", "scanner": "scanner-primary", "fingerprint": "c2cc91ae9a754aaf", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-refresh.yml"}, "region": {"startLine": 466}}}]}, {"ruleId": "scanner-8b64bd78ccdd27f5", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b88a31ef3155040a", "scanner": "scanner-primary", "fingerprint": "8b64bd78ccdd27f5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-refresh.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9d9943a0e4f233d9", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "fe2179a2f5dcc664", "scanner": "scanner-primary", "fingerprint": "9d9943a0e4f233d9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-review-dates.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9875116a8efdbec", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8b709505aac5aea0", "scanner": "scanner-primary", "fingerprint": "c9875116a8efdbec", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast-web.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-c9875116a8efdbec", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b62ca0199dc791e1", "scanner": "scanner-primary", "fingerprint": "c9875116a8efdbec", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast-web.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-61f14ae75b1ff2bd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "4e5641a185758642", "scanner": "scanner-primary", "fingerprint": "61f14ae75b1ff2bd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast-web.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9381c3ce31692d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "82621dd42439237b", "scanner": "scanner-primary", "fingerprint": "c9381c3ce31692d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-grosses.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-c9381c3ce31692d7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d1257774a302062b", "scanner": "scanner-primary", "fingerprint": "c9381c3ce31692d7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-grosses.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-9f7a650150efb205", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68a2493e9897cab6", "scanner": "scanner-primary", "fingerprint": "9f7a650150efb205", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-9f7a650150efb205", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68a2493e9897cab6", "scanner": "scanner-primary", "fingerprint": "9f7a650150efb205", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 124}}}]}, {"ruleId": "scanner-9f7a650150efb205", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8015026cb412cd93", "scanner": "scanner-primary", "fingerprint": "9f7a650150efb205", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 143}}}]}, {"ruleId": "scanner-9f7a650150efb205", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68a2493e9897cab6", "scanner": "scanner-primary", "fingerprint": "9f7a650150efb205", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 211}}}]}, {"ruleId": "scanner-9f7a650150efb205", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8015026cb412cd93", "scanner": "scanner-primary", "fingerprint": "9f7a650150efb205", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-daae9be1d8e4c5ae", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ca6bb245efdb91aa", "scanner": "scanner-primary", "fingerprint": "daae9be1d8e4c5ae", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-aggregators.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b1a13a1221df2dde", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a768f748f0c4e5a9", "scanner": "scanner-primary", "fingerprint": "b1a13a1221df2dde", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-poller.yml"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-b1a13a1221df2dde", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8d1c3147699571e6", "scanner": "scanner-primary", "fingerprint": "b1a13a1221df2dde", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-poller.yml"}, "region": {"startLine": 171}}}]}, {"ruleId": "scanner-86fa9106e377c666", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f9df50d4d277b9e4", "scanner": "scanner-primary", "fingerprint": "86fa9106e377c666", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-poller.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ec614558519ad2e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "71b59f7d721e4d9c", "scanner": "scanner-primary", "fingerprint": "3ec614558519ad2e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rebuild-reviews.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-ac137dfb572754c4", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "c25d7e94e5367e57", "scanner": "scanner-primary", "fingerprint": "ac137dfb572754c4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rebuild-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e771207ce4ab5fbe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1808298e8c424c88", "scanner": "scanner-primary", "fingerprint": "e771207ce4ab5fbe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-seo-health.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e771207ce4ab5fbe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8ce2e73dd9e6d631", "scanner": "scanner-primary", "fingerprint": "e771207ce4ab5fbe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-seo-health.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-c2c868b4ecad7e45", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "41d53921ef33cd06", "scanner": "scanner-primary", "fingerprint": "c2c868b4ecad7e45", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-stage-alert.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-740b88ab8dd23d2f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6c22316cfcffbcef", "scanner": "scanner-primary", "fingerprint": "740b88ab8dd23d2f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto-merge.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-768e8f28c1850d98", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f3c306ca3743dfa1", "scanner": "scanner-primary", "fingerprint": "768e8f28c1850d98", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/dependabot-auto-merge.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-429b68e36d54e39a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90b3c854a5782703", "scanner": "scanner-primary", "fingerprint": "429b68e36d54e39a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-creative-team.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-429b68e36d54e39a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "16740b24f44e31c4", "scanner": "scanner-primary", "fingerprint": "429b68e36d54e39a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-creative-team.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-254d4053bc05a90c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1e8b10f0d6e64991", "scanner": "scanner-primary", "fingerprint": "254d4053bc05a90c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-creative-team.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-68a9d5d7769213e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "89c286faa4f3f446", "scanner": "scanner-primary", "fingerprint": "68a9d5d7769213e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-guardian-reviews.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-68a9d5d7769213e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "44ea4ea79edeac47", "scanner": "scanner-primary", "fingerprint": "68a9d5d7769213e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-guardian-reviews.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-3d0d875ce95264ad", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b43e6ec39e96ce61", "scanner": "scanner-primary", "fingerprint": "3d0d875ce95264ad", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fetch-guardian-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-de57233602c29cad", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "69d91b883bd31ce8", "scanner": "scanner-primary", "fingerprint": "de57233602c29cad", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-cast-changes.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-de57233602c29cad", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c4ec09eb70620c41", "scanner": "scanner-primary", "fingerprint": "de57233602c29cad", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-cast-changes.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-a6ae904a6ca84128", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b4738d658bd2ceb", "scanner": "scanner-primary", "fingerprint": "a6ae904a6ca84128", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-nyt-critics-picks.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-a6ae904a6ca84128", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c66630561e67cf44", "scanner": "scanner-primary", "fingerprint": "a6ae904a6ca84128", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-nyt-critics-picks.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-0c30a707be861c86", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "849fdabd270aa3b4", "scanner": "scanner-primary", "fingerprint": "0c30a707be861c86", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-nyt-critics-picks.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9b6d38602c8a560f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c8e5eb1c798a488f", "scanner": "scanner-primary", "fingerprint": "9b6d38602c8a560f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-reddit-sentiment.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-9b6d38602c8a560f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a88044121fc41688", "scanner": "scanner-primary", "fingerprint": "9b6d38602c8a560f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-reddit-sentiment.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-7c5eeb37aebf50e8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fc7bc0b437200ca8", "scanner": "scanner-primary", "fingerprint": "7c5eeb37aebf50e8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/btc-results-preview.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-7c5eeb37aebf50e8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0fac806d3b49018c", "scanner": "scanner-primary", "fingerprint": "7c5eeb37aebf50e8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/btc-results-preview.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-6fe8776d08270eb1", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "537c37359fcb5915", "scanner": "scanner-primary", "fingerprint": "6fe8776d08270eb1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/btc-results-preview.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c658478b77f69c4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ff6d18a748f18c9b", "scanner": "scanner-primary", "fingerprint": "c658478b77f69c4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-reviews.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-c658478b77f69c4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d46cf459bcf14133", "scanner": "scanner-primary", "fingerprint": "c658478b77f69c4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-reviews.yml"}, "region": {"startLine": 118}}}]}, {"ruleId": "scanner-c658478b77f69c4c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d7c68af5a238628f", "scanner": "scanner-primary", "fingerprint": "c658478b77f69c4c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-reviews.yml"}, "region": {"startLine": 187}}}]}, {"ruleId": "scanner-93e4d2074a065174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d5a03498c2fbaadf", "scanner": "scanner-primary", "fingerprint": "93e4d2074a065174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-93e4d2074a065174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3086179223443179", "scanner": "scanner-primary", "fingerprint": "93e4d2074a065174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-87e40684c071dcbb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2d7889c353a84f89", "scanner": "scanner-primary", "fingerprint": "87e40684c071dcbb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-cast.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-317097cab128c5d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "018af244d8944f5c", "scanner": "scanner-primary", "fingerprint": "317097cab128c5d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-ugc.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-317097cab128c5d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aa45296c525d2c0c", "scanner": "scanner-primary", "fingerprint": "317097cab128c5d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-ugc.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-317097cab128c5d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4341ed951f3acc4b", "scanner": "scanner-primary", "fingerprint": "317097cab128c5d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-ugc.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-07680721fec652d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "282b18cadb005bd8", "scanner": "scanner-primary", "fingerprint": "07680721fec652d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-express.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-9bbba250e15d8332", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f9cd682819bd6f80", "scanner": "scanner-primary", "fingerprint": "9bbba250e15d8332", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-express.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-11520ff4f93e1467", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2d21f79e1094b9d3", "scanner": "scanner-primary", "fingerprint": "11520ff4f93e1467", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mirror-review-texts-to-gitlab.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-f49941c28c2d0162", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0adbe694f78d2732", "scanner": "scanner-primary", "fingerprint": "f49941c28c2d0162", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/regenerate-tier-configs.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-f49941c28c2d0162", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5cc82e2084853662", "scanner": "scanner-primary", "fingerprint": "f49941c28c2d0162", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/regenerate-tier-configs.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-c45495dbbc741096", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "fdb9184b187be18c", "scanner": "scanner-primary", "fingerprint": "c45495dbbc741096", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/regenerate-tier-configs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-557662b746f43e69", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e9902446e0d88226", "scanner": "scanner-primary", "fingerprint": "557662b746f43e69", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-precursor-awards.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-557662b746f43e69", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e3eec4189862179", "scanner": "scanner-primary", "fingerprint": "557662b746f43e69", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-precursor-awards.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-ce963c1841b4626b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0fd575178d4ecfaa", "scanner": "scanner-primary", "fingerprint": "ce963c1841b4626b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-precursor-awards.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4588c05b82ed5a1f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "7fcf5165a999c7fc", "scanner": "scanner-primary", "fingerprint": "4588c05b82ed5a1f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/overnight-collect.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2beb0f7b70ad8b07", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3a4457d1978b96af", "scanner": "scanner-primary", "fingerprint": "2beb0f7b70ad8b07", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-health-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cef6b037dfbbb9fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "539062d372413572", "scanner": "scanner-primary", "fingerprint": "cef6b037dfbbb9fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cron-health.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-cef6b037dfbbb9fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dbef55dd8f728e", "scanner": "scanner-primary", "fingerprint": "cef6b037dfbbb9fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cron-health.yml"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-cef6b037dfbbb9fd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dbef55dd8f728e", "scanner": "scanner-primary", "fingerprint": "cef6b037dfbbb9fd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-cron-health.yml"}, "region": {"startLine": 307}}}]}, {"ruleId": "scanner-702f9d36bcd1f174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "133d9e11c435439e", "scanner": "scanner-primary", "fingerprint": "702f9d36bcd1f174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-mezzanine.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-702f9d36bcd1f174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7ae39f3409ebafed", "scanner": "scanner-primary", "fingerprint": "702f9d36bcd1f174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-mezzanine.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-702f9d36bcd1f174", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "18a9883a05ba95f3", "scanner": "scanner-primary", "fingerprint": "702f9d36bcd1f174", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-mezzanine.yml"}, "region": {"startLine": 99}}}]}, {"ruleId": "scanner-327fc655b6ab2346", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "5483eac203909191", "scanner": "scanner-primary", "fingerprint": "327fc655b6ab2346", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-mezzanine.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f35182d1d693c97", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5f468251caa966ca", "scanner": "scanner-primary", "fingerprint": "1f35182d1d693c97", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-thestage-roundups.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-1f35182d1d693c97", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "edd6a7719967c026", "scanner": "scanner-primary", "fingerprint": "1f35182d1d693c97", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-thestage-roundups.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-c6fab7f0efc30817", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "458d9ade258536cb", "scanner": "scanner-primary", "fingerprint": "c6fab7f0efc30817", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-thestage-roundups.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ebedf27064be6f28", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2161d8cc96deef42", "scanner": "scanner-primary", "fingerprint": "ebedf27064be6f28", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/adjudicate-review-queue.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-ebedf27064be6f28", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aa8bb2307f636d76", "scanner": "scanner-primary", "fingerprint": "ebedf27064be6f28", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/adjudicate-review-queue.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-c7cf78fa3a09ed80", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "eef7838d98ec5921", "scanner": "scanner-primary", "fingerprint": "c7cf78fa3a09ed80", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/adjudicate-review-queue.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0154d973bef90b52", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "49137c705470e92b", "scanner": "scanner-primary", "fingerprint": "0154d973bef90b52", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-stale-closures.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-23643ba4bca9ea88", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aa58cbf9127f8034", "scanner": "scanner-primary", "fingerprint": "23643ba4bca9ea88", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-commercial-tip.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-23643ba4bca9ea88", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a9673b215a1ec495", "scanner": "scanner-primary", "fingerprint": "23643ba4bca9ea88", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-commercial-tip.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-b422f6e5827efbff", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ff8781a11e01e7c1", "scanner": "scanner-primary", "fingerprint": "b422f6e5827efbff", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-we-ob-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6125950232cefb24", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad6ca00a75181a88", "scanner": "scanner-primary", "fingerprint": "6125950232cefb24", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-deploy-watermark.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-6125950232cefb24", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4514e1bb788fe54d", "scanner": "scanner-primary", "fingerprint": "6125950232cefb24", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-deploy-watermark.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-a91a9c73589db7fd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1e7d0b05ca103079", "scanner": "scanner-primary", "fingerprint": "a91a9c73589db7fd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/daily-digest.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-98ac6ca60da12cdc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a7749e3a8b5ee9dc", "scanner": "scanner-primary", "fingerprint": "98ac6ca60da12cdc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-experiment.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-98ac6ca60da12cdc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "24b7d65c8c343fe0", "scanner": "scanner-primary", "fingerprint": "98ac6ca60da12cdc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-experiment.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-98ac6ca60da12cdc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f4d725c2e04da09a", "scanner": "scanner-primary", "fingerprint": "98ac6ca60da12cdc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scoring-experiment.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-7cfbf63fbdcb6371", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d89d06866c6b6b69", "scanner": "scanner-primary", "fingerprint": "7cfbf63fbdcb6371", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-sprint-plan.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-7cfbf63fbdcb6371", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c40665a5129b07ae", "scanner": "scanner-primary", "fingerprint": "7cfbf63fbdcb6371", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/review-sprint-plan.yml"}, "region": {"startLine": 73}}}]}, {"ruleId": "scanner-9a94069a01e1d4c9", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b91648f4400a0b54", "scanner": "scanner-primary", "fingerprint": "9a94069a01e1d4c9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sync-followers.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-09444d738bb05870", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7d1f8ea8e5a4f9ab", "scanner": "scanner-primary", "fingerprint": "09444d738bb05870", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-review-count-drift.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-c13996a625c627bd", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "c99b32d1fffe7d4c", "scanner": "scanner-primary", "fingerprint": "c13996a625c627bd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-review-count-drift.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61a4a3f8c1ecf51d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f7793cbc997b7c3", "scanner": "scanner-primary", "fingerprint": "61a4a3f8c1ecf51d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-checklist.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-61a4a3f8c1ecf51d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af7b8daecb8c145c", "scanner": "scanner-primary", "fingerprint": "61a4a3f8c1ecf51d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-checklist.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-40ca47343ea3cab6", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8afb28ee68ea818c", "scanner": "scanner-primary", "fingerprint": "40ca47343ea3cab6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-checklist.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8eb1ab530932b715", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eb70db7465bb5931", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8eb1ab530932b715", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eb70db7465bb5931", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 122}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8eb1ab530932b715", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 193}}}]}, {"ruleId": "scanner-f80658b4f3ce1096", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "eb70db7465bb5931", "scanner": "scanner-primary", "fingerprint": "f80658b4f3ce1096", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-b46d82c63879b9d6", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1d330b48591bb247", "scanner": "scanner-primary", "fingerprint": "b46d82c63879b9d6", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-show-score.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a0b9070b54fb5ea0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0a4d66d94dc35e9e", "scanner": "scanner-primary", "fingerprint": "a0b9070b54fb5ea0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mirror-data-to-gitlab.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-118baaba32d5635e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "141a4420dcd99059", "scanner": "scanner-primary", "fingerprint": "118baaba32d5635e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/social-post.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-118baaba32d5635e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f2fdb8df529287a6", "scanner": "scanner-primary", "fingerprint": "118baaba32d5635e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/social-post.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-22f7d4c216a9c70a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9b55aaa27206d7e5", "scanner": "scanner-primary", "fingerprint": "22f7d4c216a9c70a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-video-reviews.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-b632eceb1f70241a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f1026c1542440ba5", "scanner": "scanner-primary", "fingerprint": "b632eceb1f70241a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-video-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7c9b40f1f37ec153", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "edc1e8352171a06f", "scanner": "scanner-primary", "fingerprint": "7c9b40f1f37ec153", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-bww-rr-attributions.yml"}, "region": {"startLine": 85}}}]}, {"ruleId": "scanner-fe204cb068c00788", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "66e06a1f805b7750", "scanner": "scanner-primary", "fingerprint": "fe204cb068c00788", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/drain-not-attempted.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-fe204cb068c00788", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b1165ab7003ac964", "scanner": "scanner-primary", "fingerprint": "fe204cb068c00788", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/drain-not-attempted.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-11f5033bae061e52", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "17a8ce89ea938b30", "scanner": "scanner-primary", "fingerprint": "11f5033bae061e52", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/drain-not-attempted.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3ab93879f89dfba", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cf5b26b401001daa", "scanner": "scanner-primary", "fingerprint": "b3ab93879f89dfba", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/aggregator-url-watcher.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-9b1e071724e70895", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7a76d48855909321", "scanner": "scanner-primary", "fingerprint": "9b1e071724e70895", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-friday.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-3b1f4dec56efb74f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2823bf57f43b1e65", "scanner": "scanner-primary", "fingerprint": "3b1f4dec56efb74f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-review-validation.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-3b1f4dec56efb74f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "65091922369265c2", "scanner": "scanner-primary", "fingerprint": "3b1f4dec56efb74f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-review-validation.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-25c0a02f5097b9f8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e885a9c556acc950", "scanner": "scanner-primary", "fingerprint": "25c0a02f5097b9f8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-broadcast.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-29d1301b7d6027b1", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6b98cbcf137ec165", "scanner": "scanner-primary", "fingerprint": "29d1301b7d6027b1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-broadcast.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-95c9a50fe586b738", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ade417856b468aa3", "scanner": "scanner-primary", "fingerprint": "95c9a50fe586b738", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-opening-night-drift.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-95c9a50fe586b738", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6440880ff9947f16", "scanner": "scanner-primary", "fingerprint": "95c9a50fe586b738", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-opening-night-drift.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-214b03a4de64a30d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f223b0b00b043aca", "scanner": "scanner-primary", "fingerprint": "214b03a4de64a30d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-opening-night-drift.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d84e2ede32c06472", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "38d2771afe35b3cd", "scanner": "scanner-primary", "fingerprint": "d84e2ede32c06472", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-model-consistency.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-34b62f685771fd93", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1b17898f12406f2f", "scanner": "scanner-primary", "fingerprint": "34b62f685771fd93", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/demo-alias-watchdog.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-4c5a64db1a7aa5d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "878331cb2d3b330b", "scanner": "scanner-primary", "fingerprint": "4c5a64db1a7aa5d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-runtimes.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-4c5a64db1a7aa5d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a2d767448f47e946", "scanner": "scanner-primary", "fingerprint": "4c5a64db1a7aa5d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-runtimes.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-b5deeaed505fac35", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "039f7c562ce54f3f", "scanner": "scanner-primary", "fingerprint": "b5deeaed505fac35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-runtimes.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1f408696a5a20867", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "74c3595fe3ad08d1", "scanner": "scanner-primary", "fingerprint": "1f408696a5a20867", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/posthog-monday.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1648082d55df8ec3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d38973613d8a5534", "scanner": "scanner-primary", "fingerprint": "1648082d55df8ec3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-tony-odds.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-1648082d55df8ec3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d69fd0fe6a1d8497", "scanner": "scanner-primary", "fingerprint": "1648082d55df8ec3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-tony-odds.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-ab0423d02612241f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3fe6931d497f379a", "scanner": "scanner-primary", "fingerprint": "ab0423d02612241f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/execute-approved-fix.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-ab0423d02612241f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aeaf955bb35251c2", "scanner": "scanner-primary", "fingerprint": "ab0423d02612241f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/execute-approved-fix.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-ab0423d02612241f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e86ea3604164f2be", "scanner": "scanner-primary", "fingerprint": "ab0423d02612241f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/execute-approved-fix.yml"}, "region": {"startLine": 91}}}]}, {"ruleId": "scanner-d2448c8b70d383d8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cbce2f5b2cca620d", "scanner": "scanner-primary", "fingerprint": "d2448c8b70d383d8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-broadway-com.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-d2448c8b70d383d8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9f178febf6bc3cf0", "scanner": "scanner-primary", "fingerprint": "d2448c8b70d383d8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-broadway-com.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-5bc935b941dc5c5c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2f807f2318985508", "scanner": "scanner-primary", "fingerprint": "5bc935b941dc5c5c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-broadway-com.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-92ddb36f941e6c26", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "470866e73b90d757", "scanner": "scanner-primary", "fingerprint": "92ddb36f941e6c26", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-we-aggregators.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-92ddb36f941e6c26", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3df94724441b3805", "scanner": "scanner-primary", "fingerprint": "92ddb36f941e6c26", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-we-aggregators.yml"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-b04b4e131f266e06", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3e75be4435d05fcd", "scanner": "scanner-primary", "fingerprint": "b04b4e131f266e06", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/sweep-we-aggregators.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6437f83c151ddf4e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "16d38ff9a6a3ee5e", "scanner": "scanner-primary", "fingerprint": "6437f83c151ddf4e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-reviews.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-6437f83c151ddf4e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21af9efd8da5d361", "scanner": "scanner-primary", "fingerprint": "6437f83c151ddf4e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-reviews.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-0baa046a51d581a3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af1469d67ca410db", "scanner": "scanner-primary", "fingerprint": "0baa046a51d581a3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-touring-contamination.yml"}, "region": {"startLine": 72}}}]}, {"ruleId": "scanner-0baa046a51d581a3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dae8f600b45c01d7", "scanner": "scanner-primary", "fingerprint": "0baa046a51d581a3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-touring-contamination.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-0baa046a51d581a3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "321d8211caf811da", "scanner": "scanner-primary", "fingerprint": "0baa046a51d581a3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-touring-contamination.yml"}, "region": {"startLine": 153}}}]}, {"ruleId": "scanner-6556987b686a8bfb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0f936048481fc5c7", "scanner": "scanner-primary", "fingerprint": "6556987b686a8bfb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-touring-contamination.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7f8567acaac9976e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2f8fc744009fd9a3", "scanner": "scanner-primary", "fingerprint": "7f8567acaac9976e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-westendtheatre.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-7f8567acaac9976e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c526ab953dfdbc9f", "scanner": "scanner-primary", "fingerprint": "7f8567acaac9976e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-westendtheatre.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-aec70a3c9b88cc03", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "9a01807c11f31e41", "scanner": "scanner-primary", "fingerprint": "aec70a3c9b88cc03", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-westendtheatre.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8cc846988031b24b", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 88}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "434328ab51cf78f9", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 103}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8cc846988031b24b", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 200}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "434328ab51cf78f9", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 216}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d24a82e3608a8479", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 339}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8cc846988031b24b", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 356}}}]}, {"ruleId": "scanner-407bf7391077be3a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "434328ab51cf78f9", "scanner": "scanner-primary", "fingerprint": "407bf7391077be3a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 371}}}]}, {"ruleId": "scanner-15522be4298f8ae0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d8f8217d5f884b1f", "scanner": "scanner-primary", "fingerprint": "15522be4298f8ae0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-collect-review-texts.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b922c7d57b843458", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4b293363fc10ccd1", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b922c7d57b843458", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4b293363fc10ccd1", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 116}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b922c7d57b843458", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-8ccf698f55001422", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4b293363fc10ccd1", "scanner": "scanner-primary", "fingerprint": "8ccf698f55001422", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-6b69815c4e233e59", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "98791cd1767cac26", "scanner": "scanner-primary", "fingerprint": "6b69815c4e233e59", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/bulk-reddit-sentiment.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1b842ad343352ce2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "62e691e397388036", "scanner": "scanner-primary", "fingerprint": "1b842ad343352ce2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-grosses.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-a3a73a1ce4a42542", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "84104a6b29a99690", "scanner": "scanner-primary", "fingerprint": "a3a73a1ce4a42542", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-grosses.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dc751497a6779957", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1a07893ad02048b1", "scanner": "scanner-primary", "fingerprint": "dc751497a6779957", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-orchestrator.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-dc751497a6779957", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "05818176225800a3", "scanner": "scanner-primary", "fingerprint": "dc751497a6779957", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-orchestrator.yml"}, "region": {"startLine": 536}}}]}, {"ruleId": "scanner-1b1378f5ba915d8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "080b97df18335af2", "scanner": "scanner-primary", "fingerprint": "1b1378f5ba915d8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-tony-awards.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-1b1378f5ba915d8a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ecf62ce20a27b1d", "scanner": "scanner-primary", "fingerprint": "1b1378f5ba915d8a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-tony-awards.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-489470981dc8fe05", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f1e2593e05a44b79", "scanner": "scanner-primary", "fingerprint": "489470981dc8fe05", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-aggregator-coverage.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-9b5c046248d1428a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1bd2d84a47b910b1", "scanner": "scanner-primary", "fingerprint": "9b5c046248d1428a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-aggregator-coverage.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5a205277d0eefc45", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "021e91b45f5f2ee5", "scanner": "scanner-primary", "fingerprint": "5a205277d0eefc45", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/retry-wrong-urls.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c03763772a90ed9c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7235054adc1808d5", "scanner": "scanner-primary", "fingerprint": "c03763772a90ed9c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-metadata-consensus.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-c03763772a90ed9c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7235054adc1808d5", "scanner": "scanner-primary", "fingerprint": "c03763772a90ed9c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-metadata-consensus.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-c03763772a90ed9c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4421ba1c49b60d0f", "scanner": "scanner-primary", "fingerprint": "c03763772a90ed9c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-show-metadata-consensus.yml"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-d6a3978d6d1aacb5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9864cce615947866", "scanner": "scanner-primary", "fingerprint": "d6a3978d6d1aacb5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-seatplan.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-d6a3978d6d1aacb5", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ead6b813986d41c3", "scanner": "scanner-primary", "fingerprint": "d6a3978d6d1aacb5", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-seatplan.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-bc703cb1879b86e1", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "866a3a0d3e4d1ed8", "scanner": "scanner-primary", "fingerprint": "bc703cb1879b86e1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-seatplan.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db7460f3afaf0b7a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e725ca90a6ad7d5", "scanner": "scanner-primary", "fingerprint": "db7460f3afaf0b7a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-feedback.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-db7460f3afaf0b7a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4914d8594ed87b6", "scanner": "scanner-primary", "fingerprint": "db7460f3afaf0b7a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-feedback.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-db7460f3afaf0b7a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11cc7eaf7e73b3c0", "scanner": "scanner-primary", "fingerprint": "db7460f3afaf0b7a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-feedback.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-db7460f3afaf0b7a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11cc7eaf7e73b3c0", "scanner": "scanner-primary", "fingerprint": "db7460f3afaf0b7a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-feedback.yml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-9251c19510322527", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ef6b2d32cc8ea28c", "scanner": "scanner-primary", "fingerprint": "9251c19510322527", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/extract-pull-quotes.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-9251c19510322527", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "790d92c7eba0562a", "scanner": "scanner-primary", "fingerprint": "9251c19510322527", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/extract-pull-quotes.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-2db0435aa444f180", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "c147eab3caad6a7f", "scanner": "scanner-primary", "fingerprint": "2db0435aa444f180", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/extract-pull-quotes.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f0b6b47a53b6eb15", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "df9457328131cb07", "scanner": "scanner-primary", "fingerprint": "f0b6b47a53b6eb15", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-historical-metadata.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-1dd7cfc521ff046d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "668872376c4d258c", "scanner": "scanner-primary", "fingerprint": "1dd7cfc521ff046d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-historical-metadata.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-39257fcb7f831561", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "6ac6e4cc4cbe0708", "scanner": "scanner-primary", "fingerprint": "39257fcb7f831561", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-critic-coverage.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4f9f93dc26c28219", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f709acf4815feed", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 66}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4f9f93dc26c28219", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 170}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f709acf4815feed", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11a3de5a3e4ba7d2", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 280}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4f9f93dc26c28219", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 300}}}]}, {"ruleId": "scanner-f400c4c44a0a90d6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f709acf4815feed", "scanner": "scanner-primary", "fingerprint": "f400c4c44a0a90d6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 316}}}]}, {"ruleId": "scanner-c75a9cbf1632f180", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "09692c37d6006220", "scanner": "scanner-primary", "fingerprint": "c75a9cbf1632f180", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rescrape-truncated.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c12c118879fa42bc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6a1d4175b228b56f", "scanner": "scanner-primary", "fingerprint": "c12c118879fa42bc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rotate-theatr-token.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-623be6692706c631", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f659829006878940", "scanner": "scanner-primary", "fingerprint": "623be6692706c631", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/clear-stale-duplicate-of.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-d96f43e8756d0210", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3118d5abb9528ff6", "scanner": "scanner-primary", "fingerprint": "d96f43e8756d0210", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/clear-stale-duplicate-of.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1e4543b79e8afd91", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9c563ef7650ae9ff", "scanner": "scanner-primary", "fingerprint": "1e4543b79e8afd91", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/purge-archives-history.yml"}, "region": {"startLine": 90}}}]}, {"ruleId": "scanner-cbf960a7df917f37", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "bb9bc77b008a0e02", "scanner": "scanner-primary", "fingerprint": "cbf960a7df917f37", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/purge-archives-history.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-722017defef35979", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "30fc0090e00f602d", "scanner": "scanner-primary", "fingerprint": "722017defef35979", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-theatr.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-722017defef35979", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e07bee3a7f8fcb77", "scanner": "scanner-primary", "fingerprint": "722017defef35979", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-theatr.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-da174d37e2ec7f03", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f3416beaa20f2b61", "scanner": "scanner-primary", "fingerprint": "da174d37e2ec7f03", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-theatr.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-343c0cf04d660ee6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cce6879a2b4e9111", "scanner": "scanner-primary", "fingerprint": "343c0cf04d660ee6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-343c0cf04d660ee6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cce6879a2b4e9111", "scanner": "scanner-primary", "fingerprint": "343c0cf04d660ee6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 145}}}]}, {"ruleId": "scanner-343c0cf04d660ee6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8152f6431dfe8b0f", "scanner": "scanner-primary", "fingerprint": "343c0cf04d660ee6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 191}}}]}, {"ruleId": "scanner-343c0cf04d660ee6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "29d08c4298f8118f", "scanner": "scanner-primary", "fingerprint": "343c0cf04d660ee6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 246}}}]}, {"ruleId": "scanner-343c0cf04d660ee6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "58be7b3a3eb84577", "scanner": "scanner-primary", "fingerprint": "343c0cf04d660ee6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 442}}}]}, {"ruleId": "scanner-6d5af7f4a8a87bec", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "7a77333ad3f0046a", "scanner": "scanner-primary", "fingerprint": "6d5af7f4a8a87bec", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8d7ce54bd5b12589", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "69ddc9ad883e70ea", "scanner": "scanner-primary", "fingerprint": "8d7ce54bd5b12589", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-url-health.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-b2677cce2121e17d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "be778013f24f20b0", "scanner": "scanner-primary", "fingerprint": "b2677cce2121e17d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-url-health.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08245a09db30a105", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af1b92f23b7fb7ef", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0bc1f2b9774b525d", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 313}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08245a09db30a105", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 368}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af1b92f23b7fb7ef", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 384}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0bc1f2b9774b525d", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 518}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "08245a09db30a105", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 542}}}]}, {"ruleId": "scanner-61a4e62b76fbe903", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af1b92f23b7fb7ef", "scanner": "scanner-primary", "fingerprint": "61a4e62b76fbe903", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 558}}}]}, {"ruleId": "scanner-ac0cdb2342f986ba", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "a9f03ae079484700", "scanner": "scanner-primary", "fingerprint": "ac0cdb2342f986ba", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-soft-paywall.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6fba8e6bf8d68148", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1b575795261d3b05", "scanner": "scanner-primary", "fingerprint": "6fba8e6bf8d68148", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-0008a9e6f4a94949", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d486f2d32b2cea45", "scanner": "scanner-primary", "fingerprint": "0008a9e6f4a94949", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/opening-night-completeness-check.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-b3b3fcfab4e52a68", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bd685cb61db1f7c4", "scanner": "scanner-primary", "fingerprint": "b3b3fcfab4e52a68", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-cross-production.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-b3b3fcfab4e52a68", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8bffe9922ffc2e99", "scanner": "scanner-primary", "fingerprint": "b3b3fcfab4e52a68", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-cross-production.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-fb72c86538f34af0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d983deb74f09bf75", "scanner": "scanner-primary", "fingerprint": "fb72c86538f34af0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-cross-production.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-37a2d1a4a3d1f587", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e2e9165163f392ad", "scanner": "scanner-primary", "fingerprint": "37a2d1a4a3d1f587", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-integrity.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-37a2d1a4a3d1f587", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "232cb28b7614b3ce", "scanner": "scanner-primary", "fingerprint": "37a2d1a4a3d1f587", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-integrity.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-37a2d1a4a3d1f587", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "37ce3400a3431b70", "scanner": "scanner-primary", "fingerprint": "37a2d1a4a3d1f587", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-integrity.yml"}, "region": {"startLine": 220}}}]}, {"ruleId": "scanner-76b6ed319d826690", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "afbc8a3a661457fe", "scanner": "scanner-primary", "fingerprint": "76b6ed319d826690", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-integrity.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-82b8d37f6f7b8ad8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b36d8a05fcd475b9", "scanner": "scanner-primary", "fingerprint": "82b8d37f6f7b8ad8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-weekly.yml"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-82b8d37f6f7b8ad8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b36d8a05fcd475b9", "scanner": "scanner-primary", "fingerprint": "82b8d37f6f7b8ad8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-weekly.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-82b8d37f6f7b8ad8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b36d8a05fcd475b9", "scanner": "scanner-primary", "fingerprint": "82b8d37f6f7b8ad8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-weekly.yml"}, "region": {"startLine": 177}}}]}, {"ruleId": "scanner-82b8d37f6f7b8ad8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b36d8a05fcd475b9", "scanner": "scanner-primary", "fingerprint": "82b8d37f6f7b8ad8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/commercial-weekly.yml"}, "region": {"startLine": 233}}}]}, {"ruleId": "scanner-3a8084da8ea5006f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "150b4c0fb5943e8b", "scanner": "scanner-primary", "fingerprint": "3a8084da8ea5006f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-formspree.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-3a8084da8ea5006f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "17b4e9b89532fe01", "scanner": "scanner-primary", "fingerprint": "3a8084da8ea5006f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/process-review-formspree.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-4c638c3213c345d1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2b55fc5257f980f8", "scanner": "scanner-primary", "fingerprint": "4c638c3213c345d1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-wp-blogs.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-3987494f8df7b7b9", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "fde0d9669094df91", "scanner": "scanner-primary", "fingerprint": "3987494f8df7b7b9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-wp-blogs.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-25654135f16de797", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "299a2a12b04470c7", "scanner": "scanner-primary", "fingerprint": "25654135f16de797", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/outlet-listing-poller.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-cdb8fbb31decef93", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d915eecb1a795be1", "scanner": "scanner-primary", "fingerprint": "cdb8fbb31decef93", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wsj-subscriber.yml"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-cdb8fbb31decef93", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2502fd477163232f", "scanner": "scanner-primary", "fingerprint": "cdb8fbb31decef93", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wsj-subscriber.yml"}, "region": {"startLine": 79}}}]}, {"ruleId": "scanner-cdb8fbb31decef93", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9df2babf607b782e", "scanner": "scanner-primary", "fingerprint": "cdb8fbb31decef93", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wsj-subscriber.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-e4485e31951dd505", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "5dd6cfb64a3517c9", "scanner": "scanner-primary", "fingerprint": "e4485e31951dd505", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-wsj-subscriber.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-84719a021226e1c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0d9aec2e53a6a0cf", "scanner": "scanner-primary", "fingerprint": "84719a021226e1c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-waltz-costs.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-9a3bdf39bf9b253c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "887c2ff1e7cb3b78", "scanner": "scanner-primary", "fingerprint": "9a3bdf39bf9b253c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-bww-reviews.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-9a3bdf39bf9b253c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ecb2891207983bd", "scanner": "scanner-primary", "fingerprint": "9a3bdf39bf9b253c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-bww-reviews.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-9a3bdf39bf9b253c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "887c2ff1e7cb3b78", "scanner": "scanner-primary", "fingerprint": "9a3bdf39bf9b253c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-bww-reviews.yml"}, "region": {"startLine": 149}}}]}, {"ruleId": "scanner-9a3bdf39bf9b253c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4ecb2891207983bd", "scanner": "scanner-primary", "fingerprint": "9a3bdf39bf9b253c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-bww-reviews.yml"}, "region": {"startLine": 165}}}]}, {"ruleId": "scanner-8c7322583fa50d23", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "cd3546e782a0824d", "scanner": "scanner-primary", "fingerprint": "8c7322583fa50d23", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-bww-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89b6398f9145b50a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae46e22b4a71a9b0", "scanner": "scanner-primary", "fingerprint": "89b6398f9145b50a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-guide-editorials.yml"}, "region": {"startLine": 19}}}]}, {"ruleId": "scanner-89b6398f9145b50a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "63617dd47f4a30e2", "scanner": "scanner-primary", "fingerprint": "89b6398f9145b50a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-guide-editorials.yml"}, "region": {"startLine": 29}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0826ab9eae3b314", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb237d12c6cb827a", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 76}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0826ab9eae3b314", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 147}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb237d12c6cb827a", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 167}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0826ab9eae3b314", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 208}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb237d12c6cb827a", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 226}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0826ab9eae3b314", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 273}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb237d12c6cb827a", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 291}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0826ab9eae3b314", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 341}}}]}, {"ruleId": "scanner-d3009165781cdbd7", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bb237d12c6cb827a", "scanner": "scanner-primary", "fingerprint": "d3009165781cdbd7", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 357}}}]}, {"ruleId": "scanner-ebd3018b3c2c5d65", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b43443d6d79336e9", "scanner": "scanner-primary", "fingerprint": "ebd3018b3c2c5d65", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-new-aggregators.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9acc7c35f58d4c39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "11001dceec9f02fe", "scanner": "scanner-primary", "fingerprint": "9acc7c35f58d4c39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-ibdb-dates.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-9acc7c35f58d4c39", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a0726b1c0df93d9c", "scanner": "scanner-primary", "fingerprint": "9acc7c35f58d4c39", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-ibdb-dates.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-d9c0cfd2397c8480", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "af89418a0e2b7c6a", "scanner": "scanner-primary", "fingerprint": "d9c0cfd2397c8480", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/enrich-ibdb-dates.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a1e79da8dedcc865", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f6f12a0d3db9752d", "scanner": "scanner-primary", "fingerprint": "a1e79da8dedcc865", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-playwright-credits.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-a1e79da8dedcc865", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "416146231f22cc9d", "scanner": "scanner-primary", "fingerprint": "a1e79da8dedcc865", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-playwright-credits.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-2d68ccf4e3b0a7a0", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "950f9a0fa1df8912", "scanner": "scanner-primary", "fingerprint": "2d68ccf4e3b0a7a0", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/backfill-playwright-credits.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-af8bf37e347ec248", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4e6a9419e76df61e", "scanner": "scanner-primary", "fingerprint": "af8bf37e347ec248", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/brand-mention-monitor.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-af8bf37e347ec248", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a490eb89ec2944e7", "scanner": "scanner-primary", "fingerprint": "af8bf37e347ec248", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/brand-mention-monitor.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-a6a83eb434f51be3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6a30da2fc610741f", "scanner": "scanner-primary", "fingerprint": "a6a83eb434f51be3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-paywalled-access.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-a6a83eb434f51be3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "78755062ed5bbe68", "scanner": "scanner-primary", "fingerprint": "a6a83eb434f51be3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-paywalled-access.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-a6a83eb434f51be3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f4a4f1d4be050155", "scanner": "scanner-primary", "fingerprint": "a6a83eb434f51be3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/test-paywalled-access.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-241a6d1bf125b372", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5c2bdab3b3cd6bfe", "scanner": "scanner-primary", "fingerprint": "241a6d1bf125b372", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/fantasy-weekly.yml"}, "region": {"startLine": 24}}}]}, {"ruleId": "scanner-96f8148945a0c3e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "42d2d99707aae469", "scanner": "scanner-primary", "fingerprint": "96f8148945a0c3e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-critic-consensus.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-96f8148945a0c3e4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "daf89272fcfd4cd9", "scanner": "scanner-primary", "fingerprint": "96f8148945a0c3e4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-critic-consensus.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-403572a102a8d782", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6c557dff992c8108", "scanner": "scanner-primary", "fingerprint": "403572a102a8d782", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-explicit-ratings.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-403572a102a8d782", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d6ca7664d28f57c9", "scanner": "scanner-primary", "fingerprint": "403572a102a8d782", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-explicit-ratings.yml"}, "region": {"startLine": 190}}}]}, {"ruleId": "scanner-cf442b3b214a4078", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0b39bbc614cba89d", "scanner": "scanner-primary", "fingerprint": "cf442b3b214a4078", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recover-explicit-ratings.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-4268d310ab658cdb", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d3541979d6737d1d", "scanner": "scanner-primary", "fingerprint": "4268d310ab658cdb", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-outlet-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c31b10d9f4fd058", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1879a09ae6217ad5", "scanner": "scanner-primary", "fingerprint": "8c31b10d9f4fd058", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recollect-for-scores.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-8c31b10d9f4fd058", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a01d2dfa3074568", "scanner": "scanner-primary", "fingerprint": "8c31b10d9f4fd058", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recollect-for-scores.yml"}, "region": {"startLine": 60}}}]}, {"ruleId": "scanner-67c5f4784f82d27a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "133153775a76a4e0", "scanner": "scanner-primary", "fingerprint": "67c5f4784f82d27a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/recollect-for-scores.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3bc4d2dd9551c7e9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "06f0f92ae3a37e3d", "scanner": "scanner-primary", "fingerprint": "3bc4d2dd9551c7e9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/get-gpt-plan-review.yml"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-6186272a989a04f3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "53aafe6ea54ec1ea", "scanner": "scanner-primary", "fingerprint": "6186272a989a04f3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/get-ai-feedback.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-cb753fbb4a34cffe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f8a737bf12eb8bb", "scanner": "scanner-primary", "fingerprint": "cb753fbb4a34cffe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-commercial.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-cb753fbb4a34cffe", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "526fbde17be2c44a", "scanner": "scanner-primary", "fingerprint": "cb753fbb4a34cffe", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-commercial.yml"}, "region": {"startLine": 166}}}]}, {"ruleId": "scanner-dc6909a18805e19e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1c2bb85f8bbba350", "scanner": "scanner-primary", "fingerprint": "dc6909a18805e19e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-aggregators.yml"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-dc6909a18805e19e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "05d596c78566da03", "scanner": "scanner-primary", "fingerprint": "dc6909a18805e19e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-aggregators.yml"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-dc6909a18805e19e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1c2bb85f8bbba350", "scanner": "scanner-primary", "fingerprint": "dc6909a18805e19e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-aggregators.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-dc6909a18805e19e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "05d596c78566da03", "scanner": "scanner-primary", "fingerprint": "dc6909a18805e19e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-aggregators.yml"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-bc6ccfac12f2fce9", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3253493eff911b36", "scanner": "scanner-primary", "fingerprint": "bc6ccfac12f2fce9", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-aggregator-gap.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-123cb418b0a214b6", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4c0ef3776ba02a5b", "scanner": "scanner-primary", "fingerprint": "123cb418b0a214b6", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-cross-production-weekly.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-20e687ddf7932db8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "1101187b15769b80", "scanner": "scanner-primary", "fingerprint": "20e687ddf7932db8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-cross-production-weekly.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "991238f063aefc49", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "607daecec4adfb70", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "991238f063aefc49", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0988ee977f68ef5", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0988ee977f68ef5", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 206}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0988ee977f68ef5", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 228}}}]}, {"ruleId": "scanner-943cdee77d1a7a33", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d0988ee977f68ef5", "scanner": "scanner-primary", "fingerprint": "943cdee77d1a7a33", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 253}}}]}, {"ruleId": "scanner-9e08de1abf3b6c1b", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "43bc5cc7a7d4b3ad", "scanner": "scanner-primary", "fingerprint": "9e08de1abf3b6c1b", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/discover-historical-shows.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7366457c6b22674", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a17e36ca492f29aa", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7366457c6b22674", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 112}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a17e36ca492f29aa", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 132}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7366457c6b22674", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 168}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a17e36ca492f29aa", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 188}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e7366457c6b22674", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 235}}}]}, {"ruleId": "scanner-2aecf3b7b2694dbd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a17e36ca492f29aa", "scanner": "scanner-primary", "fingerprint": "2aecf3b7b2694dbd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 255}}}]}, {"ruleId": "scanner-7145a82e8760c71a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "0fffe369c41d9ecb", "scanner": "scanner-primary", "fingerprint": "7145a82e8760c71a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-dtli-show-score.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c9d505a4f82adf7f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5b3fe34006a6c0a6", "scanner": "scanner-primary", "fingerprint": "c9d505a4f82adf7f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-alltime-grosses.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-c9d505a4f82adf7f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "507a074a15d99607", "scanner": "scanner-primary", "fingerprint": "c9d505a4f82adf7f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-alltime-grosses.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-f0ac083251c2e0bc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a4449e4f553ff862", "scanner": "scanner-primary", "fingerprint": "f0ac083251c2e0bc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-social-pulse.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-2ac7683548257673", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "186288e0d3415f2f", "scanner": "scanner-primary", "fingerprint": "2ac7683548257673", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-social-pulse.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e5aa8b48075bbda9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e143f2ed3fac4412", "scanner": "scanner-primary", "fingerprint": "e5aa8b48075bbda9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-theater-tips.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-e5aa8b48075bbda9", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e8749de8d3e38461", "scanner": "scanner-primary", "fingerprint": "e5aa8b48075bbda9", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/generate-theater-tips.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-d851545ad9fff774", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "981ae86ad816bc05", "scanner": "scanner-primary", "fingerprint": "d851545ad9fff774", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-opening-dates.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-d851545ad9fff774", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "52b7cc9d281d2546", "scanner": "scanner-primary", "fingerprint": "d851545ad9fff774", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/audit-opening-dates.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-d4e806cd939ffb37", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d44d92481bbdb32", "scanner": "scanner-primary", "fingerprint": "d4e806cd939ffb37", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-demo.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-d4e806cd939ffb37", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "33e7d50f6916d02b", "scanner": "scanner-primary", "fingerprint": "d4e806cd939ffb37", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/vercel-demo.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-ab8714ac38b8590d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2e5fb5626a87a3f7", "scanner": "scanner-primary", "fingerprint": "ab8714ac38b8590d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-stagedoor.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-ab8714ac38b8590d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a7393933bd3ecff", "scanner": "scanner-primary", "fingerprint": "ab8714ac38b8590d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-stagedoor.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-06aa09540f8e4882", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2f3ded0bf2e28387", "scanner": "scanner-primary", "fingerprint": "06aa09540f8e4882", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-stagedoor.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-01662f5aa984103a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "30c9eb3d6bf7f930", "scanner": "scanner-primary", "fingerprint": "01662f5aa984103a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-geo-audit.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-01662f5aa984103a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5d93cedf71072bed", "scanner": "scanner-primary", "fingerprint": "01662f5aa984103a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/weekly-geo-audit.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3543cfdc52805c97", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56e6464be7cf6613", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 178}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19172e56fc028b70", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 197}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56e6464be7cf6613", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 335}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19172e56fc028b70", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 354}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "56e6464be7cf6613", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 423}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "19172e56fc028b70", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 438}}}]}, {"ruleId": "scanner-d9dc60f60336e098", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "889e02c9faf9e311", "scanner": "scanner-primary", "fingerprint": "d9dc60f60336e098", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 634}}}]}, {"ruleId": "scanner-1645a29d355b8914", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "2d7df57aa716e869", "scanner": "scanner-primary", "fingerprint": "1645a29d355b8914", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/gather-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54f4a2241536cd0c", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9055c8673e165639", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 71}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54f4a2241536cd0c", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9055c8673e165639", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 201}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5a48af072a7990b0", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 294}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "54f4a2241536cd0c", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 314}}}]}, {"ruleId": "scanner-e01f85c2b621f181", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9055c8673e165639", "scanner": "scanner-primary", "fingerprint": "e01f85c2b621f181", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 330}}}]}, {"ruleId": "scanner-4898583257e704d4", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "5e64929f2d707d01", "scanner": "scanner-primary", "fingerprint": "4898583257e704d4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/collect-free-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2311f6849c7fdfca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ba13a80d42ba1b13", "scanner": "scanner-primary", "fingerprint": "2311f6849c7fdfca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deep-research-commercial.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-2311f6849c7fdfca", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "93444ec841dea888", "scanner": "scanner-primary", "fingerprint": "2311f6849c7fdfca", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deep-research-commercial.yml"}, "region": {"startLine": 75}}}]}, {"ruleId": "scanner-44eae67a8ea5f1ed", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "382c07aa6839a916", "scanner": "scanner-primary", "fingerprint": "44eae67a8ea5f1ed", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/rediscover-urls.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-075351f18de902b3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d13b909f05ec72da", "scanner": "scanner-primary", "fingerprint": "075351f18de902b3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-theatre-reviews.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-075351f18de902b3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1d1253aa4432fdd1", "scanner": "scanner-primary", "fingerprint": "075351f18de902b3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-theatre-reviews.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-3e65c3631d7b0a5a", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "ee6e632f52a930ae", "scanner": "scanner-primary", "fingerprint": "3e65c3631d7b0a5a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/scrape-theatre-reviews.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fffcf6d8637d74f8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8f76c70ce38f930c", "scanner": "scanner-primary", "fingerprint": "fffcf6d8637d74f8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-lbo.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-fffcf6d8637d74f8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "605fc458a9c3951e", "scanner": "scanner-primary", "fingerprint": "fffcf6d8637d74f8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-lbo.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-bc7b843392a9a0fe", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "64e29709eee362eb", "scanner": "scanner-primary", "fingerprint": "bc7b843392a9a0fe", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/update-lbo.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-eb234ad64f9d9b48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aaa1057dea5d8a9c", "scanner": "scanner-primary", "fingerprint": "eb234ad64f9d9b48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-performance.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-eb234ad64f9d9b48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0e9bf9a9f0a3d27c", "scanner": "scanner-primary", "fingerprint": "eb234ad64f9d9b48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-performance.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-eb234ad64f9d9b48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "aaa1057dea5d8a9c", "scanner": "scanner-primary", "fingerprint": "eb234ad64f9d9b48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-performance.yml"}, "region": {"startLine": 93}}}]}, {"ruleId": "scanner-eb234ad64f9d9b48", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0e9bf9a9f0a3d27c", "scanner": "scanner-primary", "fingerprint": "eb234ad64f9d9b48", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/check-performance.yml"}, "region": {"startLine": 96}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9eea9754a61708be", "level": "note", "message": {"text": "Very large file: tests/unit/review-normalization.test.js (1278 lines)"}, "properties": {"repobilityId": "e7aa0f38df242ed6", "scanner": "scanner-primary", "fingerprint": "9eea9754a61708be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0fb51fc42da0c939", "level": "note", "message": {"text": "Very large file: scripts/enrich-awards-with-precursors.js (1079 lines)"}, "properties": {"repobilityId": "a8c7dbd192ed0b32", "scanner": "scanner-primary", "fingerprint": "0fb51fc42da0c939", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6befe6e898fbdab9", "level": "note", "message": {"text": "Very large file: scripts/scrape-bww-reviews.js (1400 lines)"}, "properties": {"repobilityId": "a4c07e02e37683fd", "scanner": "scanner-primary", "fingerprint": "6befe6e898fbdab9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6e315aa21b91c24d", "level": "note", "message": {"text": "Very large file: scripts/opening-night-poller.js (2087 lines)"}, "properties": {"repobilityId": "ddb06330b87b76ef", "scanner": "scanner-primary", "fingerprint": "6e315aa21b91c24d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1864c7c324d7dec4", "level": "note", "message": {"text": "Very large file: scripts/health-check.js (1865 lines)"}, "properties": {"repobilityId": "4cdc02126390df61", "scanner": "scanner-primary", "fingerprint": "1864c7c324d7dec4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-32883b7162378ba2", "level": "note", "message": {"text": "Very large file: scripts/test-opening-night-fixes.js (2194 lines)"}, "properties": {"repobilityId": "a8b45f5685367ef1", "scanner": "scanner-primary", "fingerprint": "32883b7162378ba2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3576619852401d17", "level": "note", "message": {"text": "Very large file: scripts/sweep-we-aggregators.js (1319 lines)"}, "properties": {"repobilityId": "d2789391669b5ae3", "scanner": "scanner-primary", "fingerprint": "3576619852401d17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-001b7cd98c92bdcf", "level": "note", "message": {"text": "Very large file: scripts/discover-new-shows.js (2293 lines)"}, "properties": {"repobilityId": "ea1e3f88847ae84b", "scanner": "scanner-primary", "fingerprint": "001b7cd98c92bdcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9f5d2cb3d1a9ba47", "level": "note", "message": {"text": "Very large file: scripts/update-commercial-data.js (2603 lines)"}, "properties": {"repobilityId": "be1315d79db74168", "scanner": "scanner-primary", "fingerprint": "9f5d2cb3d1a9ba47", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b9bcbd89c4dedc4", "level": "note", "message": {"text": "Very large file: scripts/scrape-lottery-rush.js (1947 lines)"}, "properties": {"repobilityId": "5e21a3b794b948e0", "scanner": "scanner-primary", "fingerprint": "9b9bcbd89c4dedc4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-03b60535d01aba96", "level": "note", "message": {"text": "Very large file: scripts/audit-touring-contamination.js (1105 lines)"}, "properties": {"repobilityId": "5cfffc12692bf811", "scanner": "scanner-primary", "fingerprint": "03b60535d01aba96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2dcab6b45d2ad8b5", "level": "note", "message": {"text": "Very large file: scripts/scrape-cast-changes.js (1885 lines)"}, "properties": {"repobilityId": "4498352d51e32f06", "scanner": "scanner-primary", "fingerprint": "2dcab6b45d2ad8b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1f651d6e2de5de8a", "level": "note", "message": {"text": "Very large file: scripts/gather-reviews.js (5265 lines)"}, "properties": {"repobilityId": "790529bc30850ffe", "scanner": "scanner-primary", "fingerprint": "1f651d6e2de5de8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-faa0ef649fbcec01", "level": "note", "message": {"text": "Very large file: scripts/validate-data.js (4655 lines)"}, "properties": {"repobilityId": "efa3488b6ff85c56", "scanner": "scanner-primary", "fingerprint": "faa0ef649fbcec01", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7ab7f2d184d57862", "level": "note", "message": {"text": "Very large file: scripts/rebuild-all-reviews.js (4791 lines)"}, "properties": {"repobilityId": "67c699d8b39000f2", "scanner": "scanner-primary", "fingerprint": "7ab7f2d184d57862", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-512960a993413da9", "level": "note", "message": {"text": "Very large file: scripts/fetch-show-images-auto.js (2792 lines)"}, "properties": {"repobilityId": "3fd92702c301d33b", "scanner": "scanner-primary", "fingerprint": "512960a993413da9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7e2c48066eba575a", "level": "note", "message": {"text": "Very large file: scripts/recover-wayback-reviews.js (1368 lines)"}, "properties": {"repobilityId": "d31c2205121029a2", "scanner": "scanner-primary", "fingerprint": "7e2c48066eba575a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-df5283e632855540", "level": "note", "message": {"text": "Very large file: scripts/classify-non-reviews.js (1221 lines)"}, "properties": {"repobilityId": "97929c9b0f300ceb", "scanner": "scanner-primary", "fingerprint": "df5283e632855540", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17de5288e0d92b2c", "level": "note", "message": {"text": "Very large file: scripts/collect-review-texts.js (6847 lines)"}, "properties": {"repobilityId": "3004fbcc95691374", "scanner": "scanner-primary", "fingerprint": "17de5288e0d92b2c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ac2e178309233965", "level": "note", "message": {"text": "Very large file: scripts/lib/show-matching.js (1322 lines)"}, "properties": {"repobilityId": "6928f960a9d6900e", "scanner": "scanner-primary", "fingerprint": "ac2e178309233965", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bfd870dfd941e972", "level": "note", "message": {"text": "Very large file: scripts/lib/score-extractors.js (1511 lines)"}, "properties": {"repobilityId": "cdd672dd02b2b44d", "scanner": "scanner-primary", "fingerprint": "bfd870dfd941e972", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-12fbbffe9dfc468b", "level": "note", "message": {"text": "Very large file: scripts/lib/site-search-discovery.js (1205 lines)"}, "properties": {"repobilityId": "5c897f2abd79ddce", "scanner": "scanner-primary", "fingerprint": "12fbbffe9dfc468b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-597936264b195ed8", "level": "note", "message": {"text": "Very large file: scripts/lib/review-normalization.js (1469 lines)"}, "properties": {"repobilityId": "272a36ff04b1e04b", "scanner": "scanner-primary", "fingerprint": "597936264b195ed8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fa4ba4c8a3dc7362", "level": "note", "message": {"text": "Very large file: scripts/lib/review-guards.js (2584 lines)"}, "properties": {"repobilityId": "5d6d157d640210de", "scanner": "scanner-primary", "fingerprint": "fa4ba4c8a3dc7362", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cc2eb60cae3ed673", "level": "note", "message": {"text": "Very large file: scripts/lib/content-quality.js (2747 lines)"}, "properties": {"repobilityId": "2970778fbd8dee0a", "scanner": "scanner-primary", "fingerprint": "cc2eb60cae3ed673", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c4dd0332d720dde8", "level": "note", "message": {"text": "Very large file: scripts/llm-scoring/index.ts (1789 lines)"}, "properties": {"repobilityId": "849b0ad47245f7be", "scanner": "scanner-primary", "fingerprint": "c4dd0332d720dde8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d410472e070653a", "level": "note", "message": {"text": "Very large file: scripts/newsletter/generate.mjs (2162 lines)"}, "properties": {"repobilityId": "dc15764407e86579", "scanner": "scanner-primary", "fingerprint": "4d410472e070653a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-15b1e899984ce58b", "level": "note", "message": {"text": "Very large file: src/config/browse-pages.ts (1113 lines)"}, "properties": {"repobilityId": "840a7119c7ba0f2b", "scanner": "scanner-primary", "fingerprint": "15b1e899984ce58b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a2aa910100284c64", "level": "note", "message": {"text": "Very large file: src/app/my-shows/MyShowsClient.tsx (1538 lines)"}, "properties": {"repobilityId": "b99831da016bf99f", "scanner": "scanner-primary", "fingerprint": "a2aa910100284c64", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1021456353cd895d", "level": "note", "message": {"text": "Very large file: src/app/beat-the-critics/BeatTheCriticsClient.tsx (852 lines)"}, "properties": {"repobilityId": "fe6a5a6498a8143a", "scanner": "scanner-primary", "fingerprint": "1021456353cd895d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-650d9f83af7e6cd7", "level": "note", "message": {"text": "Very large file: src/lib/data-tony-predictions.ts (2177 lines)"}, "properties": {"repobilityId": "870f1fb5b77743f6", "scanner": "scanner-primary", "fingerprint": "650d9f83af7e6cd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "d94812f153626a34", "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": "5a59b397a1edf629", "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": "b2d06801212dd4f7", "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": "a8397c0b01310410", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "fb7bddf4fdb5458c", "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": "247ae5c3090a8221", "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-5b170f97ef09ca5e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/skills/scraper-reference/skill.md"}, "properties": {"repobilityId": "56e06462f0fdeb19", "scanner": "scanner-primary", "fingerprint": "5b170f97ef09ca5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/skills/scraper-reference/skill.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-455f45929563e765", "level": "none", "message": {"text": "Commented-code block (5 lines) in next.config.js:22"}, "properties": {"repobilityId": "b3e4e6f7c19ffa1f", "scanner": "scanner-primary", "fingerprint": "455f45929563e765", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad2b16a6581faa67", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/is-includable-for-rebuild.test.mjs:267"}, "properties": {"repobilityId": "555659275e1a30c1", "scanner": "scanner-primary", "fingerprint": "ad2b16a6581faa67", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb5e8afc9f232705", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/unit/review-write-guard-topology.test.mjs:158"}, "properties": {"repobilityId": "eeaed604c02684ef", "scanner": "scanner-primary", "fingerprint": "cb5e8afc9f232705", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba26ce44a367d7a8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/playbill-verdict-discover.test.mjs:102"}, "properties": {"repobilityId": "e098efecff3886ea", "scanner": "scanner-primary", "fingerprint": "ba26ce44a367d7a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b98600bacc90b1d", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/is-likely-stale-wrong-show.test.mjs:118"}, "properties": {"repobilityId": "aad097dc46a60de6", "scanner": "scanner-primary", "fingerprint": "5b98600bacc90b1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d81cf989c4e398fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/wrong-production-rebuild-guard.test.mjs:122"}, "properties": {"repobilityId": "9f852ad8fcad7c25", "scanner": "scanner-primary", "fingerprint": "d81cf989c4e398fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e38029d2d89ae38", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/backfill-html-override-rename.test.mjs:24"}, "properties": {"repobilityId": "b79d3fecf3ae78fd", "scanner": "scanner-primary", "fingerprint": "6e38029d2d89ae38", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-70d73b877ac4d33d", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/collect-review-texts-rename-helper.test.mjs:119"}, "properties": {"repobilityId": "fb877517c1282eb5", "scanner": "scanner-primary", "fingerprint": "70d73b877ac4d33d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e45bf7921769271a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/url-content-sanity.test.mjs:223"}, "properties": {"repobilityId": "b4077f05bcf08d0c", "scanner": "scanner-primary", "fingerprint": "e45bf7921769271a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-206cc0b603b47cc0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/theater-scorecard-regression.test.mjs:43"}, "properties": {"repobilityId": "0813e542ebfb410b", "scanner": "scanner-primary", "fingerprint": "206cc0b603b47cc0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-969c43adf1e1ca03", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/dtli-slug-discover.test.mjs:67"}, "properties": {"repobilityId": "49b590a126162400", "scanner": "scanner-primary", "fingerprint": "969c43adf1e1ca03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e528462a465f08d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/review-normalization.test.js:920"}, "properties": {"repobilityId": "12829050f79af8e3", "scanner": "scanner-primary", "fingerprint": "9e528462a465f08d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abf6c3480c320b2d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/cv-stale-wrongproduction-selfheal.test.mjs:7"}, "properties": {"repobilityId": "3bad152cb1bf8cd7", "scanner": "scanner-primary", "fingerprint": "abf6c3480c320b2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-043e5c5308727826", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/compute-critic-score.test.mjs:73"}, "properties": {"repobilityId": "4cfac7cb726be81f", "scanner": "scanner-primary", "fingerprint": "043e5c5308727826", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ff420c8d7b11fbd", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/classify-market-routing-siblings.test.mjs:4"}, "properties": {"repobilityId": "e72efcc2c9b7ca0b", "scanner": "scanner-primary", "fingerprint": "7ff420c8d7b11fbd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-782d97547daf376c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/reconcile-broadcast-state.test.mjs:80"}, "properties": {"repobilityId": "9848af6c586d8857", "scanner": "scanner-primary", "fingerprint": "782d97547daf376c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0632c3be885d320b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/classify-market-routing-parity.test.mjs:14"}, "properties": {"repobilityId": "c81785afd28e315d", "scanner": "scanner-primary", "fingerprint": "0632c3be885d320b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cabb9f0b6d99ced", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/rss-single-author-defaultcritic.test.mjs:82"}, "properties": {"repobilityId": "811e42c2fcd25735", "scanner": "scanner-primary", "fingerprint": "3cabb9f0b6d99ced", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b952ce9a46e2555", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/orchestrator-guardian-dispatch.test.mjs:1"}, "properties": {"repobilityId": "2f04d2fdda209199", "scanner": "scanner-primary", "fingerprint": "9b952ce9a46e2555", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af4ac88e075265ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/content-quality-nyt-bot-stub.test.mjs:114"}, "properties": {"repobilityId": "c3c9225cdec25b04", "scanner": "scanner-primary", "fingerprint": "af4ac88e075265ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-845175b37d99506a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/tier-config-consistency.test.ts:91"}, "properties": {"repobilityId": "172e4d131c49144a", "scanner": "scanner-primary", "fingerprint": "845175b37d99506a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d9886fc08620b8c", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/url-or-title-guard.test.mjs:92"}, "properties": {"repobilityId": "a8caf99635d10b2b", "scanner": "scanner-primary", "fingerprint": "7d9886fc08620b8c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e215c4f169c37aaa", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/dom-article-extractor.test.mjs:128"}, "properties": {"repobilityId": "63ecfbfda5e1577f", "scanner": "scanner-primary", "fingerprint": "e215c4f169c37aaa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff63ec463ac0d6f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/tb-mailto-byline.test.mjs:94"}, "properties": {"repobilityId": "55ba162cd9a54560", "scanner": "scanner-primary", "fingerprint": "ff63ec463ac0d6f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2789dd1a679ec7c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/llm-scoring-stale-roundup-flag.test.mjs:7"}, "properties": {"repobilityId": "b15ca15e22ec4042", "scanner": "scanner-primary", "fingerprint": "c2789dd1a679ec7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36e904d07285e08d", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/engine.test.ts:115"}, "properties": {"repobilityId": "a98f13498f8232b1", "scanner": "scanner-primary", "fingerprint": "36e904d07285e08d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a90a6d9ee6ae3c10", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/ensemble.test.mjs:254"}, "properties": {"repobilityId": "d2bef2d799374546", "scanner": "scanner-primary", "fingerprint": "a90a6d9ee6ae3c10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c370b8aa676b7e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/verify-all-scored.test.mjs:27"}, "properties": {"repobilityId": "4feb56ad9a31b62b", "scanner": "scanner-primary", "fingerprint": "4c370b8aa676b7e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d13feeec7d91072", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/enrich-thumbs.test.mjs:140"}, "properties": {"repobilityId": "6ee47d5f3e4edb99", "scanner": "scanner-primary", "fingerprint": "5d13feeec7d91072", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c020e9ae7af9587", "level": "note", "message": {"text": "Legacy-named symbol `hoursOld` in tests/unit/rss-poller-state.test.mjs:13"}, "properties": {"repobilityId": "0a5af0452fb474d3", "scanner": "scanner-primary", "fingerprint": "2c020e9ae7af9587", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9e728931bda46ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/clear-failure-flags.test.mjs:192"}, "properties": {"repobilityId": "34c3d82b06f5d7fe", "scanner": "scanner-primary", "fingerprint": "e9e728931bda46ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ce50e04ceb4452c", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/article-boundary-dedupe.test.mjs:58"}, "properties": {"repobilityId": "2fa1d0ba04183b4c", "scanner": "scanner-primary", "fingerprint": "6ce50e04ceb4452c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0634256beae8b973", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/bww-roundup-extractor.test.mjs:21"}, "properties": {"repobilityId": "5c46752902be123e", "scanner": "scanner-primary", "fingerprint": "0634256beae8b973", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df1eddf4ffa9a07d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/outlet-logos-generated.test.mjs:1"}, "properties": {"repobilityId": "51a11e99f6e040b6", "scanner": "scanner-primary", "fingerprint": "df1eddf4ffa9a07d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0c3d104cd44f500", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/review-guards.test.mjs:158"}, "properties": {"repobilityId": "7e083a872876cd28", "scanner": "scanner-primary", "fingerprint": "a0c3d104cd44f500", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e9b27c758170fe5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/poller-idempotency.test.mjs:75"}, "properties": {"repobilityId": "aa80e46ba427e159", "scanner": "scanner-primary", "fingerprint": "e9b27c758170fe5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9ce26efb43cf33b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/cast-changes-filters.test.mjs:314"}, "properties": {"repobilityId": "35a5c1ccb9c5e155", "scanner": "scanner-primary", "fingerprint": "d9ce26efb43cf33b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b7c42818b97c60c", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/opening-night-bypass-corpus.test.mjs:3"}, "properties": {"repobilityId": "3585eb85a1c2ef1d", "scanner": "scanner-primary", "fingerprint": "9b7c42818b97c60c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b758445325a88d2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/ob-candidates-digest.test.mjs:1"}, "properties": {"repobilityId": "7c3ca3b2270b4efe", "scanner": "scanner-primary", "fingerprint": "b758445325a88d2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1916b7e31d13772", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/cast-extraction-guards.test.mjs:120"}, "properties": {"repobilityId": "1426975daaeade08", "scanner": "scanner-primary", "fingerprint": "d1916b7e31d13772", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3ffc45917583876", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/outlet-listing-poller.test.mjs:342"}, "properties": {"repobilityId": "a486fab60488ccd6", "scanner": "scanner-primary", "fingerprint": "d3ffc45917583876", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30788073344a83af", "level": "none", "message": {"text": "Commented-code block (10 lines) in tests/unit/awards-person-winner-pairing.test.mjs:96"}, "properties": {"repobilityId": "6b4e4c908a6c3eff", "scanner": "scanner-primary", "fingerprint": "30788073344a83af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aad6a7ee79c3df11", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/opening-night-checks-juan-a-ramirez-bypass.test.mjs:1"}, "properties": {"repobilityId": "07ff11e3681da34c", "scanner": "scanner-primary", "fingerprint": "aad6a7ee79c3df11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baf9d4f71196450e", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/season-stats-enhancement-filter.test.mjs:6"}, "properties": {"repobilityId": "82db56f99c1e99b9", "scanner": "scanner-primary", "fingerprint": "baf9d4f71196450e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b8fcb359e31c915", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/rebuild-helpers.test.mjs:107"}, "properties": {"repobilityId": "5130a669fb1aaf42", "scanner": "scanner-primary", "fingerprint": "4b8fcb359e31c915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b4279e2aaa51174", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/btc-send-picks.test.mjs:163"}, "properties": {"repobilityId": "638f50b13f9c4f42", "scanner": "scanner-primary", "fingerprint": "4b4279e2aaa51174", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c7a4f00e56e49627", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/regression-guards.test.mjs:58"}, "properties": {"repobilityId": "f4bdc0f72c1f92b8", "scanner": "scanner-primary", "fingerprint": "c7a4f00e56e49627", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ba0a0da8bbebf31", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/cast-changes-real-data.test.mjs:97"}, "properties": {"repobilityId": "f5047a52f1132fba", "scanner": "scanner-primary", "fingerprint": "6ba0a0da8bbebf31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a7f99232e633160", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/promote-dedup-jaccard.test.mjs:1"}, "properties": {"repobilityId": "a920abd7273c4b29", "scanner": "scanner-primary", "fingerprint": "9a7f99232e633160", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b715d71cdf0fa929", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/serp-defer-iterations.test.mjs:85"}, "properties": {"repobilityId": "13cab6994d580457", "scanner": "scanner-primary", "fingerprint": "b715d71cdf0fa929", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7a3b9b627362fef6", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/multi-critic-serp.test.mjs:270"}, "properties": {"repobilityId": "c4c912312ded362a", "scanner": "scanner-primary", "fingerprint": "7a3b9b627362fef6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21ceee04f84acd7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/fantasy-validate-picks.test.ts:77"}, "properties": {"repobilityId": "c64a2dd35df74fca", "scanner": "scanner-primary", "fingerprint": "21ceee04f84acd7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f44f444f00fd6e4a", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/manual-content-tier-survives-reclassify.test.mjs:1"}, "properties": {"repobilityId": "b8b393296c7b2dd1", "scanner": "scanner-primary", "fingerprint": "f44f444f00fd6e4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f6ca4f3350e724e", "level": "note", "message": {"text": "Legacy-named symbol `onlyOld` in tests/unit/long-runner-registry.test.mjs:139"}, "properties": {"repobilityId": "ac8b3923542e4746", "scanner": "scanner-primary", "fingerprint": "4f6ca4f3350e724e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f0795679a627eb40", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/pending-promote-validation.test.mjs:36"}, "properties": {"repobilityId": "a494f4a4baf46dbc", "scanner": "scanner-primary", "fingerprint": "f0795679a627eb40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-240e679106583a44", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/unit/tony-deny-list.test.mjs:28"}, "properties": {"repobilityId": "9d86210b3447e4b2", "scanner": "scanner-primary", "fingerprint": "240e679106583a44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5f29a9831ea53c2", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/bww-roundup-method2-fallthrough.test.mjs:34"}, "properties": {"repobilityId": "f746bf439252129b", "scanner": "scanner-primary", "fingerprint": "b5f29a9831ea53c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbd9f48b5a6cfcb3", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/cast-changes-filters-parity.test.ts:6"}, "properties": {"repobilityId": "3b5126f8bd44dea7", "scanner": "scanner-primary", "fingerprint": "dbd9f48b5a6cfcb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-615840bb288cb815", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/review-file-writer-roundup-autoflag.test.mjs:4"}, "properties": {"repobilityId": "95971b4b90fbef33", "scanner": "scanner-primary", "fingerprint": "615840bb288cb815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72babd2e22a30627", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/stage-extractor.test.mjs:61"}, "properties": {"repobilityId": "8e5ed79330d87655", "scanner": "scanner-primary", "fingerprint": "72babd2e22a30627", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb9185ea50031d05", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/content-quality-wsj-paywall-gate.test.mjs:43"}, "properties": {"repobilityId": "73aa255e70a8656c", "scanner": "scanner-primary", "fingerprint": "fb9185ea50031d05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a267364206c27cb0", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/bulk-import-preflight.test.mjs:106"}, "properties": {"repobilityId": "ccf488b97a49249e", "scanner": "scanner-primary", "fingerprint": "a267364206c27cb0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f7d987f1c86659b", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/show-dedup-slug-prefix.test.mjs:5"}, "properties": {"repobilityId": "166fa2f3dd3b0d9c", "scanner": "scanner-primary", "fingerprint": "8f7d987f1c86659b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fad6db8b16e0a448", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/bww-roundup-multi-critic.test.mjs:114"}, "properties": {"repobilityId": "b4a89693339eef31", "scanner": "scanner-primary", "fingerprint": "fad6db8b16e0a448", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ebc747550fc57be", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/review-write-guard.test.mjs:115"}, "properties": {"repobilityId": "b516fd1a6a1c0446", "scanner": "scanner-primary", "fingerprint": "7ebc747550fc57be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af1780180a606773", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/biz-dashboard.spec.ts:5"}, "properties": {"repobilityId": "ec83329544dd9e54", "scanner": "scanner-primary", "fingerprint": "af1780180a606773", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f716f9a1b50d0628", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/e2e/my-shows-mock.spec.ts:486"}, "properties": {"repobilityId": "7c5b092225f06b93", "scanner": "scanner-primary", "fingerprint": "f716f9a1b50d0628", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d129a3e8454eedb0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/e2e/tony-nominees-row-height.spec.ts:34"}, "properties": {"repobilityId": "cec33bcd34824913", "scanner": "scanner-primary", "fingerprint": "d129a3e8454eedb0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4ca7df9c35144edd", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/e2e/beat-the-critics.spec.ts:19"}, "properties": {"repobilityId": "a1b666af5e7c2f9a", "scanner": "scanner-primary", "fingerprint": "4ca7df9c35144edd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d77aabc4dfa34cee", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/enrich-awards-with-precursors.js:59"}, "properties": {"repobilityId": "029b286a9af606c7", "scanner": "scanner-primary", "fingerprint": "d77aabc4dfa34cee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-845c787868a08848", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-cross-production.js:17"}, "properties": {"repobilityId": "cf0361448076d16e", "scanner": "scanner-primary", "fingerprint": "845c787868a08848", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df6fe80c9b457466", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/scrape-bww-reviews.js:436"}, "properties": {"repobilityId": "c8f279af1e0507d2", "scanner": "scanner-primary", "fingerprint": "df6fe80c9b457466", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e5a92ace0af9496", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scrape-mezzanine-audience.js:397"}, "properties": {"repobilityId": "da825bd9e56adda7", "scanner": "scanner-primary", "fingerprint": "8e5a92ace0af9496", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b81fd8aca72e8f6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-polymarket-tony-history.ts:51"}, "properties": {"repobilityId": "71f51fc1b77fe1a6", "scanner": "scanner-primary", "fingerprint": "b81fd8aca72e8f6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5782b190d06b399", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/scrape-stagedoor-critics.js:209"}, "properties": {"repobilityId": "403fb6899c083b22", "scanner": "scanner-primary", "fingerprint": "a5782b190d06b399", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-078cd3e07ddd768c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/auto-fix-show-data.js:144"}, "properties": {"repobilityId": "de0231f864d703bf", "scanner": "scanner-primary", "fingerprint": "078cd3e07ddd768c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d657396d1f0a8d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/submit-google-indexing.js:116"}, "properties": {"repobilityId": "68d21a48a19b55bb", "scanner": "scanner-primary", "fingerprint": "c8d657396d1f0a8d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e2bd4744800dff47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-browserbase-login.js:36"}, "properties": {"repobilityId": "a668d92b8f4e3503", "scanner": "scanner-primary", "fingerprint": "e2bd4744800dff47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4de5aee8d588c137", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/opening-night-readiness.js:163"}, "properties": {"repobilityId": "e971d02fd99820a3", "scanner": "scanner-primary", "fingerprint": "4de5aee8d588c137", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbc4cbbb5cec34b2", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/apply-commercial-pending.js:148"}, "properties": {"repobilityId": "10b20696c6d83997", "scanner": "scanner-primary", "fingerprint": "dbc4cbbb5cec34b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80f99f8a43c7a99f", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-aggregator-coverage.js:263"}, "properties": {"repobilityId": "4c1f88e3905ccde4", "scanner": "scanner-primary", "fingerprint": "80f99f8a43c7a99f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47430c9f662f88dd", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/build-actor-slugs-manifest.js:5"}, "properties": {"repobilityId": "0d6afb9f6123ec97", "scanner": "scanner-primary", "fingerprint": "47430c9f662f88dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9f710ecf554cc8f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fetch-actor-images.js:62"}, "properties": {"repobilityId": "5f66a779543bf4e5", "scanner": "scanner-primary", "fingerprint": "f9f710ecf554cc8f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7131271af4de5ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/deploy-now.js:52"}, "properties": {"repobilityId": "8e26e7ed68be05d8", "scanner": "scanner-primary", "fingerprint": "c7131271af4de5ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c28729de51a3e7f5", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/opening-night-checklist.js:159"}, "properties": {"repobilityId": "6024269c1d80dbd5", "scanner": "scanner-primary", "fingerprint": "c28729de51a3e7f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6154c0c806f780d7", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/extract-dtli-reviews.js:142"}, "properties": {"repobilityId": "bf4be8231bce81fb", "scanner": "scanner-primary", "fingerprint": "6154c0c806f780d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9865dd4e7e515d40", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-critic-outlets.js:54"}, "properties": {"repobilityId": "e68260a85cc96202", "scanner": "scanner-primary", "fingerprint": "9865dd4e7e515d40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-459b08dfe2822dde", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-duplicate-of-url-mismatch.js:32"}, "properties": {"repobilityId": "2a95df04840ebb36", "scanner": "scanner-primary", "fingerprint": "459b08dfe2822dde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcf71e9b8d3c7d8e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-production-flags.js:129"}, "properties": {"repobilityId": "51be0b6de7ba6fd9", "scanner": "scanner-primary", "fingerprint": "fcf71e9b8d3c7d8e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7444f01825900b6b", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/notion-action-poll.js:339"}, "properties": {"repobilityId": "eed0753f1fc6593b", "scanner": "scanner-primary", "fingerprint": "7444f01825900b6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3de6240349bdcba", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-grosses.ts:171"}, "properties": {"repobilityId": "66170490d353baf6", "scanner": "scanner-primary", "fingerprint": "c3de6240349bdcba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c77648254ff3a599", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/generate-mobile-show-details.js:31"}, "properties": {"repobilityId": "211f258487517414", "scanner": "scanner-primary", "fingerprint": "c77648254ff3a599", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e61131ec03231e44", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/sync-followers.js:80"}, "properties": {"repobilityId": "8a719a915c3f9c47", "scanner": "scanner-primary", "fingerprint": "e61131ec03231e44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c90b791470842b74", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-show-director-consensus.js:153"}, "properties": {"repobilityId": "9243ca7b3d5d32be", "scanner": "scanner-primary", "fingerprint": "c90b791470842b74", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17e1577d96655a45", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-review-contamination.js:105"}, "properties": {"repobilityId": "3a13f11c31b210a0", "scanner": "scanner-primary", "fingerprint": "17e1577d96655a45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d64101efb8cfac24", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-seo-health.js:80"}, "properties": {"repobilityId": "1732e8f3cd5df1c5", "scanner": "scanner-primary", "fingerprint": "d64101efb8cfac24", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f62af1686cf6dab", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate-mobile-data.js:250"}, "properties": {"repobilityId": "97f23ad9bfd84c09", "scanner": "scanner-primary", "fingerprint": "4f62af1686cf6dab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b236f6a8ab0a9349", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/comprehensive-score-audit.js:25"}, "properties": {"repobilityId": "b0fa0f8fe4e10024", "scanner": "scanner-primary", "fingerprint": "b236f6a8ab0a9349", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5005b3fbad77905e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/migrate-outlet-id-canonicalization.js:31"}, "properties": {"repobilityId": "833e79b55ab4417e", "scanner": "scanner-primary", "fingerprint": "5005b3fbad77905e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5891b6690ab090b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/btc-smoke-test.js:49"}, "properties": {"repobilityId": "95101a71c0b934bc", "scanner": "scanner-primary", "fingerprint": "5891b6690ab090b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-70568a4e497542a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/batch-commercial-research.js:531"}, "properties": {"repobilityId": "60af4ab69c828a4b", "scanner": "scanner-primary", "fingerprint": "70568a4e497542a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90c6adde30da895a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/paywall-browser-login.js:93"}, "properties": {"repobilityId": "6bb527ab78a29453", "scanner": "scanner-primary", "fingerprint": "90c6adde30da895a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2daf67972901f2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-closing-dates.js:61"}, "properties": {"repobilityId": "f3b7dcfa37f5e5ce", "scanner": "scanner-primary", "fingerprint": "f2daf67972901f2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6de6e89533d2244f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/audit-regex-patterns.js:90"}, "properties": {"repobilityId": "861e2e22b74dda82", "scanner": "scanner-primary", "fingerprint": "6de6e89533d2244f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-688ab0232a775f12", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/deep-research-commercial.js:560"}, "properties": {"repobilityId": "9bfa72aeebec7ed3", "scanner": "scanner-primary", "fingerprint": "688ab0232a775f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8fc1353d341ef2f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/validate-stubhub-urls.js:202"}, "properties": {"repobilityId": "5b0b3248c40031da", "scanner": "scanner-primary", "fingerprint": "e8fc1353d341ef2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f412cf4409fd1714", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-tony-awards.js:257"}, "properties": {"repobilityId": "090c42a2e98d36c2", "scanner": "scanner-primary", "fingerprint": "f412cf4409fd1714", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9ca76fc2d8485a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-post-rebase-survival.js:74"}, "properties": {"repobilityId": "30825f6bc96fccd7", "scanner": "scanner-primary", "fingerprint": "d9ca76fc2d8485a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4bbb718ae42f853", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/opening-night-poller.js:223"}, "properties": {"repobilityId": "8bf8d31a31cd0918", "scanner": "scanner-primary", "fingerprint": "a4bbb718ae42f853", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b02b0fa3b0d6d4e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-pulitzer.js:41"}, "properties": {"repobilityId": "fa2242672dfde832", "scanner": "scanner-primary", "fingerprint": "7b02b0fa3b0d6d4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2cc2257f5479759f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate-status-page.js:68"}, "properties": {"repobilityId": "58cda472f16412f1", "scanner": "scanner-primary", "fingerprint": "2cc2257f5479759f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-724dc719019d6adf", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-show-score-audience.js:87"}, "properties": {"repobilityId": "5032faa445e427df", "scanner": "scanner-primary", "fingerprint": "724dc719019d6adf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-541124efec975171", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/analyze-ab-test.js:139"}, "properties": {"repobilityId": "1479072df53b5df9", "scanner": "scanner-primary", "fingerprint": "541124efec975171", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-120b16fb1fa5129e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/analyze-ab-test.js:79"}, "properties": {"repobilityId": "be7d8f03ff0baecf", "scanner": "scanner-primary", "fingerprint": "120b16fb1fa5129e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3301da0b6864be80", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lint-design-tokens.js:52"}, "properties": {"repobilityId": "0bcc7a39e7d858b2", "scanner": "scanner-primary", "fingerprint": "3301da0b6864be80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b092fb9c0447bdf9", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in scripts/health-check.js:606"}, "properties": {"repobilityId": "78a0bfe95af86f6b", "scanner": "scanner-primary", "fingerprint": "b092fb9c0447bdf9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-eb53b23aff9dad1c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/health-check.js:54"}, "properties": {"repobilityId": "9bf0396d8bb71f9b", "scanner": "scanner-primary", "fingerprint": "eb53b23aff9dad1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-218bd7cbbd1b0991", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-opening-night-fixes.js:29"}, "properties": {"repobilityId": "e0fad06408b5ce42", "scanner": "scanner-primary", "fingerprint": "218bd7cbbd1b0991", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-421dbed952d56e35", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/get-ai-feedback.js:45"}, "properties": {"repobilityId": "759fbe8af15105b9", "scanner": "scanner-primary", "fingerprint": "421dbed952d56e35", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ad1a14b963bf343b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/strip-stale-single-model-scores.js:84"}, "properties": {"repobilityId": "4783475598681f34", "scanner": "scanner-primary", "fingerprint": "ad1a14b963bf343b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d81910e2091773c0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/recover-login-page-reviews.js:249"}, "properties": {"repobilityId": "9c4dc879d88c3d05", "scanner": "scanner-primary", "fingerprint": "d81910e2091773c0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-63763315424ba78a", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/replay-pending-bylines.js:32"}, "properties": {"repobilityId": "8ebb646d5bc4316c", "scanner": "scanner-primary", "fingerprint": "63763315424ba78a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d53394681460bc3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/apply-image-cleanup.js:27"}, "properties": {"repobilityId": "dcf99605954cdf26", "scanner": "scanner-primary", "fingerprint": "d53394681460bc3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06428508a578d3ff", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/fetch-social-pulse.js:44"}, "properties": {"repobilityId": "3521e109a49b15c9", "scanner": "scanner-primary", "fingerprint": "06428508a578d3ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b2bd2b074ed4aab", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/scrape-recoupment-announcements.js:104"}, "properties": {"repobilityId": "d83c41358c55d7a2", "scanner": "scanner-primary", "fingerprint": "0b2bd2b074ed4aab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90f2bab6b407a852", "level": "note", "message": {"text": "Legacy-named symbol `expectedLegacy` in scripts/validate-ab-test.js:216"}, "properties": {"repobilityId": "864816508acfddb4", "scanner": "scanner-primary", "fingerprint": "90f2bab6b407a852", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe392c271e54e362", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/validate-ab-test.js:114"}, "properties": {"repobilityId": "25d4a7ba2ca4ae9c", "scanner": "scanner-primary", "fingerprint": "fe392c271e54e362", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2645f6657519ac2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/validate-ab-test.js:38"}, "properties": {"repobilityId": "0822fcec752a65da", "scanner": "scanner-primary", "fingerprint": "b2645f6657519ac2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a89c554debc77985", "level": "note", "message": {"text": "Legacy-named symbol `closedOld` in scripts/test-serp-retry-guard.js:62"}, "properties": {"repobilityId": "9586ddde617d92e8", "scanner": "scanner-primary", "fingerprint": "a89c554debc77985", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58b41e5fc2abd8f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/build-cast-manifest.js:51"}, "properties": {"repobilityId": "ba1eb675ef7398c3", "scanner": "scanner-primary", "fingerprint": "58b41e5fc2abd8f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe0d08561c93989e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/sweep-we-aggregators.js:121"}, "properties": {"repobilityId": "e1e02b4a4f5bd81c", "scanner": "scanner-primary", "fingerprint": "fe0d08561c93989e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b5b6e9b227db257", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/sweep-we-aggregators.js:766"}, "properties": {"repobilityId": "73deb7845da027e0", "scanner": "scanner-primary", "fingerprint": "5b5b6e9b227db257", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ccd69a577e0e4556", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/discover-new-shows.js:36"}, "properties": {"repobilityId": "0114313c2e9e3daa", "scanner": "scanner-primary", "fingerprint": "ccd69a577e0e4556", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4817086fb57de726", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-new-shows.js:864"}, "properties": {"repobilityId": "2e6e5fe5d475ba4f", "scanner": "scanner-primary", "fingerprint": "4817086fb57de726", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6aac898af01f3754", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-temporal-override-regression.js:71"}, "properties": {"repobilityId": "4184b4270e505fc7", "scanner": "scanner-primary", "fingerprint": "6aac898af01f3754", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bbfc3e53be939e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-london-box-office-roundups.js:382"}, "properties": {"repobilityId": "a08f54303c9898ac", "scanner": "scanner-primary", "fingerprint": "1bbfc3e53be939e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-621a94fbf4b353b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/build-slug-redirects.js:55"}, "properties": {"repobilityId": "e72421be04566d37", "scanner": "scanner-primary", "fingerprint": "621a94fbf4b353b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c224c1b64d4a527", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/visual-qa.mjs:4"}, "properties": {"repobilityId": "c05c569856c2d110", "scanner": "scanner-primary", "fingerprint": "0c224c1b64d4a527", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4afb0a70b49e4131", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/visual-qa.mjs:449"}, "properties": {"repobilityId": "e3ccb4f769f099c7", "scanner": "scanner-primary", "fingerprint": "4afb0a70b49e4131", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7ca9b26705ed8e3b", "level": "note", "message": {"text": "Legacy-named symbol `nLegacy` in scripts/export-cookies.js:186"}, "properties": {"repobilityId": "df3b6f7c909caa3a", "scanner": "scanner-primary", "fingerprint": "7ca9b26705ed8e3b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-babfeb4c4e53df25", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/enrich-west-end-dates.js:455"}, "properties": {"repobilityId": "b30facc4b25f3e1d", "scanner": "scanner-primary", "fingerprint": "babfeb4c4e53df25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-494ce80e5ba785ab", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/enrich-west-end-dates.js:69"}, "properties": {"repobilityId": "d8c3868e2e4175f4", "scanner": "scanner-primary", "fingerprint": "494ce80e5ba785ab", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ffa83a968f8d7628", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/fix-remaining-domain-mismatches.js:133"}, "properties": {"repobilityId": "b703602326d66022", "scanner": "scanner-primary", "fingerprint": "ffa83a968f8d7628", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffdb94eb671b6ffd", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/audit-playwright-evaluate-click.js:38"}, "properties": {"repobilityId": "30bddc6692d935ae", "scanner": "scanner-primary", "fingerprint": "ffdb94eb671b6ffd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e34ff769f0697906", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/send-btc-results.js:177"}, "properties": {"repobilityId": "ef103e1f2dd6d998", "scanner": "scanner-primary", "fingerprint": "e34ff769f0697906", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f9eaddf9018856d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/test-fantasy-api.js:61"}, "properties": {"repobilityId": "f2e0204ee99d89d9", "scanner": "scanner-primary", "fingerprint": "7f9eaddf9018856d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f5c9289acd9dc8d5", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/update-show-status.js:586"}, "properties": {"repobilityId": "0c7a2669c44d2d45", "scanner": "scanner-primary", "fingerprint": "f5c9289acd9dc8d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f9d40d25449d105", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/ingest-manual-review.js:184"}, "properties": {"repobilityId": "6e9c6358f5f9cc3a", "scanner": "scanner-primary", "fingerprint": "0f9d40d25449d105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a7e66c13c262061c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-lottery-rush.js:1765"}, "properties": {"repobilityId": "26df307151befaa0", "scanner": "scanner-primary", "fingerprint": "a7e66c13c262061c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b9fb4f636e7d5d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-lottery-rush.js:485"}, "properties": {"repobilityId": "f5a2bbfa6677d539", "scanner": "scanner-primary", "fingerprint": "4b9fb4f636e7d5d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dcb2280b34ff6628", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/discover-outlet-reviews-serp.js:25"}, "properties": {"repobilityId": "9021378727e66781", "scanner": "scanner-primary", "fingerprint": "dcb2280b34ff6628", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-741e9a302674f69a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/poll-trade-press-rss.js:66"}, "properties": {"repobilityId": "5bb61ce054ecf76b", "scanner": "scanner-primary", "fingerprint": "741e9a302674f69a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce0a6475f234bce4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/apply-slug-misroute-whitelist.js:67"}, "properties": {"repobilityId": "c0a252e1ce570fe7", "scanner": "scanner-primary", "fingerprint": "ce0a6475f234bce4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4b57468cf5ab8c3", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/analyze-rebuild-drops.js:34"}, "properties": {"repobilityId": "7a1822b87fdb5e51", "scanner": "scanner-primary", "fingerprint": "e4b57468cf5ab8c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe167bdb606f8c2a", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/audit-slug-match-routing.js:160"}, "properties": {"repobilityId": "ca689fa8862cad42", "scanner": "scanner-primary", "fingerprint": "fe167bdb606f8c2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0662f15071731bb1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/posthog-weekly-insights.js:98"}, "properties": {"repobilityId": "d8301c3bed08d87c", "scanner": "scanner-primary", "fingerprint": "0662f15071731bb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b392d28a76eff946", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/cleanup-phantom-outlets.js:130"}, "properties": {"repobilityId": "ca0d5d65ddfe37ff", "scanner": "scanner-primary", "fingerprint": "b392d28a76eff946", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77e9c34ed1d8c9b5", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/fetch-aggregator-pages.ts:143"}, "properties": {"repobilityId": "0c9f45c76c1b9915", "scanner": "scanner-primary", "fingerprint": "77e9c34ed1d8c9b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e059df0ffbf90400", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scrape-alltime.ts:397"}, "properties": {"repobilityId": "9343629b80f4d934", "scanner": "scanner-primary", "fingerprint": "e059df0ffbf90400", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef701ce0173c10a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/discover-historical-shows.js:241"}, "properties": {"repobilityId": "c3ad464b63a64b3e", "scanner": "scanner-primary", "fingerprint": "ef701ce0173c10a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d11e7420990e1055", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-outlet-from-sitemap.js:204"}, "properties": {"repobilityId": "a71bb46c9a3cf417", "scanner": "scanner-primary", "fingerprint": "d11e7420990e1055", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-db5a3b3a52e89708", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/extract-embedded-grades.js:31"}, "properties": {"repobilityId": "0d32bc20c5024548", "scanner": "scanner-primary", "fingerprint": "db5a3b3a52e89708", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c849453ff26db7d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/process-feedback.js:388"}, "properties": {"repobilityId": "95557b909fe281bd", "scanner": "scanner-primary", "fingerprint": "c849453ff26db7d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b03fa078b511e6f", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/notion-brain.js:196"}, "properties": {"repobilityId": "795f066c73815039", "scanner": "scanner-primary", "fingerprint": "2b03fa078b511e6f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8a0e4bf2218f87a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/clear-stale-wrong-show-flags.js:116"}, "properties": {"repobilityId": "0c8f4c4599c61276", "scanner": "scanner-primary", "fingerprint": "f8a0e4bf2218f87a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e8cb2031fdbf9f66", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scrape-cast-changes.js:324"}, "properties": {"repobilityId": "b2692bee70d11699", "scanner": "scanner-primary", "fingerprint": "e8cb2031fdbf9f66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b58d400cf83fb35d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/delete-misroute-orphans.js:36"}, "properties": {"repobilityId": "8945aac240e657c5", "scanner": "scanner-primary", "fingerprint": "b58d400cf83fb35d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9a3f4a67525d434", "level": "note", "message": {"text": "Legacy-named symbol `closedOld` in scripts/unabandon-non-serp-cycles.js:17"}, "properties": {"repobilityId": "0fd1dc38cb62d169", "scanner": "scanner-primary", "fingerprint": "f9a3f4a67525d434", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cfd2ed6c2063bdaf", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-tony-loso.ts:91"}, "properties": {"repobilityId": "d68b58045826f5a4", "scanner": "scanner-primary", "fingerprint": "cfd2ed6c2063bdaf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a115071df483d0ba", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/gather-reviews.js:424"}, "properties": {"repobilityId": "2f24ec9f2ca7a142", "scanner": "scanner-primary", "fingerprint": "a115071df483d0ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a0a49600ca8093b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/gather-reviews.js:673"}, "properties": {"repobilityId": "79b12a3e74af7c02", "scanner": "scanner-primary", "fingerprint": "8a0a49600ca8093b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-53a27dba2294f65e", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/extract-pull-quotes.js:128"}, "properties": {"repobilityId": "98c997adf3c8227d", "scanner": "scanner-primary", "fingerprint": "53a27dba2294f65e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8c4ccf43c91d0f7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/verify-gd-snapshot-timing.js:48"}, "properties": {"repobilityId": "28083390e232cc40", "scanner": "scanner-primary", "fingerprint": "d8c4ccf43c91d0f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48695af98a87d1cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-image-aspect.js:46"}, "properties": {"repobilityId": "ed7a352c24a91a00", "scanner": "scanner-primary", "fingerprint": "48695af98a87d1cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-771a1a1273e7e313", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-playbill-verdict.js:122"}, "properties": {"repobilityId": "844e6b4bfd30ae0c", "scanner": "scanner-primary", "fingerprint": "771a1a1273e7e313", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-86111896b03fe67b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts-v2.js:242"}, "properties": {"repobilityId": "b71fdc2272f21eba", "scanner": "scanner-primary", "fingerprint": "86111896b03fe67b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-109b466f01368741", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/fantasy-weekly-email.js:188"}, "properties": {"repobilityId": "e9fc95af7000da11", "scanner": "scanner-primary", "fingerprint": "109b466f01368741", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f3793e17c920adcb", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/check-opening-night-readiness.js:178"}, "properties": {"repobilityId": "f8ee1c3ec9a9bc0e", "scanner": "scanner-primary", "fingerprint": "f3793e17c920adcb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5751d890f2f0926", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/validate-show-venue.js:171"}, "properties": {"repobilityId": "1d9ffcc885de5d62", "scanner": "scanner-primary", "fingerprint": "c5751d890f2f0926", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-834678de8552c6bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-commercial-data.js:44"}, "properties": {"repobilityId": "02c5bb9f65fc4f07", "scanner": "scanner-primary", "fingerprint": "834678de8552c6bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b86b94668485362", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-obie.js:99"}, "properties": {"repobilityId": "ab0d8a6ca44bb692", "scanner": "scanner-primary", "fingerprint": "4b86b94668485362", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-826b372eb0dccf68", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-images-llm.js:70"}, "properties": {"repobilityId": "c2e6187f4de7d632", "scanner": "scanner-primary", "fingerprint": "826b372eb0dccf68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f295d50fd09d93e", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/audit-show-review-gap.js:83"}, "properties": {"repobilityId": "ad84b1bf2639f618", "scanner": "scanner-primary", "fingerprint": "1f295d50fd09d93e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dcefc562bbba971", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-kalshi-tony-history.ts:45"}, "properties": {"repobilityId": "5d8d27f14926e8ca", "scanner": "scanner-primary", "fingerprint": "2dcefc562bbba971", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cd82e0dbabf064c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/retry-pending-scores.js:115"}, "properties": {"repobilityId": "75435e0302a41872", "scanner": "scanner-primary", "fingerprint": "9cd82e0dbabf064c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac26128bd295b662", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/outlet-listing-poller.js:76"}, "properties": {"repobilityId": "0c690e5f1b3824c7", "scanner": "scanner-primary", "fingerprint": "ac26128bd295b662", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8f8e69748a34189", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-gold-derby-tonys.js:7"}, "properties": {"repobilityId": "83ce1343fbc8e554", "scanner": "scanner-primary", "fingerprint": "e8f8e69748a34189", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3b1cea8881efb0b3", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/validate-market-expansion.js:148"}, "properties": {"repobilityId": "b41ca5b19c286dd8", "scanner": "scanner-primary", "fingerprint": "3b1cea8881efb0b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1519f39ea230a2f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/generate-locks-index.js:16"}, "properties": {"repobilityId": "5dd4379f527b907e", "scanner": "scanner-primary", "fingerprint": "1519f39ea230a2f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6851feb80d7468b", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/promote-ob-venue-candidates.js:100"}, "properties": {"repobilityId": "1e6478087e936be1", "scanner": "scanner-primary", "fingerprint": "d6851feb80d7468b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5fbc512c29883af", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/newspapers-com-extract.js:892"}, "properties": {"repobilityId": "4239e6ce2f77c9ee", "scanner": "scanner-primary", "fingerprint": "f5fbc512c29883af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7e504c9e17a7cf65", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newspapers-com-extract.js:907"}, "properties": {"repobilityId": "138636017d65c32a", "scanner": "scanner-primary", "fingerprint": "7e504c9e17a7cf65", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-22a7e0966f38322e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-unknown-critics.js:125"}, "properties": {"repobilityId": "3361b0bbc487950d", "scanner": "scanner-primary", "fingerprint": "22a7e0966f38322e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-66cc20de42a58d12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-all-reviews.js:71"}, "properties": {"repobilityId": "44bce0c18a4a20f4", "scanner": "scanner-primary", "fingerprint": "66cc20de42a58d12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3de3950590a50cc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-critic-coverage.js:174"}, "properties": {"repobilityId": "e93e20d9db222258", "scanner": "scanner-primary", "fingerprint": "e3de3950590a50cc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e7355ec9d2654c73", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/enrich-off-broadway-dates.js:143"}, "properties": {"repobilityId": "86c16d0920701f99", "scanner": "scanner-primary", "fingerprint": "e7355ec9d2654c73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f6fdd7793cadf33", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/send-opening-night-broadcast.js:50"}, "properties": {"repobilityId": "cd69ce23e898c98c", "scanner": "scanner-primary", "fingerprint": "1f6fdd7793cadf33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-098891e47170a5ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-nydcc.js:80"}, "properties": {"repobilityId": "619b6ffc44cd7466", "scanner": "scanner-primary", "fingerprint": "098891e47170a5ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa490bded862d6e5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-nydcc.js:72"}, "properties": {"repobilityId": "61496907d7d54064", "scanner": "scanner-primary", "fingerprint": "fa490bded862d6e5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e6f8f854560dc998", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-wrong-production.js:52"}, "properties": {"repobilityId": "68df518dc4f5e80b", "scanner": "scanner-primary", "fingerprint": "e6f8f854560dc998", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d73b80ca463b0eb8", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/verify-all-scored.js:153"}, "properties": {"repobilityId": "3b4cf451e6849224", "scanner": "scanner-primary", "fingerprint": "d73b80ca463b0eb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c722e029e6f807aa", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/wp-classifier-parity.js:277"}, "properties": {"repobilityId": "ea5aca5d30b416ce", "scanner": "scanner-primary", "fingerprint": "c722e029e6f807aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2bef4baaa1ca637c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fix-tony-attribution.js:146"}, "properties": {"repobilityId": "5f93204b906ffcf1", "scanner": "scanner-primary", "fingerprint": "2bef4baaa1ca637c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ceb4c8e45b85e15", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/fix-p0-score-corruption.js:113"}, "properties": {"repobilityId": "8abe35fc5227e67a", "scanner": "scanner-primary", "fingerprint": "2ceb4c8e45b85e15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4fa93bdeaa8fe42f", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/enrich-olivier-awards.js:332"}, "properties": {"repobilityId": "1fd9f6bb16bf6162", "scanner": "scanner-primary", "fingerprint": "4fa93bdeaa8fe42f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c12f524a8a34ecc7", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/extract-theatre-record.js:877"}, "properties": {"repobilityId": "115bbce54902769a", "scanner": "scanner-primary", "fingerprint": "c12f524a8a34ecc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ee9218ae104d87d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collection-coverage-dashboard.js:356"}, "properties": {"repobilityId": "8fb993c793deed35", "scanner": "scanner-primary", "fingerprint": "3ee9218ae104d87d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9101904641f62d54", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-awards-data.js:798"}, "properties": {"repobilityId": "3492a9148935a22b", "scanner": "scanner-primary", "fingerprint": "9101904641f62d54", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ed06f4c35f9aea3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-opening-night-extraction.js:318"}, "properties": {"repobilityId": "946a7ab61422a3f5", "scanner": "scanner-primary", "fingerprint": "0ed06f4c35f9aea3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5277cd1165d93164", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/audit-opening-night-extraction.js:188"}, "properties": {"repobilityId": "799849f4a590f34c", "scanner": "scanner-primary", "fingerprint": "5277cd1165d93164", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dafa42739ba308c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/backfill-cast-web.js:166"}, "properties": {"repobilityId": "226932346e0d7688", "scanner": "scanner-primary", "fingerprint": "dafa42739ba308c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-104a9f75089a8a42", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/flag-combined-reviews.js:35"}, "properties": {"repobilityId": "d69bd9cb71498f53", "scanner": "scanner-primary", "fingerprint": "104a9f75089a8a42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b50a99f4016299cb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/extract-aggregator-candidates.js:78"}, "properties": {"repobilityId": "5feaf12e9b70ea2a", "scanner": "scanner-primary", "fingerprint": "b50a99f4016299cb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6ac20969739bc6a9", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/send-opening-digest.js:79"}, "properties": {"repobilityId": "d98d63a5f5c7505c", "scanner": "scanner-primary", "fingerprint": "6ac20969739bc6a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6f6964ee026a38e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/validate-data.js:37"}, "properties": {"repobilityId": "cfbd69a372076745", "scanner": "scanner-primary", "fingerprint": "b6f6964ee026a38e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d7c6a7901ee35e7", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/rebuild-all-reviews.js:63"}, "properties": {"repobilityId": "3e392c11e7da9238", "scanner": "scanner-primary", "fingerprint": "8d7c6a7901ee35e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a4490ca4c8c043c", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/monitor-brand-mentions.js:147"}, "properties": {"repobilityId": "d7d6d3432205e059", "scanner": "scanner-primary", "fingerprint": "3a4490ca4c8c043c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57cbf25f87a98d3a", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/audit-opening-night-coverage.js:38"}, "properties": {"repobilityId": "64aa03880492c1e0", "scanner": "scanner-primary", "fingerprint": "57cbf25f87a98d3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64100e972a730d0f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/ingest-review-from-url.js:65"}, "properties": {"repobilityId": "b9e0c0caf4f1c87b", "scanner": "scanner-primary", "fingerprint": "64100e972a730d0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1b3a665fd73c27c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/notify-pending-commercial-notion.js:52"}, "properties": {"repobilityId": "6748ed1746aae2d2", "scanner": "scanner-primary", "fingerprint": "f1b3a665fd73c27c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3efb1c82a0a7333", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/extract-show-score-reviews.js:44"}, "properties": {"repobilityId": "4091d1bd074be50e", "scanner": "scanner-primary", "fingerprint": "f3efb1c82a0a7333", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be03fe570a83abb1", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-nft-excluded-runtime-reads.js:2"}, "properties": {"repobilityId": "00fe064c4ac101a4", "scanner": "scanner-primary", "fingerprint": "be03fe570a83abb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c061715aefe5ebe6", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-locked-reasons.js:42"}, "properties": {"repobilityId": "f6bca47c413f8163", "scanner": "scanner-primary", "fingerprint": "c061715aefe5ebe6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8039e7bb27a0b3a1", "level": "none", "message": {"text": "Commented-code block (18 lines) in scripts/scoring-delta.js:139"}, "properties": {"repobilityId": "a9eebfb355e088c0", "scanner": "scanner-primary", "fingerprint": "8039e7bb27a0b3a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eb2163aebfa4d73", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/fetch-show-images-auto.js:69"}, "properties": {"repobilityId": "4fdb00a7105a9ac4", "scanner": "scanner-primary", "fingerprint": "7eb2163aebfa4d73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-869254736aa056d3", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/audit-chrome-pullquotes.js:41"}, "properties": {"repobilityId": "9e9457baca3ee190", "scanner": "scanner-primary", "fingerprint": "869254736aa056d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e92bee26e957b70", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/validate-review-texts.js:180"}, "properties": {"repobilityId": "731ef7900884bf18", "scanner": "scanner-primary", "fingerprint": "5e92bee26e957b70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c521a0a863571e12", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/eval-v52.js:185"}, "properties": {"repobilityId": "548db5ea1fac41cf", "scanner": "scanner-primary", "fingerprint": "c521a0a863571e12", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b6c0b6a58ac1e6a", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/discover-show-score-urls-from-listings.js:62"}, "properties": {"repobilityId": "72afecf83b6d6081", "scanner": "scanner-primary", "fingerprint": "4b6c0b6a58ac1e6a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2212b971ff56cbfd", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-theatr-audience.js:150"}, "properties": {"repobilityId": "dacf8228e985fe62", "scanner": "scanner-primary", "fingerprint": "2212b971ff56cbfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e81068a11a709161", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/backfill-extractor-rescore.js:36"}, "properties": {"repobilityId": "d804a8237f217248", "scanner": "scanner-primary", "fingerprint": "e81068a11a709161", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bda83887a0eaca6b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scrape-westendtheatre-roundups.js:35"}, "properties": {"repobilityId": "99b0a7f0bf9b4197", "scanner": "scanner-primary", "fingerprint": "bda83887a0eaca6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a65705affa1ee625", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-westendtheatre-roundups.js:548"}, "properties": {"repobilityId": "8e2266f1d34a75c7", "scanner": "scanner-primary", "fingerprint": "a65705affa1ee625", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-664f6e47b150a139", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/recover-wayback-reviews.js:1335"}, "properties": {"repobilityId": "4b95c8c02d65cecc", "scanner": "scanner-primary", "fingerprint": "664f6e47b150a139", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d30e1d7c4c477f5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/triage-sentry.js:82"}, "properties": {"repobilityId": "44e792de551b6bfd", "scanner": "scanner-primary", "fingerprint": "0d30e1d7c4c477f5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b1b9a28c63977f93", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/scrape-reddit-sentiment.js:236"}, "properties": {"repobilityId": "c91448a9b583b8db", "scanner": "scanner-primary", "fingerprint": "b1b9a28c63977f93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-470fba440ba01cde", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/pre-deploy-check.js:188"}, "properties": {"repobilityId": "1d5177bda895e655", "scanner": "scanner-primary", "fingerprint": "470fba440ba01cde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-821aeea8acfdeac9", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/audit-aggregator-archive-integrity.js:42"}, "properties": {"repobilityId": "bff739ac570abb31", "scanner": "scanner-primary", "fingerprint": "821aeea8acfdeac9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f03453813c6a1ae0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/process-review-formspree.js:135"}, "properties": {"repobilityId": "01a40ac565340911", "scanner": "scanner-primary", "fingerprint": "f03453813c6a1ae0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2fa5a9b6f725f4d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/cleanup-failed-fetches.js:35"}, "properties": {"repobilityId": "8fba059eecc50687", "scanner": "scanner-primary", "fingerprint": "2fa5a9b6f725f4d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac776c0ac091eee", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/classify-non-reviews.js:541"}, "properties": {"repobilityId": "814b81dac215c749", "scanner": "scanner-primary", "fingerprint": "1ac776c0ac091eee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ab03886627bd257", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-cookie-health.js:72"}, "properties": {"repobilityId": "959d1aab156cbaed", "scanner": "scanner-primary", "fingerprint": "8ab03886627bd257", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf62f95523f36b51", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/collect-review-texts.js:299"}, "properties": {"repobilityId": "f209c41fe0d491cd", "scanner": "scanner-primary", "fingerprint": "cf62f95523f36b51", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9794c179ed1ea090", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/collect-review-texts.js:3266"}, "properties": {"repobilityId": "0234d3fef486ae6f", "scanner": "scanner-primary", "fingerprint": "9794c179ed1ea090", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-438366529d5182ae", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-review-count-drift.js:65"}, "properties": {"repobilityId": "653116df99f492ef", "scanner": "scanner-primary", "fingerprint": "438366529d5182ae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f722379312c4086", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/watch-aggregator-urls.js:227"}, "properties": {"repobilityId": "29f61a2551d6c267", "scanner": "scanner-primary", "fingerprint": "9f722379312c4086", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-852627ff6a217326", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/audit-cast-changes.js:60"}, "properties": {"repobilityId": "26dbd3c812dcafd3", "scanner": "scanner-primary", "fingerprint": "852627ff6a217326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73bc60e371735df9", "level": "note", "message": {"text": "Legacy-named symbol `closedOld` in scripts/backfill-serp-abandonment.js:7"}, "properties": {"repobilityId": "6d62f939457e296c", "scanner": "scanner-primary", "fingerprint": "73bc60e371735df9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9b652d8fd348b1b5", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/verify-misroute-content.js:56"}, "properties": {"repobilityId": "c8be1b2823110c5a", "scanner": "scanner-primary", "fingerprint": "9b652d8fd348b1b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81671358793983d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/extract-safari-cookies.py:601"}, "properties": {"repobilityId": "4bbe04529f5418bc", "scanner": "scanner-primary", "fingerprint": "81671358793983d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-820bcdb7969af4ac", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/scrape-theater-tips.js:81"}, "properties": {"repobilityId": "ab5d7a4613d39f21", "scanner": "scanner-primary", "fingerprint": "820bcdb7969af4ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5891299a846b4213", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-grosses-data.js:323"}, "properties": {"repobilityId": "2316456ec4c76ca7", "scanner": "scanner-primary", "fingerprint": "5891299a846b4213", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d773cfc54da2779", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/scrape-broadway-com-audience.js:181"}, "properties": {"repobilityId": "4629a0381244fe7f", "scanner": "scanner-primary", "fingerprint": "9d773cfc54da2779", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d14693da38b7580c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/test-preview-dedup.js:202"}, "properties": {"repobilityId": "9145b3bd95a5fdec", "scanner": "scanner-primary", "fingerprint": "d14693da38b7580c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69104781f2224802", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/poll-loureviews.js:45"}, "properties": {"repobilityId": "a5ab34bc13e8edf4", "scanner": "scanner-primary", "fingerprint": "69104781f2224802", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8140cf495aa90d60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-formspree-health.js:60"}, "properties": {"repobilityId": "0cf41c54179ed2a8", "scanner": "scanner-primary", "fingerprint": "8140cf495aa90d60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-07ac1d23828a659a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/audit-audience-buzz-contamination.js:89"}, "properties": {"repobilityId": "da2f8267f61c8ff5", "scanner": "scanner-primary", "fingerprint": "07ac1d23828a659a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b6187b3d9dbacc92", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/pre-classify-titles.js:34"}, "properties": {"repobilityId": "9bea49ec681cb176", "scanner": "scanner-primary", "fingerprint": "b6187b3d9dbacc92", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e213e5713960f0d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/classify-reviews.js:67"}, "properties": {"repobilityId": "537f5c98ba681640", "scanner": "scanner-primary", "fingerprint": "e213e5713960f0d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-59de78fadc24103a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/audit-before-share.js:70"}, "properties": {"repobilityId": "773beeaef105bfef", "scanner": "scanner-primary", "fingerprint": "59de78fadc24103a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ebab901ffc1102db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/eval-prompts.js:81"}, "properties": {"repobilityId": "dc24407c02436aec", "scanner": "scanner-primary", "fingerprint": "ebab901ffc1102db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-695f979ce2f366e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/video-reviews/score-video-reviews.js:60"}, "properties": {"repobilityId": "43d3a36056792415", "scanner": "scanner-primary", "fingerprint": "695f979ce2f366e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f02a429d2b8427d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/incomplete-reason.js:118"}, "properties": {"repobilityId": "ccb95593a199e0e2", "scanner": "scanner-primary", "fingerprint": "f02a429d2b8427d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1a869ed363bbb83", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/show-matching.test.mjs:3"}, "properties": {"repobilityId": "30661bfeb5b72772", "scanner": "scanner-primary", "fingerprint": "c1a869ed363bbb83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5f7b27936e2a57c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/show-matching.js:584"}, "properties": {"repobilityId": "aac9f5adc3fdbfb2", "scanner": "scanner-primary", "fingerprint": "5f7b27936e2a57c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-772e59766f49960d", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/lib/review-text-scoreable.js:45"}, "properties": {"repobilityId": "90271fcb968c2533", "scanner": "scanner-primary", "fingerprint": "772e59766f49960d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bb0bb24650b987bd", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/score-extractors.js:434"}, "properties": {"repobilityId": "11501e07117f7ed4", "scanner": "scanner-primary", "fingerprint": "bb0bb24650b987bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24e03a476526e894", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/dom-article-extractor.js:94"}, "properties": {"repobilityId": "f707961d4862f66f", "scanner": "scanner-primary", "fingerprint": "24e03a476526e894", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d7b3e6d2afeaf42", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/site-search-discovery.js:64"}, "properties": {"repobilityId": "97cf76dac5a12762", "scanner": "scanner-primary", "fingerprint": "3d7b3e6d2afeaf42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21427f92a361e29d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/site-search-discovery.js:894"}, "properties": {"repobilityId": "fb0497956cf77f7e", "scanner": "scanner-primary", "fingerprint": "21427f92a361e29d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-838bd37e38c66ec7", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/omc-discovery.js:72"}, "properties": {"repobilityId": "ea025a45c29d1eda", "scanner": "scanner-primary", "fingerprint": "838bd37e38c66ec7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1df379419e1892fc", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/closing-date-discovery.js:205"}, "properties": {"repobilityId": "f5a196923eab19ee", "scanner": "scanner-primary", "fingerprint": "1df379419e1892fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-868b949dfa34d3a7", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/bww-rr-discover.js:174"}, "properties": {"repobilityId": "01dafe1e85251f00", "scanner": "scanner-primary", "fingerprint": "868b949dfa34d3a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5873b003184a913", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/bww-rr-discover.js:258"}, "properties": {"repobilityId": "b28966bc352216a5", "scanner": "scanner-primary", "fingerprint": "e5873b003184a913", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ac11751ee2f7ba7b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/llm-extractor.js:105"}, "properties": {"repobilityId": "48e44aeb1d24c4e2", "scanner": "scanner-primary", "fingerprint": "ac11751ee2f7ba7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56bb333c6b769777", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/content-filters.js:318"}, "properties": {"repobilityId": "31336d5c917e9e2a", "scanner": "scanner-primary", "fingerprint": "56bb333c6b769777", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b3a1d1c90d3313e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/date-guard.js:21"}, "properties": {"repobilityId": "ebc6770a9e561926", "scanner": "scanner-primary", "fingerprint": "9b3a1d1c90d3313e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67e565deb0b91ef9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/gd-api.js:58"}, "properties": {"repobilityId": "27e357b513104edc", "scanner": "scanner-primary", "fingerprint": "67e565deb0b91ef9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-78c93733c47e31ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/theatermania-discovery.js:30"}, "properties": {"repobilityId": "1035e6edd5eb1c3c", "scanner": "scanner-primary", "fingerprint": "78c93733c47e31ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d8437f3b656622a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/posthog-query.js:20"}, "properties": {"repobilityId": "ed15b6a902ae3b07", "scanner": "scanner-primary", "fingerprint": "0d8437f3b656622a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9c82ce9ae602d703", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/verdict-hash.test.mjs:4"}, "properties": {"repobilityId": "3f8606297f551896", "scanner": "scanner-primary", "fingerprint": "9c82ce9ae602d703", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa3a34945444bc52", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/serp-candidate-validator.js:261"}, "properties": {"repobilityId": "1c25c13a403d3310", "scanner": "scanner-primary", "fingerprint": "fa3a34945444bc52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ceb4e9ae82bad63f", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/venue-listing-discover.js:39"}, "properties": {"repobilityId": "61542dc4fe6d59f3", "scanner": "scanner-primary", "fingerprint": "ceb4e9ae82bad63f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3681eb7a519c1c25", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/clear-failure-flags.js:141"}, "properties": {"repobilityId": "23e7c9c7fe9f41d4", "scanner": "scanner-primary", "fingerprint": "3681eb7a519c1c25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e01ef70618c10849", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/content-verifier.js:355"}, "properties": {"repobilityId": "22c8e0bf6f567afb", "scanner": "scanner-primary", "fingerprint": "e01ef70618c10849", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5318a76eba40b04a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/ibdb-cast.js:58"}, "properties": {"repobilityId": "55ad228fe03e398b", "scanner": "scanner-primary", "fingerprint": "5318a76eba40b04a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5818ede7618cb011", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/playbill-verdict-discover.js:24"}, "properties": {"repobilityId": "6c494d36e489908d", "scanner": "scanner-primary", "fingerprint": "5818ede7618cb011", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93d1d52ac88a9f72", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/lib/cast-changes-filters.js:60"}, "properties": {"repobilityId": "57b4ee4ed640f499", "scanner": "scanner-primary", "fingerprint": "93d1d52ac88a9f72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b628254a52b65fea", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/per-category-precursor.js:78"}, "properties": {"repobilityId": "610ec533ff7cbb46", "scanner": "scanner-primary", "fingerprint": "b628254a52b65fea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ed9b1908a901517", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/multi-show-splitter.js:166"}, "properties": {"repobilityId": "e1dfb722598fb6a3", "scanner": "scanner-primary", "fingerprint": "9ed9b1908a901517", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b807218698c149", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/market-routing.js:143"}, "properties": {"repobilityId": "38b2bb4fb68c9bb6", "scanner": "scanner-primary", "fingerprint": "15b807218698c149", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d0f7d77989f11ab", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/review-write-guard.js:120"}, "properties": {"repobilityId": "080db75967674d0d", "scanner": "scanner-primary", "fingerprint": "3d0f7d77989f11ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c27edc0fafe2f58", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/opera-discovery-cache.js:126"}, "properties": {"repobilityId": "ae03166494c9d50a", "scanner": "scanner-primary", "fingerprint": "2c27edc0fafe2f58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90433aa815b2adc2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/wrong-production-autoclear.js:108"}, "properties": {"repobilityId": "b018be786a31c5ed", "scanner": "scanner-primary", "fingerprint": "90433aa815b2adc2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-523524942e8d725c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/bww-roundup-parser.js:19"}, "properties": {"repobilityId": "c01bd2ddcf755a58", "scanner": "scanner-primary", "fingerprint": "523524942e8d725c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc3e52b0b631f25a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/opening-night-budget.js:136"}, "properties": {"repobilityId": "c24d1b7e972c8058", "scanner": "scanner-primary", "fingerprint": "fc3e52b0b631f25a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d95d8259a031cd93", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/title-match.js:30"}, "properties": {"repobilityId": "14a8f16575519b9a", "scanner": "scanner-primary", "fingerprint": "d95d8259a031cd93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50012d6fb701903c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/precursor-category-parser.js:16"}, "properties": {"repobilityId": "67325d77f308f17e", "scanner": "scanner-primary", "fingerprint": "50012d6fb701903c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7d88f64e5d744a1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/precursor-category-parser.js:33"}, "properties": {"repobilityId": "e158106e643bcdcf", "scanner": "scanner-primary", "fingerprint": "f7d88f64e5d744a1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3f27ebfd8850b9ff", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/brand-mention-serp.js:176"}, "properties": {"repobilityId": "12ffa8a7f0fa1ca8", "scanner": "scanner-primary", "fingerprint": "3f27ebfd8850b9ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab29829d41ba6844", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/critic-canonicalization.js:39"}, "properties": {"repobilityId": "a3a4684cbb95f425", "scanner": "scanner-primary", "fingerprint": "ab29829d41ba6844", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e20dc655092e6da2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/compute-critic-score.js:22"}, "properties": {"repobilityId": "5779d6ab86cec8d5", "scanner": "scanner-primary", "fingerprint": "e20dc655092e6da2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f929ba460904b2f", "level": "none", "message": {"text": "Commented-code block (13 lines) in scripts/lib/transcript-scan.mjs:6"}, "properties": {"repobilityId": "4ce24dcb142bd041", "scanner": "scanner-primary", "fingerprint": "4f929ba460904b2f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d830d0d3e86372c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/review-normalization.js:593"}, "properties": {"repobilityId": "50fcd546c14118b1", "scanner": "scanner-primary", "fingerprint": "9d830d0d3e86372c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21919714b078a671", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/ui-paths.mjs:5"}, "properties": {"repobilityId": "5fdde3f3da5208e5", "scanner": "scanner-primary", "fingerprint": "21919714b078a671", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-112fab869883eca2", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/byline-normalization.js:26"}, "properties": {"repobilityId": "7b11d4c35402ff24", "scanner": "scanner-primary", "fingerprint": "112fab869883eca2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ac334b4b16b1b2e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/fetch-plain.js:13"}, "properties": {"repobilityId": "6210eadbb75dc643", "scanner": "scanner-primary", "fingerprint": "2ac334b4b16b1b2e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c280d256e889752", "level": "note", "message": {"text": "Legacy-named symbol `closedOld` in scripts/lib/review-guards.js:1690"}, "properties": {"repobilityId": "4a8bf7e8c1075578", "scanner": "scanner-primary", "fingerprint": "8c280d256e889752", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-75c8b6f184b17ab8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/review-guards.js:98"}, "properties": {"repobilityId": "5cf0f2c3c48accda", "scanner": "scanner-primary", "fingerprint": "75c8b6f184b17ab8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaaebae699482f12", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/year-page-precursor.js:172"}, "properties": {"repobilityId": "2114474a45ee6cc2", "scanner": "scanner-primary", "fingerprint": "aaaebae699482f12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3efa2e772acff629", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/cast-extraction-guards.js:1"}, "properties": {"repobilityId": "c7bc591abc1fbecf", "scanner": "scanner-primary", "fingerprint": "3efa2e772acff629", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-388fe7be33b5318f", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/url-discovery.js:424"}, "properties": {"repobilityId": "58a4c5be28cb9788", "scanner": "scanner-primary", "fingerprint": "388fe7be33b5318f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfb651a73aa58326", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/precursor-wikipedia.js:185"}, "properties": {"repobilityId": "1a4fea55d8350caa", "scanner": "scanner-primary", "fingerprint": "cfb651a73aa58326", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-250a21ca600b9041", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/orphan-pending-decision.js:134"}, "properties": {"repobilityId": "0f2c1e870e5c59a0", "scanner": "scanner-primary", "fingerprint": "250a21ca600b9041", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4b2daaf221dc443", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/bww-roundup-validator.js:111"}, "properties": {"repobilityId": "a3e5c9ce39f1c2a0", "scanner": "scanner-primary", "fingerprint": "e4b2daaf221dc443", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64f398da59a89d81", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/verdict-hash.mjs:27"}, "properties": {"repobilityId": "3518232fad07f292", "scanner": "scanner-primary", "fingerprint": "64f398da59a89d81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3e94b944a5e6861c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/poller-idempotency.js:30"}, "properties": {"repobilityId": "d399ccef476cc288", "scanner": "scanner-primary", "fingerprint": "3e94b944a5e6861c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bda5ce6ea3195a9", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/transcript-scan.test.mjs:206"}, "properties": {"repobilityId": "daed69779f56feb5", "scanner": "scanner-primary", "fingerprint": "1bda5ce6ea3195a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5503558383440b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/classify-stale-closure.js:6"}, "properties": {"repobilityId": "d32fd30883af54da", "scanner": "scanner-primary", "fingerprint": "b5503558383440b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3ac1a4e7756c456d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/recoupment-model.js:255"}, "properties": {"repobilityId": "8a8f501d5bcf2f30", "scanner": "scanner-primary", "fingerprint": "3ac1a4e7756c456d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8c3bcf1bfeb31f0", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/lib/pull-quote-guards.js:109"}, "properties": {"repobilityId": "3f9931a28582083e", "scanner": "scanner-primary", "fingerprint": "d8c3bcf1bfeb31f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0573c5b25c842d07", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/lib/article-extractor.js:190"}, "properties": {"repobilityId": "e1d914d55911b0b1", "scanner": "scanner-primary", "fingerprint": "0573c5b25c842d07", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a039fa432f33fbb", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/check-sb-credits.js:8"}, "properties": {"repobilityId": "838e6a3746164793", "scanner": "scanner-primary", "fingerprint": "2a039fa432f33fbb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6910a35f34d94fe5", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/deduplication.js:147"}, "properties": {"repobilityId": "20ee728a7d68b04e", "scanner": "scanner-primary", "fingerprint": "6910a35f34d94fe5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f894ea275c6df335", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/rss-discovery.js:15"}, "properties": {"repobilityId": "c8056f5f1d5c0b6b", "scanner": "scanner-primary", "fingerprint": "f894ea275c6df335", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab8047c6ab55d147", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/scraper.js:84"}, "properties": {"repobilityId": "8fa06c2e73d8f8d8", "scanner": "scanner-primary", "fingerprint": "ab8047c6ab55d147", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1090c6298bbaee5", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/visual-qa-ledger.mjs:6"}, "properties": {"repobilityId": "39d892d24f241663", "scanner": "scanner-primary", "fingerprint": "b1090c6298bbaee5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34dbcdcf6744541b", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/merge-commercial-data.js:3"}, "properties": {"repobilityId": "ba431717b96b39cb", "scanner": "scanner-primary", "fingerprint": "34dbcdcf6744541b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56f3ae61609a6792", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/score-parsers.js:52"}, "properties": {"repobilityId": "26f4dbef116e459c", "scanner": "scanner-primary", "fingerprint": "56f3ae61609a6792", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-922ec7db16caa87d", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/review-file-writer.js:187"}, "properties": {"repobilityId": "780a5deab9c596e8", "scanner": "scanner-primary", "fingerprint": "922ec7db16caa87d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e00dacbf42f30e3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/apify-fetchers.js:220"}, "properties": {"repobilityId": "d7f977e9673cab5d", "scanner": "scanner-primary", "fingerprint": "2e00dacbf42f30e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b54ef9f57b95e064", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/apify-fetchers.js:36"}, "properties": {"repobilityId": "fbf8c7135e9ed7e8", "scanner": "scanner-primary", "fingerprint": "b54ef9f57b95e064", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c84915ddc5a26120", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/loureviews-match.js:107"}, "properties": {"repobilityId": "0afd9b14cf29d4d8", "scanner": "scanner-primary", "fingerprint": "c84915ddc5a26120", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf2a99128868711d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/commercial-apply-gate.js:19"}, "properties": {"repobilityId": "e937df624f9d1239", "scanner": "scanner-primary", "fingerprint": "bf2a99128868711d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02d855f0db79eb87", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/wrongprod-replacement-preserve.js:46"}, "properties": {"repobilityId": "9ea64ea31f5693c4", "scanner": "scanner-primary", "fingerprint": "02d855f0db79eb87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-95dfde16befd3c9f", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/content-quality.js:48"}, "properties": {"repobilityId": "dd8e237f644b653e", "scanner": "scanner-primary", "fingerprint": "95dfde16befd3c9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e684fb25f6b17692", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/rebuild-helpers.js:339"}, "properties": {"repobilityId": "cb3c9d94b66f776a", "scanner": "scanner-primary", "fingerprint": "e684fb25f6b17692", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8bcd88bd98b872e", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/star-reliability.js:57"}, "properties": {"repobilityId": "dbdf2a66e9dbc663", "scanner": "scanner-primary", "fingerprint": "b8bcd88bd98b872e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d990e13183c9ff1c", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/bww-opera-discover.js:64"}, "properties": {"repobilityId": "35f6fd485f338b95", "scanner": "scanner-primary", "fingerprint": "d990e13183c9ff1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62d3336293c8b52a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/email-utm.js:3"}, "properties": {"repobilityId": "877eca13e4299ac6", "scanner": "scanner-primary", "fingerprint": "62d3336293c8b52a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c680efd0392456f6", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/broadcast-state.js:45"}, "properties": {"repobilityId": "99d6c4a520454677", "scanner": "scanner-primary", "fingerprint": "c680efd0392456f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-31f14e1e126008cd", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/critics-circle-parser.js:146"}, "properties": {"repobilityId": "60d340efefab1f26", "scanner": "scanner-primary", "fingerprint": "31f14e1e126008cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c514a009d5fd263", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/non-review-patterns.js:42"}, "properties": {"repobilityId": "8bc6f0ed176aaad6", "scanner": "scanner-primary", "fingerprint": "0c514a009d5fd263", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-441e989d2b9c1e0e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/playbill-roundup-discover.js:102"}, "properties": {"repobilityId": "1f5fdd27ae10ab2c", "scanner": "scanner-primary", "fingerprint": "441e989d2b9c1e0e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea3e0241eb6a2e48", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/lib/tb-direct-url.js:6"}, "properties": {"repobilityId": "6b6732356257622e", "scanner": "scanner-primary", "fingerprint": "ea3e0241eb6a2e48", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e6b4d7b76e0c2f8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/feedback-dedup.js:111"}, "properties": {"repobilityId": "2713ab21f1d54010", "scanner": "scanner-primary", "fingerprint": "8e6b4d7b76e0c2f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc016f44d0c4e864", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/owner-accounts.js:41"}, "properties": {"repobilityId": "ff3924bda4d6ae1e", "scanner": "scanner-primary", "fingerprint": "cc016f44d0c4e864", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c080ebd57bc8ab39", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/domain-filters.js:33"}, "properties": {"repobilityId": "c51b8cfdb8119be3", "scanner": "scanner-primary", "fingerprint": "c080ebd57bc8ab39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3ba0958f4a0ee40", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/lib/show-match-verifier.js:82"}, "properties": {"repobilityId": "84887ed5834d1111", "scanner": "scanner-primary", "fingerprint": "f3ba0958f4a0ee40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d656cc431eab9867", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/page-validator.js:143"}, "properties": {"repobilityId": "6e1d8cbb3f64fe7f", "scanner": "scanner-primary", "fingerprint": "d656cc431eab9867", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a3f94b73644928e", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/lib/aggregator-candidate-extract.js:54"}, "properties": {"repobilityId": "180f5240b4bff4d6", "scanner": "scanner-primary", "fingerprint": "6a3f94b73644928e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-955dbb06093da5be", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/lib/restore-protected-fields.js:29"}, "properties": {"repobilityId": "d88fd3cef8e45caa", "scanner": "scanner-primary", "fingerprint": "955dbb06093da5be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39b95831abbdedf1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lib/newsletter-sections.js:3"}, "properties": {"repobilityId": "e690f651e75ab2d9", "scanner": "scanner-primary", "fingerprint": "39b95831abbdedf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-650f867c87a165ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/opening-night-checks/bww-rr-count-mismatch.check.js:81"}, "properties": {"repobilityId": "e271b53f7daad28a", "scanner": "scanner-primary", "fingerprint": "650f867c87a165ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ce7c5ae76f738f5", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/llm-scoring/config.ts:40"}, "properties": {"repobilityId": "4d2f30595ab0de6c", "scanner": "scanner-primary", "fingerprint": "0ce7c5ae76f738f5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53cf0c71c2829d5b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/comparative-rescore.ts:241"}, "properties": {"repobilityId": "b9ae343c10bb2de5", "scanner": "scanner-primary", "fingerprint": "53cf0c71c2829d5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-683d6d148cff42d4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/llm-scoring/sanity-v6-single.mjs:37"}, "properties": {"repobilityId": "b73f4275de50fa45", "scanner": "scanner-primary", "fingerprint": "683d6d148cff42d4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a46f09c7e38cb942", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/index.ts:562"}, "properties": {"repobilityId": "52cc4cd70bdad149", "scanner": "scanner-primary", "fingerprint": "a46f09c7e38cb942", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d4fd50396d3a084", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/is-scoreable.ts:28"}, "properties": {"repobilityId": "1728ed979ffa2985", "scanner": "scanner-primary", "fingerprint": "3d4fd50396d3a084", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4316b27452f171ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/llm-scoring/star-anchor-sample.ts:33"}, "properties": {"repobilityId": "13f0fc7f8a691d46", "scanner": "scanner-primary", "fingerprint": "4316b27452f171ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-46ccdb6bbfb8820d", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/llm-scoring/ensemble-scorer.ts:31"}, "properties": {"repobilityId": "d0200abc6bac1dd6", "scanner": "scanner-primary", "fingerprint": "46ccdb6bbfb8820d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90621b0564c658a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/gemini-scorer.ts:49"}, "properties": {"repobilityId": "283aa443d6f83d88", "scanner": "scanner-primary", "fingerprint": "90621b0564c658a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc5620d189906914", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/llm-scoring/scorer.ts:359"}, "properties": {"repobilityId": "ffda8005f2c1172f", "scanner": "scanner-primary", "fingerprint": "bc5620d189906914", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-204203d9faefcec6", "level": "note", "message": {"text": "Legacy-named symbol `promptOld` in scripts/llm-scoring/test-prompt-structural-ab.ts:632"}, "properties": {"repobilityId": "f7cd834dbfd0a224", "scanner": "scanner-primary", "fingerprint": "204203d9faefcec6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b7c8e6f33b55e1bb", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/test-prompt-structural-ab.ts:197"}, "properties": {"repobilityId": "511caeefac4e0a69", "scanner": "scanner-primary", "fingerprint": "b7c8e6f33b55e1bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b93b78d98c95c044", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/llm-scoring/input-builder.ts:12"}, "properties": {"repobilityId": "56671a72c2ac7731", "scanner": "scanner-primary", "fingerprint": "b93b78d98c95c044", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a97dbc56444dec70", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/evals/theater-tips-eval.js:92"}, "properties": {"repobilityId": "8547ce6b000312f7", "scanner": "scanner-primary", "fingerprint": "a97dbc56444dec70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0593b54c6db8fc04", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/one-off/sweep-revival-wrong-production.js:111"}, "properties": {"repobilityId": "bd3421b50b3ac3ac", "scanner": "scanner-primary", "fingerprint": "0593b54c6db8fc04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a002e9dc845c6130", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/newsletter/newsworthiness.mjs:14"}, "properties": {"repobilityId": "fd87c4d80509368e", "scanner": "scanner-primary", "fingerprint": "a002e9dc845c6130", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78e1e88aabe45bb4", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/newsletter/popular-pages.mjs:13"}, "properties": {"repobilityId": "a145015403afba8a", "scanner": "scanner-primary", "fingerprint": "78e1e88aabe45bb4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-948a8e3aecfdf5ce", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/newsletter/send-test.mjs:9"}, "properties": {"repobilityId": "938cf8667ccfcb05", "scanner": "scanner-primary", "fingerprint": "948a8e3aecfdf5ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8e8fd262b0fd744", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/newsletter/send-test.mjs:81"}, "properties": {"repobilityId": "3d15f71695822eba", "scanner": "scanner-primary", "fingerprint": "b8e8fd262b0fd744", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-680a6ad4d7311943", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/newsletter/create-broadcast-draft.mjs:3"}, "properties": {"repobilityId": "221bfc5a168271b4", "scanner": "scanner-primary", "fingerprint": "680a6ad4d7311943", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2006797de9fb753", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/newsletter/generate.mjs:52"}, "properties": {"repobilityId": "bbf9be53c19b7b6a", "scanner": "scanner-primary", "fingerprint": "d2006797de9fb753", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2ec4c23f4ecc612", "level": "none", "message": {"text": "Commented-code block (12 lines) in scripts/newsletter/pre-send-check.mjs:4"}, "properties": {"repobilityId": "f1584cdcd84964d0", "scanner": "scanner-primary", "fingerprint": "a2ec4c23f4ecc612", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44df9706e129b41c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/migrations/bulk-ingest-historical-recoveries-2026-05.js:149"}, "properties": {"repobilityId": "f714bd015188abec", "scanner": "scanner-primary", "fingerprint": "44df9706e129b41c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03dbadcb6010ffcf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/feature-flags.ts:1"}, "properties": {"repobilityId": "dc07f5031d578047", "scanner": "scanner-primary", "fingerprint": "03dbadcb6010ffcf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8004d6e67f0d39e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/score-buckets.ts:117"}, "properties": {"repobilityId": "5106250ba13a7fa3", "scanner": "scanner-primary", "fingerprint": "8004d6e67f0d39e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23ebe5e4ff76daa5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/outlet-logos.ts:264"}, "properties": {"repobilityId": "082370632031c8b8", "scanner": "scanner-primary", "fingerprint": "23ebe5e4ff76daa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8db2e29c847ea0d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/config/scoring.ts:8"}, "properties": {"repobilityId": "238c12c0bb0ba572", "scanner": "scanner-primary", "fingerprint": "f8db2e29c847ea0d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6d278dcb2caaf08", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/guide-pages.ts:521"}, "properties": {"repobilityId": "e6d031f46ccc7064", "scanner": "scanner-primary", "fingerprint": "f6d278dcb2caaf08", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bdb532dd8f386e5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/AwardScoreCard.tsx:101"}, "properties": {"repobilityId": "b6ceb763b7c38707", "scanner": "scanner-primary", "fingerprint": "8bdb532dd8f386e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94e162d48aa86d61", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/CastSection.tsx:67"}, "properties": {"repobilityId": "318cea40f09d3ba4", "scanner": "scanner-primary", "fingerprint": "94e162d48aa86d61", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03dd9210b0073b79", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/icons.tsx:37"}, "properties": {"repobilityId": "0901fe8cbca753b2", "scanner": "scanner-primary", "fingerprint": "03dd9210b0073b79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b7321d491a77c4c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/TicketButtonsAB.tsx:144"}, "properties": {"repobilityId": "432306505fd3390a", "scanner": "scanner-primary", "fingerprint": "0b7321d491a77c4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34263dc4f5e8956c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/AnalyticsWrapper.tsx:25"}, "properties": {"repobilityId": "c1698802569188ec", "scanner": "scanner-primary", "fingerprint": "34263dc4f5e8956c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ae682f03ff4ec47", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/components/EmailCaptureModal.tsx:158"}, "properties": {"repobilityId": "ee2ffcc92423aa68", "scanner": "scanner-primary", "fingerprint": "2ae682f03ff4ec47", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2ed1d0c46a9e572c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/HomePageClient.tsx:561"}, "properties": {"repobilityId": "bdb14a43bfaf4011", "scanner": "scanner-primary", "fingerprint": "2ed1d0c46a9e572c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d6b816f51909cc1", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/TicketLink.tsx:48"}, "properties": {"repobilityId": "bba66ac68f28aab2", "scanner": "scanner-primary", "fingerprint": "3d6b816f51909cc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8abbeccf18b59e30", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/SortableLotteryRushTables.tsx:674"}, "properties": {"repobilityId": "f0b0ffef447ac455", "scanner": "scanner-primary", "fingerprint": "8abbeccf18b59e30", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8726bdf763f45bfb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/show-page/WhereItRanks.tsx:207"}, "properties": {"repobilityId": "7208d643069e2e9d", "scanner": "scanner-primary", "fingerprint": "8726bdf763f45bfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9fc4e7b6980a484a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/tony-noms/CategorySection.tsx:62"}, "properties": {"repobilityId": "ac3324f32eafd29f", "scanner": "scanner-primary", "fingerprint": "9fc4e7b6980a484a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b538284d6c6d40b", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/show-cards/AwardScoreBadge.tsx:10"}, "properties": {"repobilityId": "130e6c8fc57807ae", "scanner": "scanner-primary", "fingerprint": "2b538284d6c6d40b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c8f5474bfa36fc1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/contexts/ProGateContext.tsx:57"}, "properties": {"repobilityId": "8f9c3a2b5814ddd8", "scanner": "scanner-primary", "fingerprint": "6c8f5474bfa36fc1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e02e0e9c64d1b91", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/robots.ts:38"}, "properties": {"repobilityId": "6368765da322a4eb", "scanner": "scanner-primary", "fingerprint": "1e02e0e9c64d1b91", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c487a4531df3ad0a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/brand/BrandPageClient.tsx:160"}, "properties": {"repobilityId": "3fc8fd8d46745880", "scanner": "scanner-primary", "fingerprint": "c487a4531df3ad0a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f359f5452e13cfb6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/resend-webhook/route.ts:111"}, "properties": {"repobilityId": "ff78d49cee13e5cb", "scanner": "scanner-primary", "fingerprint": "f359f5452e13cfb6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-293ef69d25c994bf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/beat-the-critics/send-picks/route.ts:55"}, "properties": {"repobilityId": "96ee910ae6c999b3", "scanner": "scanner-primary", "fingerprint": "293ef69d25c994bf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa1c8072dcd060cd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/dispatch-alert-fix/route.ts:91"}, "properties": {"repobilityId": "c3df00dee0440a4b", "scanner": "scanner-primary", "fingerprint": "aa1c8072dcd060cd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-76c3e682ab329882", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/admin/dispatch-rebuild/route.ts:16"}, "properties": {"repobilityId": "3322849c0419ef3b", "scanner": "scanner-primary", "fingerprint": "76c3e682ab329882", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f96a05b1515c6c1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/lock-score/route.ts:60"}, "properties": {"repobilityId": "543d36320882f3ff", "scanner": "scanner-primary", "fingerprint": "9f96a05b1515c6c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4496380fd907a60", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/admin/ingest-review/route.ts:26"}, "properties": {"repobilityId": "4dbfa3be76afc230", "scanner": "scanner-primary", "fingerprint": "a4496380fd907a60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fe76f99f5b091b0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-fix/route.ts:17"}, "properties": {"repobilityId": "f88f9ce937f1ca82", "scanner": "scanner-primary", "fingerprint": "0fe76f99f5b091b0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2eec86145977a1dc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/submit-review/route.ts:50"}, "properties": {"repobilityId": "4989b820d9bad435", "scanner": "scanner-primary", "fingerprint": "2eec86145977a1dc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2c85b2139a4560f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/api/approve-broadcast/route.ts:32"}, "properties": {"repobilityId": "19f0bb3cc4fef5d2", "scanner": "scanner-primary", "fingerprint": "2c85b2139a4560f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1059ed4929bbfea0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/test/_components/TestGuard.tsx:9"}, "properties": {"repobilityId": "48a8f499fde38844", "scanner": "scanner-primary", "fingerprint": "1059ed4929bbfea0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43d8b71fc77fd39e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/admin/ingest/IngestForm.tsx:524"}, "properties": {"repobilityId": "25606af340eb2f55", "scanner": "scanner-primary", "fingerprint": "43d8b71fc77fd39e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c1037924a9a30363", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/admin/locks/LocksTable.tsx:48"}, "properties": {"repobilityId": "288ce7cdd11aa9ee", "scanner": "scanner-primary", "fingerprint": "c1037924a9a30363", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49a38cb668d7ed81", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/tony-awards/predictions/[season]/page.tsx:93"}, "properties": {"repobilityId": "14e2528aed29b05b", "scanner": "scanner-primary", "fingerprint": "49a38cb668d7ed81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c6d6acd3cb5dce9", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/show/[slug]/opengraph-image.tsx:21"}, "properties": {"repobilityId": "e6705b3d04978393", "scanner": "scanner-primary", "fingerprint": "6c6d6acd3cb5dce9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0384cd12e3994cf", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/show/[slug]/opengraph-image.tsx:24"}, "properties": {"repobilityId": "643554b4f317f253", "scanner": "scanner-primary", "fingerprint": "e0384cd12e3994cf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f8acd189c8f8ec3f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/show/[slug]/page.tsx:90"}, "properties": {"repobilityId": "c141e53b8d18bd2b", "scanner": "scanner-primary", "fingerprint": "f8acd189c8f8ec3f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-770c47d4efb6883a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/seo.ts:215"}, "properties": {"repobilityId": "aabf59346b879d90", "scanner": "scanner-primary", "fingerprint": "770c47d4efb6883a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4e085bf7ffa9545", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/data-cast-obc.ts:4"}, "properties": {"repobilityId": "ec6161664942e579", "scanner": "scanner-primary", "fingerprint": "a4e085bf7ffa9545", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a704d8f916ca61b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/ticket-utils.ts:1"}, "properties": {"repobilityId": "3732d1155b787f39", "scanner": "scanner-primary", "fingerprint": "a704d8f916ca61b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0cb6a8143f86128", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/data-show-ranks.ts:134"}, "properties": {"repobilityId": "f524e3aef25b315b", "scanner": "scanner-primary", "fingerprint": "c0cb6a8143f86128", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50a3df93c4d82b63", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/data-social-pulse.ts:127"}, "properties": {"repobilityId": "3c200080a23df80a", "scanner": "scanner-primary", "fingerprint": "50a3df93c4d82b63", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-131440ea22cca0b0", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/posthog-events.ts:1"}, "properties": {"repobilityId": "320d698e1f1294e6", "scanner": "scanner-primary", "fingerprint": "131440ea22cca0b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7ce4022bd40f5bdb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/show-filter-predicates.ts:50"}, "properties": {"repobilityId": "65f2e2760703cb71", "scanner": "scanner-primary", "fingerprint": "7ce4022bd40f5bdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba6c866ad329729f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/lib/supabase-rest.ts:2"}, "properties": {"repobilityId": "cf5f11c67521dd44", "scanner": "scanner-primary", "fingerprint": "ba6c866ad329729f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6dc8fbdd63059ef3", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/data-tony-predictions.ts:93"}, "properties": {"repobilityId": "72d21a73facd66a1", "scanner": "scanner-primary", "fingerprint": "6dc8fbdd63059ef3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-65f48bf911c8b0d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/data.ts:1"}, "properties": {"repobilityId": "fa254f4f5bd1b6cf", "scanner": "scanner-primary", "fingerprint": "65f48bf911c8b0d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45beb30e7b67308a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/scoring.ts:18"}, "properties": {"repobilityId": "7916e39bb9e0d2f3", "scanner": "scanner-primary", "fingerprint": "45beb30e7b67308a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62f9a57381f36c26", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/admin-ingest-detect.ts:107"}, "properties": {"repobilityId": "2d4e1d8c485e35f5", "scanner": "scanner-primary", "fingerprint": "62f9a57381f36c26", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82d1e3b68af90865", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/data-actors.ts:8"}, "properties": {"repobilityId": "9fdd8d3ec67d5a3d", "scanner": "scanner-primary", "fingerprint": "82d1e3b68af90865", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-faec335d1ad542d1", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/engine.ts:348"}, "properties": {"repobilityId": "c75dbf2a521c2a94", "scanner": "scanner-primary", "fingerprint": "faec335d1ad542d1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-abf6f386533edbc4", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/hooks/usePanelFilters.ts:243"}, "properties": {"repobilityId": "58d6315b568d2757", "scanner": "scanner-primary", "fingerprint": "abf6f386533edbc4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3cf0f61a2117fcd", "level": "error", "message": {"text": "Dangling fetch: GET https://broadwayscorecard.com/data/shows/${showId}.json (scripts/watch-proof-tonight.js:104)"}, "properties": {"repobilityId": "4493dd9b4b05ffa8", "scanner": "scanner-primary", "fingerprint": "d3cf0f61a2117fcd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-52fd403388122253", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-stagedoor-critics.js:292)"}, "properties": {"repobilityId": "74e98afd0d379ae0", "scanner": "scanner-primary", "fingerprint": "52fd403388122253", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2199c37d2ba114a2", "level": "error", "message": {"text": "Dangling fetch: PUT https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps/${feedpath} (scripts/submit-google-indexing.js:206)"}, "properties": {"repobilityId": "f7a8745ff26f1da7", "scanner": "scanner-primary", "fingerprint": "2199c37d2ba114a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0834f15ba47f6ecf", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/submit-google-indexing.js:244)"}, "properties": {"repobilityId": "b5d943427ff1dbc2", "scanner": "scanner-primary", "fingerprint": "0834f15ba47f6ecf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-73bc4b0b83e9e6fd", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/generate-guide-editorials.js:113)"}, "properties": {"repobilityId": "343f76244752096c", "scanner": "scanner-primary", "fingerprint": "73bc4b0b83e9e6fd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-32daf73f20efb24d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-llm-scores.js:119)"}, "properties": {"repobilityId": "97b0a3b8b1880caf", "scanner": "scanner-primary", "fingerprint": "32daf73f20efb24d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-98700da9464f78fc", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-llm-scores.js:207)"}, "properties": {"repobilityId": "7a27a3c3e31e7570", "scanner": "scanner-primary", "fingerprint": "98700da9464f78fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0e11d69ab00cebe9", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-production-flags.js:129)"}, "properties": {"repobilityId": "9f627019158db374", "scanner": "scanner-primary", "fingerprint": "0e11d69ab00cebe9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b10d630bf7e9a9cb", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:114)"}, "properties": {"repobilityId": "0703dbca79f00c3f", "scanner": "scanner-primary", "fingerprint": "b10d630bf7e9a9cb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0508c4f5eadff458", "level": "error", "message": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:227)"}, "properties": {"repobilityId": "d45bb6443dfa916e", "scanner": "scanner-primary", "fingerprint": "0508c4f5eadff458", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cc5eda78a3c2eecb", "level": "error", "message": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:341)"}, "properties": {"repobilityId": "1b1f43cb371d1825", "scanner": "scanner-primary", "fingerprint": "cc5eda78a3c2eecb", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1ae32a76f9750693", "level": "error", "message": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:364)"}, "properties": {"repobilityId": "da3b21b1a6306915", "scanner": "scanner-primary", "fingerprint": "1ae32a76f9750693", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-0f4b75715a9f31c6", "level": "error", "message": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:422)"}, "properties": {"repobilityId": "0cb87b305967db88", "scanner": "scanner-primary", "fingerprint": "0f4b75715a9f31c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c079be869d845c6", "level": "error", "message": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:457)"}, "properties": {"repobilityId": "c342a3eadce9a66e", "scanner": "scanner-primary", "fingerprint": "4c079be869d845c6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-241d32786c0c6f27", "level": "error", "message": {"text": "Dangling fetch: POST https://indexing.googleapis.com/v3/urlNotifications:publish (scripts/check-seo-health.js:545)"}, "properties": {"repobilityId": "5a78cce244b550c0", "scanner": "scanner-primary", "fingerprint": "241d32786c0c6f27", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-7ff75f2e56b9c62b", "level": "error", "message": {"text": "Dangling fetch: POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect (scripts/check-seo-health.js:902)"}, "properties": {"repobilityId": "4405e7dd5360e32a", "scanner": "scanner-primary", "fingerprint": "7ff75f2e56b9c62b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c345fcc3a69b5234", "level": "error", "message": {"text": "Dangling fetch: GET https://www.googleapis.com/webmasters/v3/sites/${siteUrl}/sitemaps (scripts/check-seo-health.js:959)"}, "properties": {"repobilityId": "0e7e4a559a5e69bc", "scanner": "scanner-primary", "fingerprint": "c345fcc3a69b5234", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f1b03fa197bb4864", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-seatplan-audience.js:41)"}, "properties": {"repobilityId": "9b536587906a7796", "scanner": "scanner-primary", "fingerprint": "f1b03fa197bb4864", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7243febcd5edf8f1", "level": "error", "message": {"text": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=2&limit=5 (scripts/check-api-contracts.js:25)"}, "properties": {"repobilityId": "24b3eb3e251ccf9a", "scanner": "scanner-primary", "fingerprint": "7243febcd5edf8f1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-640ceada8a34d205", "level": "error", "message": {"text": "Dangling fetch: GET https://api.todaytix.com/api/v2/shows?location=1&limit=5 (scripts/check-api-contracts.js:51)"}, "properties": {"repobilityId": "6afd4776f560491f", "scanner": "scanner-primary", "fingerprint": "640ceada8a34d205", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3b34a5d589c27eca", "level": "error", "message": {"text": "Dangling fetch: GET https://www.theatremonkey.com/shows/ (scripts/check-api-contracts.js:75)"}, "properties": {"repobilityId": "f1da623e6934fda7", "scanner": "scanner-primary", "fingerprint": "3b34a5d589c27eca", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-37df0fb838c04ebf", "level": "error", "message": {"text": "Dangling fetch: GET https://playbill.com/article/schedule-of-upcoming-london-shows (scripts/check-api-contracts.js:92)"}, "properties": {"repobilityId": "e8ea975d865d2973", "scanner": "scanner-primary", "fingerprint": "37df0fb838c04ebf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8dfd73931bdfcc8e", "level": "error", "message": {"text": "Dangling fetch: GET https://old.reddit.com/r/Broadway/hot.json?limit=3 (scripts/check-api-contracts.js:109)"}, "properties": {"repobilityId": "8f3a2e930f9697ac", "scanner": "scanner-primary", "fingerprint": "8dfd73931bdfcc8e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b3ea939d34ce6c61", "level": "error", "message": {"text": "Dangling fetch: GET https://api.openai.com/v1/responses/${responseId} (scripts/deep-research-commercial.js:204)"}, "properties": {"repobilityId": "7900b05b70be1ccf", "scanner": "scanner-primary", "fingerprint": "b3ea939d34ce6c61", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e76cbff756f60ff7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/responses (scripts/deep-research-commercial.js:307)"}, "properties": {"repobilityId": "89525c02ab779df8", "scanner": "scanner-primary", "fingerprint": "e76cbff756f60ff7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6286904fd651e4cf", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/execute-approved-fix.js:125)"}, "properties": {"repobilityId": "5295dade4b6743d5", "scanner": "scanner-primary", "fingerprint": "6286904fd651e4cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-92728d932506063e", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/opening-night-poller.js:1215)"}, "properties": {"repobilityId": "60aad3ab55886a31", "scanner": "scanner-primary", "fingerprint": "92728d932506063e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-37d3626696776b32", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-related-shows.js:212)"}, "properties": {"repobilityId": "c558dc9cdf7a10a1", "scanner": "scanner-primary", "fingerprint": "37d3626696776b32", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-bb2ff318e1fe1a39", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/get-ai-feedback.js:45)"}, "properties": {"repobilityId": "476d0846cfd9a65d", "scanner": "scanner-primary", "fingerprint": "bb2ff318e1fe1a39", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-eb699d94c6eeada1", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/get-ai-feedback.js:78)"}, "properties": {"repobilityId": "e97db17475806058", "scanner": "scanner-primary", "fingerprint": "eb699d94c6eeada1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-87c7d793cad5c99d", "level": "error", "message": {"text": "Dangling fetch: POST https://us.posthog.com/decide/?v=3 (scripts/validate-ab-test.js:38)"}, "properties": {"repobilityId": "a81794bb6802a42b", "scanner": "scanner-primary", "fingerprint": "87c7d793cad5c99d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-55a50401486a1e63", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:244)"}, "properties": {"repobilityId": "0dd2408216ff0578", "scanner": "scanner-primary", "fingerprint": "55a50401486a1e63", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-c1022d1769748e89", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/sweep-we-aggregators.js:476)"}, "properties": {"repobilityId": "ff39190dcf0d9b98", "scanner": "scanner-primary", "fingerprint": "c1022d1769748e89", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-ea3965164a94b21e", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:799)"}, "properties": {"repobilityId": "143f49dafcc897f8", "scanner": "scanner-primary", "fingerprint": "ea3965164a94b21e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7227e0716bee02a3", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/sweep-we-aggregators.js:1028)"}, "properties": {"repobilityId": "4b924b5dbdf9bcfa", "scanner": "scanner-primary", "fingerprint": "7227e0716bee02a3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-57420dc87c72cc02", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/visual-qa.mjs:421)"}, "properties": {"repobilityId": "231ba61ce5531863", "scanner": "scanner-primary", "fingerprint": "57420dc87c72cc02", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6132fff074d55fa4", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey} (scripts/visual-qa.mjs:449)"}, "properties": {"repobilityId": "507a0f5fcaa4c4f5", "scanner": "scanner-primary", "fingerprint": "6132fff074d55fa4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2c18285bcfebc986", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/send-btc-results.js:177)"}, "properties": {"repobilityId": "6031dbdd086fbfe5", "scanner": "scanner-primary", "fingerprint": "2c18285bcfebc986", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6df14fb04f9a82ad", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/discover-outlet-reviews-serp.js:103)"}, "properties": {"repobilityId": "72ee0241fbdd8d1a", "scanner": "scanner-primary", "fingerprint": "6df14fb04f9a82ad", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-7a67adbd537818a0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${REPO}/issues (scripts/posthog-weekly-insights.js:98)"}, "properties": {"repobilityId": "b4aa92d3c550e7e6", "scanner": "scanner-primary", "fingerprint": "7a67adbd537818a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-99698ba209cd4144", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/scrape-thestage-roundups.js:62)"}, "properties": {"repobilityId": "35e77705cf325b20", "scanner": "scanner-primary", "fingerprint": "99698ba209cd4144", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-b71764cd8b307278", "level": "error", "message": {"text": "Dangling fetch: GET https://formspree.io/api/0/forms/mojdjwqo/submissions?${qs} (scripts/process-feedback.js:94)"}, "properties": {"repobilityId": "28c4f13a28723b08", "scanner": "scanner-primary", "fingerprint": "b71764cd8b307278", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e8904c0ee7179451", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/clear-stale-wrong-show-flags.js:116)"}, "properties": {"repobilityId": "9bd6d3a51ccd7f26", "scanner": "scanner-primary", "fingerprint": "e8904c0ee7179451", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a597a6cd756a36cf", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/audit-touring-contamination.js:448)"}, "properties": {"repobilityId": "07dabd19699264a1", "scanner": "scanner-primary", "fingerprint": "a597a6cd756a36cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-623f59eaa5d10813", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/audit-touring-contamination.js:490)"}, "properties": {"repobilityId": "fce9916ae885ca3f", "scanner": "scanner-primary", "fingerprint": "623f59eaa5d10813", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-11571ec1a4c2ada8", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-wrong-production.js:127)"}, "properties": {"repobilityId": "66ab3817f28aab55", "scanner": "scanner-primary", "fingerprint": "11571ec1a4c2ada8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-4ce5dfc3faeb0f92", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1 (scripts/gather-reviews.js:4221)"}, "properties": {"repobilityId": "1bee8d8a42b3f5f9", "scanner": "scanner-primary", "fingerprint": "4ce5dfc3faeb0f92", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-7f0e379d33c6c401", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/gather-reviews.js:4378)"}, "properties": {"repobilityId": "6fd43420283fb034", "scanner": "scanner-primary", "fingerprint": "7f0e379d33c6c401", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-78196370726759cf", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-pull-quotes.js:180)"}, "properties": {"repobilityId": "60ef8eeacebac41d", "scanner": "scanner-primary", "fingerprint": "78196370726759cf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d5db8f57ac380db4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/fantasy-weekly-email.js:188)"}, "properties": {"repobilityId": "404eab18840291fa", "scanner": "scanner-primary", "fingerprint": "d5db8f57ac380db4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-56c41e6d926ee260", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/evaluate-brightdata-serp.js:69)"}, "properties": {"repobilityId": "67094b5850ae838e", "scanner": "scanner-primary", "fingerprint": "56c41e6d926ee260", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-84d966eafb932862", "level": "error", "message": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/evaluate-brightdata-serp.js:89)"}, "properties": {"repobilityId": "9e83372c3ddb2ee3", "scanner": "scanner-primary", "fingerprint": "84d966eafb932862", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bc251e3ec09be155", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/research-theater-scores.js:103)"}, "properties": {"repobilityId": "d54195f7ed10c5b8", "scanner": "scanner-primary", "fingerprint": "bc251e3ec09be155", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-476a44309737436e", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/extract-explicit-ratings.js:171)"}, "properties": {"repobilityId": "36fdbcb948edada1", "scanner": "scanner-primary", "fingerprint": "476a44309737436e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3c62fb35cea419c7", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/newspapers-com-extract.js:348)"}, "properties": {"repobilityId": "95b9a1e294e09781", "scanner": "scanner-primary", "fingerprint": "3c62fb35cea419c7", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4286c88f2a73240", "level": "error", "message": {"text": "Dangling fetch: GET /api/article/page/${id}/articles (scripts/newspapers-com-extract.js:418)"}, "properties": {"repobilityId": "fcd957603adc72c3", "scanner": "scanner-primary", "fingerprint": "b4286c88f2a73240", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7b33120e9e48e83", "level": "error", "message": {"text": "Dangling fetch: POST https://api.browserbase.com/v1/sessions (scripts/newspapers-com-extract.js:907)"}, "properties": {"repobilityId": "dfc3605c4c09b181", "scanner": "scanner-primary", "fingerprint": "c7b33120e9e48e83", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4b2b34d8106dc31b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/collect-all-reviews.js:71)"}, "properties": {"repobilityId": "29de392489e946bc", "scanner": "scanner-primary", "fingerprint": "4b2b34d8106dc31b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9500620e6117080a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-lbo-audience.js:37)"}, "properties": {"repobilityId": "9b44a67a8c5ad89c", "scanner": "scanner-primary", "fingerprint": "9500620e6117080a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-59205380a0f54bc4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${BD_CUSTOMER}&zone=${BD_ZONE} (scripts/discover-opening-night-reviews.js:166)"}, "properties": {"repobilityId": "18d3b4a8a7abff8b", "scanner": "scanner-primary", "fingerprint": "59205380a0f54bc4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2dd97f9b740b3436", "level": "error", "message": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?response_id=${responseId} (scripts/discover-opening-night-reviews.js:186)"}, "properties": {"repobilityId": "6e838607254936c4", "scanner": "scanner-primary", "fingerprint": "2dd97f9b740b3436", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1268fec3b46aa29b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/thomaspryor/Broadwayscore/issues (scripts/collection-coverage-dashboard.js:356)"}, "properties": {"repobilityId": "fb5cc889a079e6fb", "scanner": "scanner-primary", "fingerprint": "1268fec3b46aa29b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f301777ed82e2966", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/generate-remediation-plan.js:79)"}, "properties": {"repobilityId": "5784838f7449fd45", "scanner": "scanner-primary", "fingerprint": "f301777ed82e2966", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2742bb6797b048ed", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/generate-remediation-plan.js:151)"}, "properties": {"repobilityId": "d799076e1105ce62", "scanner": "scanner-primary", "fingerprint": "2742bb6797b048ed", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-d15dae9191f2f967", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/?api_key=${SCRAPINGBEE_KEY}&url=${encodeURIComponent(ssUrl)}&render_js=false (scripts/fetch-show-images-auto.js:761)"}, "properties": {"repobilityId": "7c4270d9f7cc3e9c", "scanner": "scanner-primary", "fingerprint": "d15dae9191f2f967", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a02273470af70f6b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/eval-v52.js:185)"}, "properties": {"repobilityId": "174b35e0c093dc1d", "scanner": "scanner-primary", "fingerprint": "a02273470af70f6b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-01903068272ba6a0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (scripts/triage-sentry.js:192)"}, "properties": {"repobilityId": "cda7550590bb6d6b", "scanner": "scanner-primary", "fingerprint": "01903068272ba6a0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9909429c1bd7a4d2", "level": "error", "message": {"text": "Dangling fetch: GET https://formspree.io/api/0/forms/${FORM_ID}/submissions?since=${since.toISOString()} (scripts/process-review-formspree.js:63)"}, "properties": {"repobilityId": "20a2aee101b9ca87", "scanner": "scanner-primary", "fingerprint": "9909429c1bd7a4d2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c09140ce8ce1130a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/issues (scripts/process-review-formspree.js:135)"}, "properties": {"repobilityId": "36b85704ca9c7f58", "scanner": "scanner-primary", "fingerprint": "c09140ce8ce1130a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c13944bae7320a14", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repoName}/actions/workflows/process-review-submission.yml/dispatches (scripts/process-review-formspree.js:172)"}, "properties": {"repobilityId": "b86862e78ad37c18", "scanner": "scanner-primary", "fingerprint": "c13944bae7320a14", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b864abef1d19b88d", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/classify-non-reviews.js:153)"}, "properties": {"repobilityId": "8d694a92383ad460", "scanner": "scanner-primary", "fingerprint": "b864abef1d19b88d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3761008749b80711", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/classify-non-reviews.js:230)"}, "properties": {"repobilityId": "567c8bdf7dbbcde6", "scanner": "scanner-primary", "fingerprint": "3761008749b80711", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7974fd07a74c8e98", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/check-cookie-health.js:400)"}, "properties": {"repobilityId": "927ea49717940297", "scanner": "scanner-primary", "fingerprint": "7974fd07a74c8e98", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-c79b06d362f34426", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/collect-review-texts.js:2030)"}, "properties": {"repobilityId": "c6c08637a305b02f", "scanner": "scanner-primary", "fingerprint": "c79b06d362f34426", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-e23204884fd53107", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/ (scripts/collect-review-texts.js:2287)"}, "properties": {"repobilityId": "1fcceff395a97463", "scanner": "scanner-primary", "fingerprint": "e23204884fd53107", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-76c33fabb0f1d8f8", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/collect-review-texts.js:2431)"}, "properties": {"repobilityId": "632bbda45d6bb6f6", "scanner": "scanner-primary", "fingerprint": "76c33fabb0f1d8f8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-8bd5cbf6b18cf078", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/scrape-ltd-audience.js:41)"}, "properties": {"repobilityId": "969fd4bd71f8ae9a", "scanner": "scanner-primary", "fingerprint": "8bd5cbf6b18cf078", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-9d3bfc26f253e184", "level": "error", "message": {"text": "Dangling fetch: POST https://www.browserbase.com/v1/sessions (scripts/test-paywalled-access.js:796)"}, "properties": {"repobilityId": "670ee11696a0f3ca", "scanner": "scanner-primary", "fingerprint": "9d3bfc26f253e184", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-53e645576f36c3ac", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/pre-classify-titles.js:34)"}, "properties": {"repobilityId": "8387ce3b26098d6c", "scanner": "scanner-primary", "fingerprint": "53e645576f36c3ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-21a3febdbdc476f2", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/classify-reviews.js:67)"}, "properties": {"repobilityId": "a3bdde20a7562006", "scanner": "scanner-primary", "fingerprint": "21a3febdbdc476f2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e428eb26e84c998", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/audit-before-share.js:70)"}, "properties": {"repobilityId": "10b406c22ebf9cb2", "scanner": "scanner-primary", "fingerprint": "9e428eb26e84c998", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-efd327c2f5eda043", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/video-reviews/audit-before-share.js:81)"}, "properties": {"repobilityId": "9a7d038817f58719", "scanner": "scanner-primary", "fingerprint": "efd327c2f5eda043", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6dbe08fbd8a75d51", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/eval-prompts.js:81)"}, "properties": {"repobilityId": "77b7775421ecee53", "scanner": "scanner-primary", "fingerprint": "6dbe08fbd8a75d51", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a08815a501420c95", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/video-reviews/score-video-reviews.js:60)"}, "properties": {"repobilityId": "16804afe661242a3", "scanner": "scanner-primary", "fingerprint": "a08815a501420c95", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-29287c8e3044c90f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/closing-date-discovery.js:45)"}, "properties": {"repobilityId": "0daea904a1b889fa", "scanner": "scanner-primary", "fingerprint": "29287c8e3044c90f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-0455c4ea15abe695", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/llm-extractor.js:214)"}, "properties": {"repobilityId": "928e0f991864f214", "scanner": "scanner-primary", "fingerprint": "0455c4ea15abe695", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-a7c8c0de1bfa9c3c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/content-verifier.js:130)"}, "properties": {"repobilityId": "6c40de1679a9a886", "scanner": "scanner-primary", "fingerprint": "a7c8c0de1bfa9c3c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-81387f368cf84dd4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/content-verifier.js:173)"}, "properties": {"repobilityId": "03af44dc99c4407d", "scanner": "scanner-primary", "fingerprint": "81387f368cf84dd4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-698c3af5995331d3", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/ibdb-cast.js:299)"}, "properties": {"repobilityId": "3cd577798dfcfb7b", "scanner": "scanner-primary", "fingerprint": "698c3af5995331d3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-1879697e5d069e3b", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/llm-score-extractor.js:203)"}, "properties": {"repobilityId": "ed8e862ba2b1f9ad", "scanner": "scanner-primary", "fingerprint": "1879697e5d069e3b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-2020bb004af89636", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/reddit-api.js:149)"}, "properties": {"repobilityId": "3f21cc774cdb5029", "scanner": "scanner-primary", "fingerprint": "2020bb004af89636", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-44facea889cf2823", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/serp/req?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE} (scripts/lib/url-discovery.js:259)"}, "properties": {"repobilityId": "7dd9db345805edf0", "scanner": "scanner-primary", "fingerprint": "44facea889cf2823", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d2c40c344d5db6aa", "level": "error", "message": {"text": "Dangling fetch: GET https://api.brightdata.com/serp/get_result?customer=${_BD_CUSTOMER}&zone=${_BD_SERP_ZONE}&response_id=${responseId} (scripts/lib/url-discovery.js:288)"}, "properties": {"repobilityId": "9d6980c9a02d53d6", "scanner": "scanner-primary", "fingerprint": "d2c40c344d5db6aa", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f9dc27d318566abe", "level": "error", "message": {"text": "Dangling fetch: GET https://app.scrapingbee.com/api/v1/store/google (scripts/lib/url-discovery.js:191)"}, "properties": {"repobilityId": "f7138bd621aac0aa", "scanner": "scanner-primary", "fingerprint": "f9dc27d318566abe", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-7eed31d48f273ee4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.brightdata.com/request (scripts/lib/url-discovery.js:335)"}, "properties": {"repobilityId": "a63ff6d03429a61c", "scanner": "scanner-primary", "fingerprint": "7eed31d48f273ee4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "axios"]}}, {"ruleId": "scanner-5baabda1b3d028ac", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/buzz-classifier.js:196)"}, "properties": {"repobilityId": "3d67c8c1428198f3", "scanner": "scanner-primary", "fingerprint": "5baabda1b3d028ac", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-994c776159e17a6e", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/lib/buzz-classifier.js:239)"}, "properties": {"repobilityId": "dbb60a93d2064bb8", "scanner": "scanner-primary", "fingerprint": "994c776159e17a6e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-3bff5c6adf42fc1f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.anthropic.com/v1/messages (scripts/lib/buzz-classifier.js:284)"}, "properties": {"repobilityId": "de148ae872087977", "scanner": "scanner-primary", "fingerprint": "3bff5c6adf42fc1f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-acb59ceb78ff48bf", "level": "error", "message": {"text": "Dangling fetch: GET https://www.broadwayworld.com/bwwopera/reviews (scripts/lib/bww-opera-discover.js:58)"}, "properties": {"repobilityId": "bbcb60980555a031", "scanner": "scanner-primary", "fingerprint": "acb59ceb78ff48bf", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:fetcher"]}}, {"ruleId": "scanner-efc6e906914621e4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/lib/page-validator.js:82)"}, "properties": {"repobilityId": "210a6f4d28530acc", "scanner": "scanner-primary", "fingerprint": "efc6e906914621e4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-74b23099b63a555d", "level": "error", "message": {"text": "Dangling fetch: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${process.env.GEMINI_API_KEY} (scripts/llm-scoring/sanity-v6-single.mjs:37)"}, "properties": {"repobilityId": "f23ec4b995e87a36", "scanner": "scanner-primary", "fingerprint": "74b23099b63a555d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-064a42c8ee3b7155", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (scripts/newsletter/send-test.mjs:81)"}, "properties": {"repobilityId": "53c396af4d6b27cf", "scanner": "scanner-primary", "fingerprint": "064a42c8ee3b7155", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a6d39b5f68c5326", "level": "error", "message": {"text": "Dangling fetch: POST https://openrouter.ai/api/v1/chat/completions (scripts/llm-scoring/kimi-scorer.ts:70)"}, "properties": {"repobilityId": "51727667909739ba", "scanner": "scanner-primary", "fingerprint": "9a6d39b5f68c5326", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-2961ab941cf98e85", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/comparative-rescore.ts:131)"}, "properties": {"repobilityId": "83e6ccb5562d3dc0", "scanner": "scanner-primary", "fingerprint": "2961ab941cf98e85", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5666ece91bceff4c", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:159)"}, "properties": {"repobilityId": "7e7994a14b413fe4", "scanner": "scanner-primary", "fingerprint": "5666ece91bceff4c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d49cb7b8ff207f79", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (scripts/llm-scoring/openai-scorer.ts:314)"}, "properties": {"repobilityId": "d5fb9200a2a74c7c", "scanner": "scanner-primary", "fingerprint": "d49cb7b8ff207f79", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6bc974e87549d495", "level": "error", "message": {"text": "Dangling fetch: GET /data/search-shows.json (src/components/HeaderSearch.tsx:49)"}, "properties": {"repobilityId": "f83ac3f3dce5815e", "scanner": "scanner-primary", "fingerprint": "6bc974e87549d495", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-589c6eea1d287a06", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/components/EmailCaptureModal.tsx:158)"}, "properties": {"repobilityId": "b30df7b83a436c27", "scanner": "scanner-primary", "fingerprint": "589c6eea1d287a06", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9a1e13728f4e7d4b", "level": "error", "message": {"text": "Dangling fetch: GET /data/homepage-archive.json${cacheBust} (src/components/HomePageClient.tsx:256)"}, "properties": {"repobilityId": "f5cc2efd2ccdbcb6", "scanner": "scanner-primary", "fingerprint": "9a1e13728f4e7d4b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c7323e4155a599b8", "level": "error", "message": {"text": "Dangling fetch: GET https://broadwayscorecard.com/brand-tokens.json (src/app/brand/BrandPageClient.tsx:160)"}, "properties": {"repobilityId": "cd99862e3f4c7f58", "scanner": "scanner-primary", "fingerprint": "c7323e4155a599b8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4a889fa661d51e07", "level": "error", "message": {"text": "Dangling fetch: GET /data/show-lookup.json (src/app/my-shows/MyShowsClient.tsx:136)"}, "properties": {"repobilityId": "480cd086a518e65d", "scanner": "scanner-primary", "fingerprint": "4a889fa661d51e07", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57d06b811d1b059b", "level": "error", "message": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/my-shows/MezzanineImport.tsx:85)"}, "properties": {"repobilityId": "c45ea151e1301b25", "scanner": "scanner-primary", "fingerprint": "57d06b811d1b059b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-bf50860b265ce5b1", "level": "error", "message": {"text": "Dangling fetch: GET /data/diary-search.json (src/app/my-shows/MezzanineImport.tsx:86)"}, "properties": {"repobilityId": "08a864f1fd1bc8de", "scanner": "scanner-primary", "fingerprint": "bf50860b265ce5b1", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-475ff93341dda266", "level": "error", "message": {"text": "Dangling fetch: GET /api/beat-the-critics/pick-stats (src/app/beat-the-critics/BeatTheCriticsClient.tsx:305)"}, "properties": {"repobilityId": "fe781cacf316ba94", "scanner": "scanner-primary", "fingerprint": "475ff93341dda266", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-fbe0f52a4f59219e", "level": "error", "message": {"text": "Dangling fetch: POST /api/beat-the-critics/send-picks (src/app/beat-the-critics/BeatTheCriticsClient.tsx:390)"}, "properties": {"repobilityId": "1f9963f31ca62da2", "scanner": "scanner-primary", "fingerprint": "fbe0f52a4f59219e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-9e0782c5d5b22ba8", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/beat-the-critics/BeatTheCriticsClient.tsx:402)"}, "properties": {"repobilityId": "8d0898c200459dac", "scanner": "scanner-primary", "fingerprint": "9e0782c5d5b22ba8", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-00b34ed46f72185d", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${id} (src/app/api/resend-webhook/route.ts:111)"}, "properties": {"repobilityId": "4f7f1fe6fe61a533", "scanner": "scanner-primary", "fingerprint": "00b34ed46f72185d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1220717b75606e4f", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:166)"}, "properties": {"repobilityId": "7770bf2da57aee67", "scanner": "scanner-primary", "fingerprint": "1220717b75606e4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-ee95b8bed86971e6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.resend.com/emails (src/app/api/beat-the-critics/send-picks/route.ts:273)"}, "properties": {"repobilityId": "272f8234f55183ff", "scanner": "scanner-primary", "fingerprint": "ee95b8bed86971e6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9ed669fed466279", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/api/unsubscribe/route.ts:36)"}, "properties": {"repobilityId": "0648e62c5df9a7ef", "scanner": "scanner-primary", "fingerprint": "c9ed669fed466279", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d736edff2699287b", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-fix/route.ts:17)"}, "properties": {"repobilityId": "e988c61ce8f5da07", "scanner": "scanner-primary", "fingerprint": "d736edff2699287b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-f81b1a06a8ececf0", "level": "error", "message": {"text": "Dangling fetch: POST https://api.github.com/repos/${owner}/${repo}/issues (src/app/api/submit-review/route.ts:50)"}, "properties": {"repobilityId": "f4528f60c4aca55d", "scanner": "scanner-primary", "fingerprint": "f81b1a06a8ececf0", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dade8e3e37d8a163", "level": "error", "message": {"text": "Dangling fetch: GET https://api.github.com${path} (src/app/api/approve-broadcast/route.ts:32)"}, "properties": {"repobilityId": "498f94c7d0fd5883", "scanner": "scanner-primary", "fingerprint": "dade8e3e37d8a163", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6a9a283529bec771", "level": "error", "message": {"text": "Dangling fetch: GET /data/show-lookup.json (src/app/list/[slug]/SharedListClient.tsx:126)"}, "properties": {"repobilityId": "eb2f0cce336497b4", "scanner": "scanner-primary", "fingerprint": "6a9a283529bec771", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a3f10f199486baf4", "level": "error", "message": {"text": "Dangling fetch: GET /data/shows/${id}.json (src/app/list/[slug]/SharedListClient.tsx:143)"}, "properties": {"repobilityId": "06a92f4fa646b0f9", "scanner": "scanner-primary", "fingerprint": "a3f10f199486baf4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-660d97b7413bbb96", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/app/unsubscribe/UnsubscribeClient.tsx:41)"}, "properties": {"repobilityId": "13e82f7171f3ed9e", "scanner": "scanner-primary", "fingerprint": "660d97b7413bbb96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c9319c7f2bfadc40", "level": "error", "message": {"text": "Dangling fetch: GET /api/admin/affiliate-stats?${params.toString()} (src/app/admin/affiliate/Dashboard.tsx:183)"}, "properties": {"repobilityId": "d970aa3e589c2131", "scanner": "scanner-primary", "fingerprint": "c9319c7f2bfadc40", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-708ae487861a7c9b", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/ingest-review/detect (src/app/admin/ingest/IngestForm.tsx:280)"}, "properties": {"repobilityId": "e30d1551e1ec46df", "scanner": "scanner-primary", "fingerprint": "708ae487861a7c9b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-be2e0965ca06833d", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:340)"}, "properties": {"repobilityId": "b8d4f70309e9e625", "scanner": "scanner-primary", "fingerprint": "be2e0965ca06833d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a29f6d51e341df75", "level": "error", "message": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/admin/ingest/IngestForm.tsx:573)"}, "properties": {"repobilityId": "b14b6497b3ab683f", "scanner": "scanner-primary", "fingerprint": "a29f6d51e341df75", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-1db3dbf2fe045ca3", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/ingest-review (src/app/admin/ingest/IngestForm.tsx:644)"}, "properties": {"repobilityId": "74a4e83817051520", "scanner": "scanner-primary", "fingerprint": "1db3dbf2fe045ca3", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-86daa2c03652f880", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/dispatch-rebuild (src/app/admin/ingest/IngestForm.tsx:706)"}, "properties": {"repobilityId": "6fb8f60d48692eba", "scanner": "scanner-primary", "fingerprint": "86daa2c03652f880", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6d88938fe598c40b", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/LocksTable.tsx:216)"}, "properties": {"repobilityId": "e0103d9a121ea459", "scanner": "scanner-primary", "fingerprint": "6d88938fe598c40b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-782c9e83dbf60015", "level": "error", "message": {"text": "Dangling fetch: GET /data/search-shows.json (src/app/admin/locks/new/LockForm.tsx:66)"}, "properties": {"repobilityId": "b042c358cf223cd0", "scanner": "scanner-primary", "fingerprint": "782c9e83dbf60015", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-57d756d76c138900", "level": "error", "message": {"text": "Dangling fetch: POST /api/admin/lock-score (src/app/admin/locks/new/LockForm.tsx:114)"}, "properties": {"repobilityId": "0fbe279622b07503", "scanner": "scanner-primary", "fingerprint": "57d756d76c138900", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-e89cb195a4adc1a2", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${FORMSPREE_FOLLOW_FORM_ID} (src/app/unfollow/UnfollowClient.tsx:40)"}, "properties": {"repobilityId": "72da080ec888ad6f", "scanner": "scanner-primary", "fingerprint": "e89cb195a4adc1a2", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-18c696b140a65d96", "level": "error", "message": {"text": "Dangling fetch: GET /api/fantasy/leagues/${code} (src/app/fantasy/league/[code]/page.tsx:50)"}, "properties": {"repobilityId": "a9d3b5cb1ee99be4", "scanner": "scanner-primary", "fingerprint": "18c696b140a65d96", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d4e9f08c619efe1c", "level": "error", "message": {"text": "Dangling fetch: GET /api/fantasy/leaderboard?league=${code} (src/app/fantasy/league/[code]/page.tsx:51)"}, "properties": {"repobilityId": "3b4e307a54dccbbd", "scanner": "scanner-primary", "fingerprint": "d4e9f08c619efe1c", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97e6e17545076060", "level": "error", "message": {"text": "Dangling fetch: POST /api/fantasy/draft (src/app/fantasy/draft/page.tsx:107)"}, "properties": {"repobilityId": "0c6a1a2febc4af3e", "scanner": "scanner-primary", "fingerprint": "97e6e17545076060", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4c9ca91ee86bd603", "level": "error", "message": {"text": "Dangling fetch: POST /api/fantasy/leagues (src/app/fantasy/create-league/page.tsx:20)"}, "properties": {"repobilityId": "c9bd1854c298860c", "scanner": "scanner-primary", "fingerprint": "4c9ca91ee86bd603", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-127ab4158a32a7a6", "level": "error", "message": {"text": "Dangling fetch: POST https://formspree.io/f/${formId} (src/hooks/useFormspreeCapture.ts:86)"}, "properties": {"repobilityId": "a09e4d99e59aa3f2", "scanner": "scanner-primary", "fingerprint": "127ab4158a32a7a6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-19a1a46befe3d6a6", "level": "note", "message": {"text": "Unused endpoint: DELETE "}, "properties": {"repobilityId": "233fd5efc962aa6b", "scanner": "scanner-primary", "fingerprint": "19a1a46befe3d6a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}