{"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-c3a7ee43d97a17b2", "name": "Stray `console.log` in TS/JS \u2014 frontend/collect-baseline.js:67", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/collect-baseline.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-213f43b68440ae46", "name": "Stray `console.log` in TS/JS \u2014 frontend/scripts/remove-text-effects.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/remove-text-effects.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-5beb8e3c9b871669", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/global-test-cleanup.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/global-test-cleanup.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cea3fa9aba68118a", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/testInfrastructure.ts:154", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/testInfrastructure.ts:154"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4e41d873e0bba78", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/migrationMetrics.ts:168", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/migrationMetrics.ts: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-411b9ddecb23e751", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/AccessibilityTestingExamples.test.tsx:638", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/AccessibilityTestingExamples.test.tsx:638"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e02c5eee3d05d73", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/ComponentTestingExamples.test.tsx:284", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/ComponentTestingExamples.test.tsx:284"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dfb6e3ec62441da", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ChartTooltip.tsx:150", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ChartTooltip.tsx:150"}, "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-2faa0a1a1c738ba8", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MilestonesCallout.tsx:248", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MilestonesCallout.tsx:248"}, "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-b1ec4dc53ecedddb", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TopGrowthClubs.tsx:178", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TopGrowthClubs.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-76afaa8b0f0053d1", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/UpcomingAnniversariesPanel.tsx:187", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/UpcomingAnniversariesPanel.tsx:187"}, "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-6a7d65ddb1266a99", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LongestServingClubsLeaderboard.tsx:130", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LongestServingClubsLeaderboard.tsx:130"}, "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-98dda00d67b1afe0", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProspectiveClubsPanel.tsx:60", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProspectiveClubsPanel.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-1c554d175b77ac00", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AreaPerformanceChart.tsx:194", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AreaPerformanceChart.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-6d011517673c8e13", "name": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LeadershipInsights.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LeadershipInsights.tsx:179"}, "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-26a2539e5490bf2a", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/components/__tests__/ClubsTable.performance.test.tsx:124", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/__tests__/ClubsTable.performance.test.tsx: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-89dfc40c68a7ef26", "name": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useClubTrends.ts:53", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useClubTrends.ts:53"}, "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-8c18fa30c9fc2e66", "name": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/PropertyTestTemplate.example.tsx:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/PropertyTestTemplate.example.tsx:14"}, "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-220ec048f9eb746a", "name": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/IntegrationTestTemplate.example.tsx:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/IntegrationTestTemplate.example.tsx:14"}, "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-1df6bec1a65f513b", "name": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/ComponentTestTemplate.example.tsx:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/ComponentTestTemplate.example.tsx:24"}, "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-f3018d75614c624c", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-gcs-deletions.ts:59", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-gcs-deletions.ts:59"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b5b0fa4584c9bb20", "name": "Stray `console.log` in TS/JS \u2014 scripts/validate-test-standards.js:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-test-standards.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-2f1df4ab9edd1c27", "name": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-analytics.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-analytics.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-63267ce61024582b", "name": "Stray `console.log` in TS/JS \u2014 scripts/update-closing-date-registry.ts:120", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-closing-date-registry.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-05de2efd25504358", "name": "Stray `console.log` in TS/JS \u2014 scripts/detect-snapshot-anomalies.ts:442", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-snapshot-anomalies.ts:442"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0de9f4c1465d0eda", "name": "Stray `console.log` in TS/JS \u2014 scripts/relevant-lessons.ts:86", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/relevant-lessons.ts:86"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ca68e83cd98329db", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-snapshot-index.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-snapshot-index.ts:84"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-612dd338037cb313", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-daily-snapshots.ts:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-daily-snapshots.ts:116"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-926cb88f10e0702f", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-csv-date-mismatches.ts:153", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-csv-date-mismatches.ts:153"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-235c439cb2935610", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-month-end-pipeline.ts:110", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-month-end-pipeline.ts:110"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ce61b41e618edd09", "name": "Stray `console.log` in TS/JS \u2014 scripts/measure-workflow-performance.js:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/measure-workflow-performance.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-91ef090c680e7c77", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-prod-reconcile.ts:115", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-prod-reconcile.ts:115"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fbc0a4f5fbf045bb", "name": "Stray `console.log` in TS/JS \u2014 scripts/find-month-end-dates.ts:62", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-month-end-dates.ts:62"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53f9f149bd120b77", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-raw-csv-for-dates.ts:133", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-raw-csv-for-dates.ts:133"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2af02cee45ee9d54", "name": "Stray `console.log` in TS/JS \u2014 scripts/prune-skeleton-sync.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-skeleton-sync.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a50b2adf395af48", "name": "Stray `console.log` in TS/JS \u2014 scripts/verify-toolchain-functionality.js:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-toolchain-functionality.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-cb5e523b1ac3b7d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/rescrape-historical.ts:140", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rescrape-historical.ts:140"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-643e314f9405db3e", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-month-end-snapshots.ts:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-month-end-snapshots.ts:138"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-380c26b9890bf21f", "name": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/cliHelpers.ts:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/cliHelpers.ts:43"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-79184902f12244ef", "name": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/__tests__/cli-stdout-flush.test.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/__tests__/cli-stdout-flush.test.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04c8459e7706cf29", "name": "Stray `console.log` in TS/JS \u2014 packages/analytics-core/src/analytics/__tests__/no-stdout-leak.test.ts:5", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/analytics-core/src/analytics/__tests__/no-stdout-leak.test.ts:5"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-472e6eac93f3279c", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/validation/validators.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/validation/validators.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5538eff33ac0af2a", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/time-series.schema.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/time-series.schema.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-417dfe2d062ca6f6", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-metadata.schema.ts:29", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-metadata.schema.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-52839c64bb67ed87", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/all-districts-rankings.schema.ts:162", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/all-districts-rankings.schema.ts:162"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db5e1f61e42d57f1", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/per-district-data.schema.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/per-district-data.schema.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-e2a3893ad449331e", "name": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-pointer.schema.ts:31", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-pointer.schema.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-a5c4a86516a83bb3", "name": "Privileged port 9 in use", "shortDescription": {"text": "Privileged port 9 in use"}, "fullDescription": {"text": "Port 9 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-a399389f5f17b106", "name": "Runtime dotenv file present in repo: frontend/.env.production", "shortDescription": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "fullDescription": {"text": "`frontend/.env.production` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-26d9f8a7dab27c5a", "name": "Insecure pattern 'node_child_process' in frontend/scripts/lib/listVitestFiles.mjs:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/lib/listVitestFiles.mjs: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-0dda69f0ceafdf19", "name": "Insecure pattern 'node_child_process' in frontend/src/__tests__/utils/migrationValidator.ts:8", "shortDescription": {"text": "Insecure pattern 'node_child_process' in frontend/src/__tests__/utils/migrationValidator.ts:8"}, "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-a88bb1339ed0e422", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-session-internals.html:1237", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-session-internals.html:1237"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-597b44e118cea446", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-diagram.html:1037", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-diagram.html:1037"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b60bbec042c91e30", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/club-redesign-2026-05/club-reference.html:572", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/club-redesign-2026-05/club-reference.html:572"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-08a4bf575c570e64", "name": "Insecure pattern 'node_child_process' in scripts/run-flake-detection.ts:33", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/run-flake-detection.ts:33"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ab914e8557658110", "name": "Insecure pattern 'cors_wildcard' in scripts/lighthouse-cdn-server.mjs:106", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/lighthouse-cdn-server.mjs:106"}, "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-55d3703cf15584ad", "name": "Insecure pattern 'node_child_process' in scripts/relevant-lessons.ts:16", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/relevant-lessons.ts: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-fdc8d46e349a47a0", "name": "Insecure pattern 'node_child_process' in scripts/prune-month-end-pipeline.ts:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/prune-month-end-pipeline.ts:23"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3b8038f475dfc3f2", "name": "Insecure pattern 'node_child_process' in scripts/measure-workflow-performance.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/measure-workflow-performance.js:12"}, "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-345b48041b45ef31", "name": "Insecure pattern 'node_child_process' in scripts/verify-toolchain-functionality.js:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/verify-toolchain-functionality.js:12"}, "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-5c91f1ad54a0c813", "name": "Insecure pattern 'node_child_process' in scripts/generate-month-end-snapshots.ts:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/generate-month-end-snapshots.ts:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a02665c6a293b928", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "treosh/lighthouse-ci-action@v12 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-cbe310f193a6df9f", "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-ec9058980fca64f1", "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@v6 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-b616b200f99f116e", "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-28c4a04bd807da0c", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-ad6701f0a8405e22", "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-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v6 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-7f1e4527e6fecffa", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "aquasecurity/trivy-action@master 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": "high", "confidence": 1.0}}, {"id": "scanner-64192a3c67110d01", "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-d41a09c65ea24243", "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@v6 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-679fbe0ddcc44e2c", "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@v6 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-174ad19215f52177", "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@v6 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-38af402e0204e8f4", "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-db035bf3643ddc11", "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@v6 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-76c64d601e1994a8", "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@v6 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-2f851bc7a42598d8", "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-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-959e185358f35aac", "name": "Very large file: frontend/src/utils/__tests__/divisionStatus.property.test.ts (1760 lines)", "shortDescription": {"text": "Very large file: frontend/src/utils/__tests__/divisionStatus.property.test.ts (1760 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-fb0dcf9f611bf656", "name": "Very large file: frontend/src/utils/__tests__/extractDivisionPerformance.test.ts (3818 lines)", "shortDescription": {"text": "Very large file: frontend/src/utils/__tests__/extractDivisionPerformance.test.ts (3818 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-96e0c2b1038466c3", "name": "Very large file: frontend/src/pages/DistrictsPage.tsx (1792 lines)", "shortDescription": {"text": "Very large file: frontend/src/pages/DistrictsPage.tsx (1792 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-326bf37687d265f7", "name": "Very large file: scripts/sprint-runner.sh (1148 lines)", "shortDescription": {"text": "Very large file: scripts/sprint-runner.sh (1148 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-4b83174be61c3857", "name": "Very large file: packages/collector-cli/src/cli.ts (1886 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/cli.ts (1886 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-d633cdd06992ab9c", "name": "Very large file: packages/collector-cli/src/__tests__/UploadService.test.ts (2116 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/__tests__/UploadService.test.ts (2116 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-6bcd1491597538a4", "name": "Very large file: packages/collector-cli/src/__tests__/AnalyticsWriter.test.ts (2723 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/__tests__/AnalyticsWriter.test.ts (2723 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-f48b2884f24af789", "name": "Very large file: packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts (2748 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts (2748 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-59617243c6857c11", "name": "Very large file: packages/collector-cli/src/__tests__/TransformService.test.ts (2202 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/__tests__/TransformService.test.ts (2202 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-899dacc67ef337ad", "name": "Very large file: packages/collector-cli/src/__tests__/pipeline.integration.test.ts (1695 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/__tests__/pipeline.integration.test.ts (1695 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-cd8fdd001038d07a", "name": "Very large file: packages/collector-cli/src/services/TransformService.ts (2297 lines)", "shortDescription": {"text": "Very large file: packages/collector-cli/src/services/TransformService.ts (2297 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-e4beec3ec07cdbf8", "name": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.test.ts (2570 lines)", "shortDescription": {"text": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.test.ts (2570 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-144be3eac5f991e2", "name": "Very large file: packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts (1762 lines)", "shortDescription": {"text": "Very large file: packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts (1762 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-8c910bbb568758aa", "name": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.ts (1706 lines)", "shortDescription": {"text": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.ts (1706 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-a5544383863f42fe", "name": "Very large file: packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.test.ts (1654 line", "shortDescription": {"text": "Very large file: packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.test.ts (1654 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-e753bb74bf2afc61", "name": "Very large file: packages/analytics-core/src/transformation/DataTransformer.test.ts (1866 lines)", "shortDescription": {"text": "Very large file: packages/analytics-core/src/transformation/DataTransformer.test.ts (1866 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-6611ff22818b6a92", "name": "31 TODO/FIXME markers", "shortDescription": {"text": "31 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e8a76eb13fd3249", "name": "Node manifest has dependencies but no lockfile: frontend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: frontend/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea8f0e69b935b85d", "name": "Node manifest has dependencies but no lockfile: packages/collector-cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/collector-cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8f3984dfb76a50f0", "name": "Node manifest has dependencies but no lockfile: packages/analytics-core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/analytics-core/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6cf7d86f806aee43", "name": "Node manifest has dependencies but no lockfile: packages/mcp-server/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/mcp-server/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f44378deca34a134", "name": "Node manifest has dependencies but no lockfile: packages/shared-contracts/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared-contracts/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 462 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 69 placeholder/mock markers across 34 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing lockfile. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e835b645fa5da6eb", "name": "Commented-code block (7 lines) in lighthouserc.js:11", "shortDescription": {"text": "Commented-code block (7 lines) in lighthouserc.js:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ad60729a53585c4", "name": "Commented-code block (6 lines) in frontend/vitest.shared.mjs:11", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/vitest.shared.mjs:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87309b421a56d649", "name": "Commented-code block (9 lines) in frontend/vitest.config.ts:9", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/vitest.config.ts: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-0f8eb086bc62ea7a", "name": "Commented-code block (5 lines) in frontend/src/__tests__/test-utils.tsx:80", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/test-utils.tsx: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-1bf82e8e5cacdb05", "name": "Commented-code block (9 lines) in frontend/src/__tests__/setup.ts:94", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/__tests__/setup.ts: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-8a4f6cc1b8e9547b", "name": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/district-panel-surfaces.test.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/district-panel-surfaces.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-953e0bf75e90bdeb", "name": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/structure.test.ts:40", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/structure.test.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-a1e45ccdfb6da224", "name": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/district-breakpoints.test.ts:8", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/district-breakpoints.test.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-8a32082751bb1c5f", "name": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/small-text-light-mode.test.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/small-text-light-mode.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-048c8e00191ab27c", "name": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/unmitigated-color-utilities.test.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/unmitigated-color-utilities.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ae2a31c6c9fdb57", "name": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/region-dark-variant-scope.test.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/region-dark-variant-scope.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-925fcd3b46c8d34a", "name": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/opacity-variants-dark.test.ts:7", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/opacity-variants-dark.test.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e521994d123e24f7", "name": "Commented-code block (12 lines) in frontend/src/__tests__/css-migration/redesign-tokens.test.ts:172", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/src/__tests__/css-migration/redesign-tokens.test.ts:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18805d93ca90ae5f", "name": "Commented-code block (8 lines) in frontend/src/__tests__/components/AppShell.test.tsx:224", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/components/AppShell.test.tsx:224"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f13d57841f01178", "name": "Commented-code block (6 lines) in frontend/src/__tests__/components/componentMigrations.test.tsx:12", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/components/componentMigrations.test.tsx:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e78c5d5f0327719f", "name": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubDarkModeContrast.test.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubDarkModeContrast.test.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e8a245779e061fb", "name": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/ClubsTable.axe.test.tsx:1", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/ClubsTable.axe.test.tsx: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-2c545dcf4031913c", "name": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubDCPGoalsPanel.axe.test.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubDCPGoalsPanel.axe.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a04ddb3e2d80b036", "name": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/GlobalRankingsAccessibility.test.tsx:35", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/GlobalRankingsAccessibility.test.tsx: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-bc51720fde376b64", "name": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubsControlsDarkModeContrast.test.ts:178", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubsControlsDarkModeContrast.test.ts:178"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3a3de0ebdb7bee28", "name": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubsTableDarkModeContrast.test.ts:288", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubsTableDarkModeContrast.test.ts:288"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-18d64d860f212afd", "name": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionDarkModeContrast.test.ts:308", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionDarkModeContrast.test.ts:308"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9c4a0a63ca5a8e19", "name": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/DistrictDetailPage.axe.test.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/DistrictDetailPage.axe.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eee42c74e7732b98", "name": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionPage.axe.test.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionPage.axe.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba46ac7c29d47457", "name": "Commented-code block (10 lines) in frontend/src/__tests__/lint/set-state-in-effect.test.ts:16", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/__tests__/lint/set-state-in-effect.test.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-310160257b4f3624", "name": "Commented-code block (5 lines) in frontend/src/utils/errorTelemetry.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/errorTelemetry.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e24f71c77b077fcd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/errorTelemetry.ts:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/errorTelemetry.ts:141"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4e18fceefc91eebf", "name": "Commented-code block (5 lines) in frontend/src/utils/aggregateRegions.ts:180", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/aggregateRegions.ts: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-affd2067f0a8327c", "name": "Commented-code block (5 lines) in frontend/src/utils/dcpProjections.ts:152", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/dcpProjections.ts:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8f7614e6f0ec33f6", "name": "Commented-code block (5 lines) in frontend/src/utils/__tests__/formatCharterDate.test.ts:48", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/formatCharterDate.test.ts:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-de1e0ba2ac375a12", "name": "Commented-code block (5 lines) in frontend/src/utils/__tests__/membersToDistinguished.test.ts:172", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/membersToDistinguished.test.ts:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-77f97f75a99b07d0", "name": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractEducationLevels.test.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractEducationLevels.test.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-934401d79d77b66d", "name": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractDivisionPerformance.test.ts:1456", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractDivisionPerformance.test.ts:1456"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-570fbcde024ad889", "name": "Commented-code block (5 lines) in frontend/src/components/ErrorPage.tsx:39", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ErrorPage.tsx: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-58b3b2d366fb47d0", "name": "Commented-code block (5 lines) in frontend/src/components/ClubsTable.tsx:48", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ClubsTable.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-6a2de2438c4eef5e", "name": "Commented-code block (5 lines) in frontend/src/components/AwardsRaceSection.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/AwardsRaceSection.tsx: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-99773b74ea592a7a", "name": "Commented-code block (6 lines) in frontend/src/components/YearOverYearComparison.tsx:185", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/YearOverYearComparison.tsx: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-a66641eabcc01ea2", "name": "Commented-code block (7 lines) in frontend/src/components/JumpToChip.tsx:104", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/JumpToChip.tsx: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-5992e8267391eac8", "name": "Commented-code block (5 lines) in frontend/src/components/DatePairPicker.tsx:51", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/DatePairPicker.tsx:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-523e79cb26faf753", "name": "Commented-code block (5 lines) in frontend/src/components/NotableDatesSection.tsx:94", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/NotableDatesSection.tsx: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-d83566f5fc795103", "name": "Commented-code block (6 lines) in frontend/src/components/DataControlsBar.tsx:24", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/DataControlsBar.tsx: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-b8a424f0746cfe15", "name": "Commented-code block (9 lines) in frontend/src/components/KpiBulletCard.tsx:68", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/components/KpiBulletCard.tsx: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-0fd46850080280d8", "name": "Commented-code block (7 lines) in frontend/src/components/__tests__/ChartSkeleton.test.tsx:44", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/__tests__/ChartSkeleton.test.tsx:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58c5b6362945f394", "name": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubsTable.test.tsx:753", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubsTable.test.tsx:753"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d7e058861f0c8546", "name": "Commented-code block (7 lines) in frontend/src/components/__tests__/DatePairPicker.test.tsx:68", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/components/__tests__/DatePairPicker.test.tsx: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-4dd0e30353461393", "name": "Commented-code block (5 lines) in frontend/src/components/__tests__/DataControlsBar.test.tsx:90", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/DataControlsBar.test.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-28026dc4b3bb64ec", "name": "Commented-code block (10 lines) in frontend/src/components/__tests__/DateSelector.integration.test.tsx:52", "shortDescription": {"text": "Commented-code block (10 lines) in frontend/src/components/__tests__/DateSelector.integration.test.tsx: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-82ad2d3570b9b9c5", "name": "Commented-code block (8 lines) in frontend/src/components/__tests__/KpiBulletCard.test.tsx:134", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/__tests__/KpiBulletCard.test.tsx: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-8837c8e22c4eb41f", "name": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubCard.test.tsx:93", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubCard.test.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-9f36b2e35554c488", "name": "Commented-code block (5 lines) in frontend/src/components/__tests__/DivisionCriteriaExplanation.test.tsx:29", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/DivisionCriteriaExplanation.test.tsx: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-ea79098d9ec249de", "name": "Commented-code block (6 lines) in frontend/src/components/__tests__/ClubsTable.reskin.test.tsx:129", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/__tests__/ClubsTable.reskin.test.tsx:129"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-53853b7643064da4", "name": "Commented-code block (5 lines) in frontend/src/components/lazy/LazyComparisonPanel.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/lazy/LazyComparisonPanel.tsx: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-f2700c286e1b11bc", "name": "Commented-code block (6 lines) in frontend/src/components/lazy/__tests__/LazyComparisonPanel.test.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/lazy/__tests__/LazyComparisonPanel.test.tsx: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-8219f894d2455533", "name": "Commented-code block (6 lines) in frontend/src/components/filters/NumericFilter.tsx:35", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/filters/NumericFilter.tsx: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-84a41c5197b8e430", "name": "Commented-code block (8 lines) in frontend/src/pages/DivisionPage.tsx:77", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/DivisionPage.tsx: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-f1643eb47cd1621b", "name": "Commented-code block (6 lines) in frontend/src/pages/DistrictClubsPage.tsx:98", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/DistrictClubsPage.tsx:98"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-983e982e97ea4921", "name": "Commented-code block (5 lines) in frontend/src/pages/AreaRedirectPage.tsx:34", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/AreaRedirectPage.tsx: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-0b786d16b19e2469", "name": "Commented-code block (5 lines) in frontend/src/pages/MethodologyPage.tsx:89", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/MethodologyPage.tsx: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-687be22e74b763fa", "name": "Commented-code block (5 lines) in frontend/src/pages/DistrictChangesPage.tsx:79", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictChangesPage.tsx: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-348518d220e3ce2b", "name": "Commented-code block (6 lines) in frontend/src/pages/AreaPage.tsx:40", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/AreaPage.tsx: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-17e55470f4e8f29b", "name": "Commented-code block (5 lines) in frontend/src/pages/RegionPage.tsx:347", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/RegionPage.tsx:347"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ba1b4cd03757cfef", "name": "Commented-code block (5 lines) in frontend/src/pages/DistrictTrendsPage.tsx:141", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictTrendsPage.tsx: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-be23811c1f8d4c03", "name": "Legacy-named symbol `distinguished__copy` in frontend/src/pages/ClubDetailPage.tsx:920", "shortDescription": {"text": "Legacy-named symbol `distinguished__copy` in frontend/src/pages/ClubDetailPage.tsx:920"}, "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-80b43f189a5f6915", "name": "Commented-code block (5 lines) in frontend/src/pages/ClubDetailPage.tsx:38", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/ClubDetailPage.tsx: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-000eecf75d657cdd", "name": "Commented-code block (8 lines) in frontend/src/pages/DistrictsPage.tsx:41", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/pages/DistrictsPage.tsx: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-55b18466737c10d5", "name": "Commented-code block (5 lines) in frontend/src/pages/DistrictDetailPage.tsx:194", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictDetailPage.tsx:194"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43c89e804b95361e", "name": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.awardsDefer.test.tsx:144", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.awardsDefer.test.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-8e87ed3face64296", "name": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx:147", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx: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-6b1c7058c2975a5f", "name": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.test.tsx:244", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.test.tsx:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d368ac301209e237", "name": "Commented-code block (9 lines) in frontend/src/pages/__tests__/mobile-ux.test.tsx:42", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/pages/__tests__/mobile-ux.test.tsx: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-738f8f7de8138722", "name": "Commented-code block (5 lines) in frontend/src/pages/__tests__/ClubDetailPage.test.tsx:243", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/ClubDetailPage.test.tsx: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-cd89405a3679bfd5", "name": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.sortable.test.tsx:49", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.sortable.test.tsx: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-3308e16232677fe2", "name": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.comparison.test.tsx:181", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.comparison.test.tsx:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dcf8474f3a957666", "name": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DistrictsPage.responsive.test.tsx:113", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DistrictsPage.responsive.test.tsx: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-62ce51e3d63cc18a", "name": "Commented-code block (5 lines) in frontend/src/hooks/useUrlState.ts:53", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useUrlState.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af5b75c0d6ef4cea", "name": "Commented-code block (5 lines) in frontend/src/hooks/useGlobalRankings.ts:85", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useGlobalRankings.ts: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-bccb59e099ad2901", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useTimeSeries.ts:109", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useTimeSeries.ts:109"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-64ad850be0736f81", "name": "Commented-code block (9 lines) in frontend/src/hooks/useClubGoalTimeline.ts:87", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/hooks/useClubGoalTimeline.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-94dc72187aff31a0", "name": "Commented-code block (6 lines) in frontend/src/hooks/useDistrictAnalytics.ts:248", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useDistrictAnalytics.ts:248"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d3d503f70529b35", "name": "Commented-code block (8 lines) in frontend/src/hooks/useProgramYearSummaries.ts:78", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/hooks/useProgramYearSummaries.ts: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-c4d3a14ce7fe71dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/__tests__/useAggregatedAnalytics.test.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/__tests__/useAggregatedAnalytics.test.tsx:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1d35574ee5b04cac", "name": "Commented-code block (5 lines) in frontend/src/hooks/__tests__/usePaymentsTrend.property.test.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/hooks/__tests__/usePaymentsTrend.property.test.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4f56564d81854db", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/cdn.ts:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/cdn.ts:87"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b3ec1ae60c2fc8c2", "name": "Commented-code block (8 lines) in frontend/src/services/searchIndex.ts:142", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/services/searchIndex.ts: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-f790fd2e5abcb8d3", "name": "Commented-code block (5 lines) in frontend/src/styles/__tests__/rt-brand-v1.test.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/styles/__tests__/rt-brand-v1.test.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-ddc27ed164e593fe", "name": "Commented-code block (6 lines) in frontend/src/styles/__tests__/page-width-tokens.test.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/styles/__tests__/page-width-tokens.test.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-a50413eba9f96a9f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/landing-mobile-cls.smoke.ts:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/landing-mobile-cls.smoke.ts:87"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0e67fbbb5b48e91a", "name": "Commented-code block (7 lines) in frontend/e2e/regions-legibility.smoke.ts:67", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/e2e/regions-legibility.smoke.ts: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-d4ae6a88d8fb442c", "name": "Commented-code block (9 lines) in frontend/e2e/touch-targets.smoke.ts:45", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/e2e/touch-targets.smoke.ts: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-b2c4fa5af6bc6e27", "name": "Commented-code block (5 lines) in docs/test-templates/IntegrationTestTemplate.example.tsx:646", "shortDescription": {"text": "Commented-code block (5 lines) in docs/test-templates/IntegrationTestTemplate.example.tsx:646"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f045b3e7e844045", "name": "Commented-code block (5 lines) in scripts/run-flake-detection.ts:110", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/run-flake-detection.ts:110"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-29ce6822ba851e70", "name": "Commented-code block (6 lines) in scripts/lighthouse-cdn-server.mjs:81", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/lighthouse-cdn-server.mjs: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-72c5699c5ef6a992", "name": "Commented-code block (5 lines) in scripts/lib/__tests__/seoAssets.test.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/seoAssets.test.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00f1ad5d9e960e37", "name": "Commented-code block (5 lines) in scripts/lib/__tests__/registryFreshness.test.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/registryFreshness.test.ts: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-9191e43769c15c71", "name": "Commented-code block (5 lines) in scripts/lib/__tests__/changedFilesGate.test.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/changedFilesGate.test.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6746a043df25c241", "name": "Commented-code block (5 lines) in scripts/lib/__tests__/pruneClassifier.test.ts:73", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/pruneClassifier.test.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2575ea685dda465d", "name": "Commented-code block (5 lines) in scripts/lib/__tests__/flakeMetrics.test.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/flakeMetrics.test.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0dbc830b6592ce95", "name": "Commented-code block (5 lines) in packages/collector-cli/src/cli.ts:1171", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/cli.ts:1171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-245f56bf07e346bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/cli.ts:1171", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/cli.ts:1171"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e503d8968014c0fe", "name": "Commented-code block (5 lines) in packages/collector-cli/src/CollectorOrchestrator.ts:534", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/CollectorOrchestrator.ts:534"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6db93cb5c5009b0", "name": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.previousYearSnapshot.test", "shortDescription": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.previousYearSnapshot.test.ts:366"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-60019a4572f096bb", "name": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/PruneService.test.ts:651", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/PruneService.test.ts:651"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-941caa4fff40a68d", "name": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts:2435", "shortDescription": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts:2435"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2d4c434f88a3c7f", "name": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/TransformService.rankings.test.ts:234", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/TransformService.rankings.test.ts:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a27623aff7301175", "name": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/BackfillOrchestrator.test.ts:293", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/BackfillOrchestrator.test.ts:293"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e15aaeb28d4380cd", "name": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/ClosingPeriodDetector.property.test.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/ClosingPeriodDetector.property.test.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6ed89a387abe67a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/types/findAClub.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/types/findAClub.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4a74ee4e2ed73afc", "name": "Commented-code block (7 lines) in packages/collector-cli/src/services/BackfillOrchestrator.ts:211", "shortDescription": {"text": "Commented-code block (7 lines) in packages/collector-cli/src/services/BackfillOrchestrator.ts:211"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7dba7ddd53ed474f", "name": "Commented-code block (6 lines) in packages/collector-cli/src/services/AnalyticsComputeService.ts:785", "shortDescription": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/services/AnalyticsComputeService.ts:785"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-704797d9db3f2b78", "name": "Commented-code block (5 lines) in packages/collector-cli/src/services/SnapshotValueDiff.ts:283", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/SnapshotValueDiff.ts:283"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-027b27ef19fea866", "name": "Commented-code block (7 lines) in packages/collector-cli/src/services/EducationArchiveBackfill.ts:186", "shortDescription": {"text": "Commented-code block (7 lines) in packages/collector-cli/src/services/EducationArchiveBackfill.ts:186"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16fb13e40433bf84", "name": "Commented-code block (6 lines) in packages/collector-cli/src/services/DailyReportParser.ts:226", "shortDescription": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/services/DailyReportParser.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04211b82fbd2a91c", "name": "Commented-code block (5 lines) in packages/collector-cli/src/services/FindAClubMerger.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/FindAClubMerger.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-81aa1b685cbf4eda", "name": "Commented-code block (5 lines) in packages/collector-cli/src/services/UploadService.ts:945", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/UploadService.ts:945"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-766ca89aada350c9", "name": "Commented-code block (5 lines) in packages/collector-cli/src/services/__tests__/FindAClubMerger.test.ts:90", "shortDescription": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/__tests__/FindAClubMerger.test.ts: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-5c9408b8b8423000", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/services/__tests__/DistrictReportsIngest.integr", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/services/__tests__/DistrictReportsIngest.integration.test.ts:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3fcde754304b1db7", "name": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.test.ts:1792", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.test.ts:1792"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfdbe96cf727bb95", "name": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.test.ts:67", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.test.ts: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-cfc1bd54e152db44", "name": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.ts:656", "shortDescription": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.ts:656"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf657d1acedaf1c3", "name": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts:565", "shortDescription": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts:565"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-33f422717e9a39c4", "name": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.ts:199", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.ts:199"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37d8003337695c6e", "name": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.test.ts:187", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.test.ts: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-c3641fddf8136c85", "name": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.ts:142", "shortDescription": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.ts: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-c0984f8ce19c3a19", "name": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.t", "shortDescription": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.test.ts:943"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-67cbcd6648fa5695", "name": "Commented-code block (5 lines) in packages/analytics-core/src/transformation/DataTransformer.test.ts:144", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/transformation/DataTransformer.test.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26fb3d5bce8bee87", "name": "Commented-code block (7 lines) in packages/analytics-core/src/transformation/DataTransformer.ts:107", "shortDescription": {"text": "Commented-code block (7 lines) in packages/analytics-core/src/transformation/DataTransformer.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-5d162bdf571cc360", "name": "Commented-code block (5 lines) in packages/analytics-core/src/rankings/DistinguishedDistrictCalculator.test.ts:249", "shortDescription": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/rankings/DistinguishedDistrictCalculator.test.ts:249"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-601a92a60d89e259", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/scripts/record-fixtures.mjs:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/scripts/record-fixtures.mjs:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c9ecd695976c8783", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/__tests__/_fixture-fetch.ts:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/__tests__/_fixture-fetch.ts: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-30e91bf14d20c699", "name": "Commented-code block (5 lines) in packages/mcp-server/src/__tests__/CdnClient.test.ts:176", "shortDescription": {"text": "Commented-code block (5 lines) in packages/mcp-server/src/__tests__/CdnClient.test.ts: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-d7e6a2a29797137d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/cdn/CdnClient.ts:51", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/cdn/CdnClient.ts:51"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d785c17821858dcb", "name": "22 env vars used in code but missing from .env.example", "shortDescription": {"text": "22 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `CDN_BASE_URL`, `CI`, `COUNT_PROMOTE`, `DEV`, `DIST_DIR`, `FIXTURE_DIR`, `GCS_BUCKET`, `GITHUB_OUTPUT` + 14 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-928ba95a2a8f0bbd", "name": "Frontend route `/region/:n` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/RegionPage.sortable.test.tsx", "shortDescription": {"text": "Frontend route `/region/:n` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/RegionPage.sortable.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7fa7dfdfe71d2bb4", "name": "Frontend route `/district/:districtId/division/:divId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/Divisio", "shortDescription": {"text": "Frontend route `/district/:districtId/division/:divId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ccb6fb771aa3892d", "name": "Frontend route `/district/:districtId/division/:divId/area/:areaId` has no Link/navigate to it \u2014 frontend/src/pages/__te", "shortDescription": {"text": "Frontend route `/district/:districtId/division/:divId/area/:areaId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f8078a78563dceff", "name": "Frontend route `/districts/:districtId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictDetailPage.lea", "shortDescription": {"text": "Frontend route `/districts/:districtId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictDetailPage.leanHub.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-520c73f147776973", "name": "Frontend route `/district/:districtId/changes` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictChanges", "shortDescription": {"text": "Frontend route `/district/:districtId/changes` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictChangesPage.test.tsx"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/20868"}, "properties": {"repository": "taverns-red/toast-stats", "repoUrl": "https://github.com/taverns-red/toast-stats", "branch": "main"}, "results": [{"ruleId": "scanner-c3a7ee43d97a17b2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/collect-baseline.js:67"}, "properties": {"repobilityId": "608250b64e7625da", "scanner": "scanner-primary", "fingerprint": "c3a7ee43d97a17b2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-213f43b68440ae46", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/scripts/remove-text-effects.js:173"}, "properties": {"repobilityId": "5a4239742625ecde", "scanner": "scanner-primary", "fingerprint": "213f43b68440ae46", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5beb8e3c9b871669", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/global-test-cleanup.ts:39"}, "properties": {"repobilityId": "c852c68dd773f855", "scanner": "scanner-primary", "fingerprint": "5beb8e3c9b871669", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cea3fa9aba68118a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/testInfrastructure.ts:154"}, "properties": {"repobilityId": "e1e588a00127663e", "scanner": "scanner-primary", "fingerprint": "cea3fa9aba68118a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d4e41d873e0bba78", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/migrationMetrics.ts:168"}, "properties": {"repobilityId": "30f78ef85d7ea2bd", "scanner": "scanner-primary", "fingerprint": "d4e41d873e0bba78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-411b9ddecb23e751", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/AccessibilityTestingExamples.test.tsx:638"}, "properties": {"repobilityId": "758bd1c3527c6aa3", "scanner": "scanner-primary", "fingerprint": "411b9ddecb23e751", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2e02c5eee3d05d73", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/__tests__/utils/examples/ComponentTestingExamples.test.tsx:284"}, "properties": {"repobilityId": "aaa175733644d189", "scanner": "scanner-primary", "fingerprint": "2e02c5eee3d05d73", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9dfb6e3ec62441da", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ChartTooltip.tsx:150"}, "properties": {"repobilityId": "157e8723f3352b42", "scanner": "scanner-primary", "fingerprint": "9dfb6e3ec62441da", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2faa0a1a1c738ba8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/MilestonesCallout.tsx:248"}, "properties": {"repobilityId": "03f8cd38c6901d68", "scanner": "scanner-primary", "fingerprint": "2faa0a1a1c738ba8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b1ec4dc53ecedddb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/TopGrowthClubs.tsx:178"}, "properties": {"repobilityId": "ca42b6c3d0e777b6", "scanner": "scanner-primary", "fingerprint": "b1ec4dc53ecedddb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-76afaa8b0f0053d1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/UpcomingAnniversariesPanel.tsx:187"}, "properties": {"repobilityId": "79359bf2b79470ad", "scanner": "scanner-primary", "fingerprint": "76afaa8b0f0053d1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6a7d65ddb1266a99", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LongestServingClubsLeaderboard.tsx:130"}, "properties": {"repobilityId": "e66dc285993783d6", "scanner": "scanner-primary", "fingerprint": "6a7d65ddb1266a99", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-98dda00d67b1afe0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/ProspectiveClubsPanel.tsx:60"}, "properties": {"repobilityId": "7b3ea3e271b4b8ed", "scanner": "scanner-primary", "fingerprint": "98dda00d67b1afe0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1c554d175b77ac00", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/AreaPerformanceChart.tsx:194"}, "properties": {"repobilityId": "8dd1f97547f69bbd", "scanner": "scanner-primary", "fingerprint": "1c554d175b77ac00", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d011517673c8e13", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 frontend/src/components/LeadershipInsights.tsx:179"}, "properties": {"repobilityId": "c989140c2bd727dc", "scanner": "scanner-primary", "fingerprint": "6d011517673c8e13", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-26a2539e5490bf2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/components/__tests__/ClubsTable.performance.test.tsx:124"}, "properties": {"repobilityId": "f17e57fe376f3adf", "scanner": "scanner-primary", "fingerprint": "26a2539e5490bf2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-89dfc40c68a7ef26", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 frontend/src/hooks/useClubTrends.ts:53"}, "properties": {"repobilityId": "d7b19c645967b2b1", "scanner": "scanner-primary", "fingerprint": "89dfc40c68a7ef26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-8c18fa30c9fc2e66", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/PropertyTestTemplate.example.tsx:14"}, "properties": {"repobilityId": "9a8e069c191519f9", "scanner": "scanner-primary", "fingerprint": "8c18fa30c9fc2e66", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-220ec048f9eb746a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/IntegrationTestTemplate.example.tsx:14"}, "properties": {"repobilityId": "114cd1b1f5e5da0a", "scanner": "scanner-primary", "fingerprint": "220ec048f9eb746a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1df6bec1a65f513b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 docs/test-templates/ComponentTestTemplate.example.tsx:24"}, "properties": {"repobilityId": "eb3a045568a8ac46", "scanner": "scanner-primary", "fingerprint": "1df6bec1a65f513b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f3018d75614c624c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-gcs-deletions.ts:59"}, "properties": {"repobilityId": "b054090dc547c7fd", "scanner": "scanner-primary", "fingerprint": "f3018d75614c624c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b5b0fa4584c9bb20", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/validate-test-standards.js:185"}, "properties": {"repobilityId": "f6d748dc0c129704", "scanner": "scanner-primary", "fingerprint": "b5b0fa4584c9bb20", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2f1df4ab9edd1c27", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rebuild-analytics.ts:41"}, "properties": {"repobilityId": "4adf1a40fd5a832d", "scanner": "scanner-primary", "fingerprint": "2f1df4ab9edd1c27", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-63267ce61024582b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/update-closing-date-registry.ts:120"}, "properties": {"repobilityId": "3ddc9faf50a3ad2a", "scanner": "scanner-primary", "fingerprint": "63267ce61024582b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05de2efd25504358", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/detect-snapshot-anomalies.ts:442"}, "properties": {"repobilityId": "c20581cbdf7175b4", "scanner": "scanner-primary", "fingerprint": "05de2efd25504358", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0de9f4c1465d0eda", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/relevant-lessons.ts:86"}, "properties": {"repobilityId": "bb465714e199b034", "scanner": "scanner-primary", "fingerprint": "0de9f4c1465d0eda", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ca68e83cd98329db", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-snapshot-index.ts:84"}, "properties": {"repobilityId": "24288cfd9e9636b8", "scanner": "scanner-primary", "fingerprint": "ca68e83cd98329db", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-612dd338037cb313", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-daily-snapshots.ts:116"}, "properties": {"repobilityId": "c1071201d4bfda8c", "scanner": "scanner-primary", "fingerprint": "612dd338037cb313", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-926cb88f10e0702f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-csv-date-mismatches.ts:153"}, "properties": {"repobilityId": "7cd579192654a9b7", "scanner": "scanner-primary", "fingerprint": "926cb88f10e0702f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-235c439cb2935610", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-month-end-pipeline.ts:110"}, "properties": {"repobilityId": "9220434f4a97467f", "scanner": "scanner-primary", "fingerprint": "235c439cb2935610", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ce61b41e618edd09", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/measure-workflow-performance.js:30"}, "properties": {"repobilityId": "ac12683827217f6b", "scanner": "scanner-primary", "fingerprint": "ce61b41e618edd09", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-91ef090c680e7c77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-prod-reconcile.ts:115"}, "properties": {"repobilityId": "0ded4623ca4d812b", "scanner": "scanner-primary", "fingerprint": "91ef090c680e7c77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbc0a4f5fbf045bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/find-month-end-dates.ts:62"}, "properties": {"repobilityId": "5fa2661befeecaa8", "scanner": "scanner-primary", "fingerprint": "fbc0a4f5fbf045bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53f9f149bd120b77", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-raw-csv-for-dates.ts:133"}, "properties": {"repobilityId": "4bd53c98a99b360f", "scanner": "scanner-primary", "fingerprint": "53f9f149bd120b77", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2af02cee45ee9d54", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/prune-skeleton-sync.ts:39"}, "properties": {"repobilityId": "515977eec3c25303", "scanner": "scanner-primary", "fingerprint": "2af02cee45ee9d54", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4a50b2adf395af48", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/verify-toolchain-functionality.js:31"}, "properties": {"repobilityId": "9cb08d5590c49c82", "scanner": "scanner-primary", "fingerprint": "4a50b2adf395af48", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-cb5e523b1ac3b7d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rescrape-historical.ts:140"}, "properties": {"repobilityId": "eff8c5fdbd121e09", "scanner": "scanner-primary", "fingerprint": "cb5e523b1ac3b7d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-643e314f9405db3e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-month-end-snapshots.ts:138"}, "properties": {"repobilityId": "ce1ffe4d5d2eb1a2", "scanner": "scanner-primary", "fingerprint": "643e314f9405db3e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-380c26b9890bf21f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/cliHelpers.ts:43"}, "properties": {"repobilityId": "22242e514e623776", "scanner": "scanner-primary", "fingerprint": "380c26b9890bf21f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-79184902f12244ef", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/collector-cli/src/__tests__/cli-stdout-flush.test.ts:18"}, "properties": {"repobilityId": "c6c20728f64027a6", "scanner": "scanner-primary", "fingerprint": "79184902f12244ef", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-04c8459e7706cf29", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/analytics-core/src/analytics/__tests__/no-stdout-leak.test.ts:5"}, "properties": {"repobilityId": "6eb62f199c0740f5", "scanner": "scanner-primary", "fingerprint": "04c8459e7706cf29", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-472e6eac93f3279c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/validation/validators.ts:53"}, "properties": {"repobilityId": "303f77678c7486fa", "scanner": "scanner-primary", "fingerprint": "472e6eac93f3279c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5538eff33ac0af2a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/time-series.schema.ts:45"}, "properties": {"repobilityId": "f4e4d65e37923b3a", "scanner": "scanner-primary", "fingerprint": "5538eff33ac0af2a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-417dfe2d062ca6f6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-metadata.schema.ts:29"}, "properties": {"repobilityId": "3f759e4d222773b7", "scanner": "scanner-primary", "fingerprint": "417dfe2d062ca6f6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-52839c64bb67ed87", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/all-districts-rankings.schema.ts:162"}, "properties": {"repobilityId": "3245ac13e5e1bdd6", "scanner": "scanner-primary", "fingerprint": "52839c64bb67ed87", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db5e1f61e42d57f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/per-district-data.schema.ts:30"}, "properties": {"repobilityId": "5227988291735c5c", "scanner": "scanner-primary", "fingerprint": "db5e1f61e42d57f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e2a3893ad449331e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/shared-contracts/src/schemas/snapshot-pointer.schema.ts:31"}, "properties": {"repobilityId": "6369aaef2973fc86", "scanner": "scanner-primary", "fingerprint": "e2a3893ad449331e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a5c4a86516a83bb3", "level": "warning", "message": {"text": "Privileged port 9 in use"}, "properties": {"repobilityId": "31590a6ba3409390", "scanner": "scanner-primary", "fingerprint": "a5c4a86516a83bb3", "layer": "network", "severity": "medium", "confidence": 1.0, "tags": ["security", "ports"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/tests/sprint-runner-reap-relaunch.test.sh"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a399389f5f17b106", "level": "error", "message": {"text": "Runtime dotenv file present in repo: frontend/.env.production"}, "properties": {"repobilityId": "f727d22a89e309c5", "scanner": "scanner-primary", "fingerprint": "a399389f5f17b106", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/.env.production"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-26d9f8a7dab27c5a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/scripts/lib/listVitestFiles.mjs:10"}, "properties": {"repobilityId": "c05aa7803f741510", "scanner": "scanner-primary", "fingerprint": "26d9f8a7dab27c5a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/scripts/lib/listVitestFiles.mjs"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-0dda69f0ceafdf19", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in frontend/src/__tests__/utils/migrationValidator.ts:8"}, "properties": {"repobilityId": "e477a0337076f8c9", "scanner": "scanner-primary", "fingerprint": "0dda69f0ceafdf19", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/__tests__/utils/migrationValidator.ts"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-a88bb1339ed0e422", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-session-internals.html:1237"}, "properties": {"repobilityId": "4cff9eef27cb2ff8", "scanner": "scanner-primary", "fingerprint": "a88bb1339ed0e422", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sprint-runner-session-internals.html"}, "region": {"startLine": 1237}}}]}, {"ruleId": "scanner-597b44e118cea446", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/sprint-runner-diagram.html:1037"}, "properties": {"repobilityId": "002d83797cd77f51", "scanner": "scanner-primary", "fingerprint": "597b44e118cea446", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/sprint-runner-diagram.html"}, "region": {"startLine": 1037}}}]}, {"ruleId": "scanner-b60bbec042c91e30", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/club-redesign-2026-05/club-reference.html:572"}, "properties": {"repobilityId": "9871658380f98015", "scanner": "scanner-primary", "fingerprint": "b60bbec042c91e30", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/club-redesign-2026-05/club-reference.html"}, "region": {"startLine": 572}}}]}, {"ruleId": "scanner-08a4bf575c570e64", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/run-flake-detection.ts:33"}, "properties": {"repobilityId": "d2a341ac9f2fafae", "scanner": "scanner-primary", "fingerprint": "08a4bf575c570e64", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/run-flake-detection.ts"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-ab914e8557658110", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/lighthouse-cdn-server.mjs:106"}, "properties": {"repobilityId": "fba0baec86772552", "scanner": "scanner-primary", "fingerprint": "ab914e8557658110", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lighthouse-cdn-server.mjs"}, "region": {"startLine": 106}}}]}, {"ruleId": "scanner-55d3703cf15584ad", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/relevant-lessons.ts:16"}, "properties": {"repobilityId": "84385c5e4605c1cc", "scanner": "scanner-primary", "fingerprint": "55d3703cf15584ad", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/relevant-lessons.ts"}, "region": {"startLine": 16}}}]}, {"ruleId": "scanner-fdc8d46e349a47a0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/prune-month-end-pipeline.ts:23"}, "properties": {"repobilityId": "259403570bad3220", "scanner": "scanner-primary", "fingerprint": "fdc8d46e349a47a0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/prune-month-end-pipeline.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-3b8038f475dfc3f2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/measure-workflow-performance.js:12"}, "properties": {"repobilityId": "6daf5a8373ce228a", "scanner": "scanner-primary", "fingerprint": "3b8038f475dfc3f2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/measure-workflow-performance.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-345b48041b45ef31", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/verify-toolchain-functionality.js:12"}, "properties": {"repobilityId": "a57dd95b8b1cf279", "scanner": "scanner-primary", "fingerprint": "345b48041b45ef31", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/verify-toolchain-functionality.js"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-5c91f1ad54a0c813", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/generate-month-end-snapshots.ts:21"}, "properties": {"repobilityId": "44e6e6a33b6f0d87", "scanner": "scanner-primary", "fingerprint": "5c91f1ad54a0c813", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/generate-month-end-snapshots.ts"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-a02665c6a293b928", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7f0fa4877111e783", "scanner": "scanner-primary", "fingerprint": "a02665c6a293b928", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lighthouse-ci.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-a02665c6a293b928", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9aba87008d7cc619", "scanner": "scanner-primary", "fingerprint": "a02665c6a293b928", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/lighthouse-ci.yml"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-cbe310f193a6df9f", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "573212e145c44806", "scanner": "scanner-primary", "fingerprint": "cbe310f193a6df9f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release-please.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec9058980fca64f1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9e49f9b652f3eee4", "scanner": "scanner-primary", "fingerprint": "ec9058980fca64f1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview-cleanup.yml"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-ec9058980fca64f1", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0454f87dda247cd9", "scanner": "scanner-primary", "fingerprint": "ec9058980fca64f1", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview-cleanup.yml"}, "region": {"startLine": 50}}}]}, {"ruleId": "scanner-ec9058980fca64f1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "68e0f587fa7e5eca", "scanner": "scanner-primary", "fingerprint": "ec9058980fca64f1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview-cleanup.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-ec9058980fca64f1", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fec675216b79758c", "scanner": "scanner-primary", "fingerprint": "ec9058980fca64f1", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview-cleanup.yml"}, "region": {"startLine": 61}}}]}, {"ruleId": "scanner-b616b200f99f116e", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b3bd2925ed8dd817", "scanner": "scanner-primary", "fingerprint": "b616b200f99f116e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview-cleanup.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "722ab4643920a278", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 53}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c266bde81c839bdc", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 56}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b2c435d0e738de39", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-28c4a04bd807da0c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "dd4b9a91dc48c795", "scanner": "scanner-primary", "fingerprint": "28c4a04bd807da0c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 87}}}]}, {"ruleId": "scanner-ad6701f0a8405e22", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "8384c23520d55657", "scanner": "scanner-primary", "fingerprint": "ad6701f0a8405e22", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/deploy.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-7f1e4527e6fecffa", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "e790d4d334398ef3", "scanner": "scanner-primary", "fingerprint": "7f1e4527e6fecffa", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 151}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cb1a23126ead31cb", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 159}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 172}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 175}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 241}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 244}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "90dca2b9a9fbfb28", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 264}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "97a9a5de61d82fcd", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 278}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4a63b1fd6887cae9", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 281}}}]}, {"ruleId": "scanner-64192a3c67110d01", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "87338a8bfcb6f435", "scanner": "scanner-primary", "fingerprint": "64192a3c67110d01", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d41a09c65ea24243", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "047a6d33ddd5ece0", "scanner": "scanner-primary", "fingerprint": "d41a09c65ea24243", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pipeline-freshness-monitor.yml"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-d41a09c65ea24243", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d64103effdd1e3e6", "scanner": "scanner-primary", "fingerprint": "d41a09c65ea24243", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pipeline-freshness-monitor.yml"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-679fbe0ddcc44e2c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e89af4a33eafca5b", "scanner": "scanner-primary", "fingerprint": "679fbe0ddcc44e2c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/flake-sentinel.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-679fbe0ddcc44e2c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1f78ec686d15778f", "scanner": "scanner-primary", "fingerprint": "679fbe0ddcc44e2c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/flake-sentinel.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-679fbe0ddcc44e2c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad309323f51163c7", "scanner": "scanner-primary", "fingerprint": "679fbe0ddcc44e2c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/flake-sentinel.yml"}, "region": {"startLine": 83}}}]}, {"ruleId": "scanner-174ad19215f52177", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3962c873c42ae412", "scanner": "scanner-primary", "fingerprint": "174ad19215f52177", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-pipeline.yml"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-174ad19215f52177", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6eb89dc5c1129128", "scanner": "scanner-primary", "fingerprint": "174ad19215f52177", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-pipeline.yml"}, "region": {"startLine": 101}}}]}, {"ruleId": "scanner-174ad19215f52177", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1a993397b5b6cdec", "scanner": "scanner-primary", "fingerprint": "174ad19215f52177", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-pipeline.yml"}, "region": {"startLine": 120}}}]}, {"ruleId": "scanner-174ad19215f52177", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "75440dc2a20e9588", "scanner": "scanner-primary", "fingerprint": "174ad19215f52177", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-pipeline.yml"}, "region": {"startLine": 126}}}]}, {"ruleId": "scanner-38af402e0204e8f4", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "7b8a20428972f368", "scanner": "scanner-primary", "fingerprint": "38af402e0204e8f4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/data-pipeline.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-db035bf3643ddc11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8c04b0af544e5c95", "scanner": "scanner-primary", "fingerprint": "db035bf3643ddc11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cdn-schema-canary.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-db035bf3643ddc11", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "83ad2e1ee856de20", "scanner": "scanner-primary", "fingerprint": "db035bf3643ddc11", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/cdn-schema-canary.yml"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-76c64d601e1994a8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8c5eacb1609e2834", "scanner": "scanner-primary", "fingerprint": "76c64d601e1994a8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 55}}}]}, {"ruleId": "scanner-76c64d601e1994a8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "00727aa62f9487da", "scanner": "scanner-primary", "fingerprint": "76c64d601e1994a8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-76c64d601e1994a8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a60e4e33988e7552", "scanner": "scanner-primary", "fingerprint": "76c64d601e1994a8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-76c64d601e1994a8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "954ced51a14588b2", "scanner": "scanner-primary", "fingerprint": "76c64d601e1994a8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-76c64d601e1994a8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "94d3d509f5297fdf", "scanner": "scanner-primary", "fingerprint": "76c64d601e1994a8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 138}}}]}, {"ruleId": "scanner-2f851bc7a42598d8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "d9635ecb1c6dd427", "scanner": "scanner-primary", "fingerprint": "2f851bc7a42598d8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-preview.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "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-959e185358f35aac", "level": "note", "message": {"text": "Very large file: frontend/src/utils/__tests__/divisionStatus.property.test.ts (1760 lines)"}, "properties": {"repobilityId": "a3e97cf7cb04b4fc", "scanner": "scanner-primary", "fingerprint": "959e185358f35aac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fb0dcf9f611bf656", "level": "note", "message": {"text": "Very large file: frontend/src/utils/__tests__/extractDivisionPerformance.test.ts (3818 lines)"}, "properties": {"repobilityId": "fc0e5eb5998c17f5", "scanner": "scanner-primary", "fingerprint": "fb0dcf9f611bf656", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-96e0c2b1038466c3", "level": "note", "message": {"text": "Very large file: frontend/src/pages/DistrictsPage.tsx (1792 lines)"}, "properties": {"repobilityId": "9ec9c9aea969ad70", "scanner": "scanner-primary", "fingerprint": "96e0c2b1038466c3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-326bf37687d265f7", "level": "note", "message": {"text": "Very large file: scripts/sprint-runner.sh (1148 lines)"}, "properties": {"repobilityId": "2927cdd4058c1ba8", "scanner": "scanner-primary", "fingerprint": "326bf37687d265f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4b83174be61c3857", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/cli.ts (1886 lines)"}, "properties": {"repobilityId": "9fe90c811f0a6a13", "scanner": "scanner-primary", "fingerprint": "4b83174be61c3857", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d633cdd06992ab9c", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/__tests__/UploadService.test.ts (2116 lines)"}, "properties": {"repobilityId": "6238ea30260a174d", "scanner": "scanner-primary", "fingerprint": "d633cdd06992ab9c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6bcd1491597538a4", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/__tests__/AnalyticsWriter.test.ts (2723 lines)"}, "properties": {"repobilityId": "0e24d379a040d497", "scanner": "scanner-primary", "fingerprint": "6bcd1491597538a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f48b2884f24af789", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts (2748 lines)"}, "properties": {"repobilityId": "b76027b25b7f8bc0", "scanner": "scanner-primary", "fingerprint": "f48b2884f24af789", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-59617243c6857c11", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/__tests__/TransformService.test.ts (2202 lines)"}, "properties": {"repobilityId": "e92b92704d2e84c0", "scanner": "scanner-primary", "fingerprint": "59617243c6857c11", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-899dacc67ef337ad", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/__tests__/pipeline.integration.test.ts (1695 lines)"}, "properties": {"repobilityId": "d7249242bdccffae", "scanner": "scanner-primary", "fingerprint": "899dacc67ef337ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cd8fdd001038d07a", "level": "note", "message": {"text": "Very large file: packages/collector-cli/src/services/TransformService.ts (2297 lines)"}, "properties": {"repobilityId": "9affa9b8ba962d6f", "scanner": "scanner-primary", "fingerprint": "cd8fdd001038d07a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e4beec3ec07cdbf8", "level": "note", "message": {"text": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.test.ts (2570 lines)"}, "properties": {"repobilityId": "6947d1a5140d50e3", "scanner": "scanner-primary", "fingerprint": "e4beec3ec07cdbf8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-144be3eac5f991e2", "level": "note", "message": {"text": "Very large file: packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts (1762 lines)"}, "properties": {"repobilityId": "ad7e03d9c9805cd3", "scanner": "scanner-primary", "fingerprint": "144be3eac5f991e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c910bbb568758aa", "level": "note", "message": {"text": "Very large file: packages/analytics-core/src/analytics/AnalyticsComputer.ts (1706 lines)"}, "properties": {"repobilityId": "091b1754a8421fd9", "scanner": "scanner-primary", "fingerprint": "8c910bbb568758aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a5544383863f42fe", "level": "note", "message": {"text": "Very large file: packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.test.ts (1654 lines)"}, "properties": {"repobilityId": "c14e275bfd8c7b17", "scanner": "scanner-primary", "fingerprint": "a5544383863f42fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e753bb74bf2afc61", "level": "note", "message": {"text": "Very large file: packages/analytics-core/src/transformation/DataTransformer.test.ts (1866 lines)"}, "properties": {"repobilityId": "f175397bd120047f", "scanner": "scanner-primary", "fingerprint": "e753bb74bf2afc61", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6611ff22818b6a92", "level": "note", "message": {"text": "31 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "6611ff22818b6a92", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-0e8a76eb13fd3249", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: frontend/package.json"}, "properties": {"repobilityId": "d8c65da5b68ee95b", "scanner": "scanner-primary", "fingerprint": "0e8a76eb13fd3249", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ea8f0e69b935b85d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/collector-cli/package.json"}, "properties": {"repobilityId": "8db4e698f818a2d4", "scanner": "scanner-primary", "fingerprint": "ea8f0e69b935b85d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/collector-cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8f3984dfb76a50f0", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/analytics-core/package.json"}, "properties": {"repobilityId": "473fb9fdb117a43f", "scanner": "scanner-primary", "fingerprint": "8f3984dfb76a50f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/analytics-core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6cf7d86f806aee43", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/mcp-server/package.json"}, "properties": {"repobilityId": "a25c45fd100dcd3e", "scanner": "scanner-primary", "fingerprint": "6cf7d86f806aee43", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mcp-server/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f44378deca34a134", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared-contracts/package.json"}, "properties": {"repobilityId": "4614a7f0140586c0", "scanner": "scanner-primary", "fingerprint": "f44378deca34a134", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared-contracts/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "e37d5b40c4a781f6", "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": "03cc6227894817f9", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "d8732cadd27aee9f", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1f598a2089ffac45", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "3df551ccee38fb0b", "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": "65ba8434be9ee95d", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-e835b645fa5da6eb", "level": "none", "message": {"text": "Commented-code block (7 lines) in lighthouserc.js:11"}, "properties": {"repobilityId": "8c1811335710b4a9", "scanner": "scanner-primary", "fingerprint": "e835b645fa5da6eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ad60729a53585c4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/vitest.shared.mjs:11"}, "properties": {"repobilityId": "0f7a9a7db2398fe8", "scanner": "scanner-primary", "fingerprint": "2ad60729a53585c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87309b421a56d649", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/vitest.config.ts:9"}, "properties": {"repobilityId": "539ba6b2f4d72e84", "scanner": "scanner-primary", "fingerprint": "87309b421a56d649", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f8eb086bc62ea7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/test-utils.tsx:80"}, "properties": {"repobilityId": "afa7e840a0ea8436", "scanner": "scanner-primary", "fingerprint": "0f8eb086bc62ea7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bf82e8e5cacdb05", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/__tests__/setup.ts:94"}, "properties": {"repobilityId": "70d56851e09ca8ce", "scanner": "scanner-primary", "fingerprint": "1bf82e8e5cacdb05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a4f6cc1b8e9547b", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/district-panel-surfaces.test.ts:3"}, "properties": {"repobilityId": "4c45fd4ae1fdd6b9", "scanner": "scanner-primary", "fingerprint": "8a4f6cc1b8e9547b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-953e0bf75e90bdeb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/structure.test.ts:40"}, "properties": {"repobilityId": "ad216219ff7acc5f", "scanner": "scanner-primary", "fingerprint": "953e0bf75e90bdeb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1e45ccdfb6da224", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/css-migration/district-breakpoints.test.ts:8"}, "properties": {"repobilityId": "a0b67b53cb645ee7", "scanner": "scanner-primary", "fingerprint": "a1e45ccdfb6da224", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8a32082751bb1c5f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/small-text-light-mode.test.ts:3"}, "properties": {"repobilityId": "9b46f8b1fc73ad66", "scanner": "scanner-primary", "fingerprint": "8a32082751bb1c5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-048c8e00191ab27c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/unmitigated-color-utilities.test.ts:3"}, "properties": {"repobilityId": "6ce0d606a8399514", "scanner": "scanner-primary", "fingerprint": "048c8e00191ab27c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ae2a31c6c9fdb57", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/css-migration/region-dark-variant-scope.test.ts:3"}, "properties": {"repobilityId": "9773d02b692c66e5", "scanner": "scanner-primary", "fingerprint": "1ae2a31c6c9fdb57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-925fcd3b46c8d34a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/css-migration/opacity-variants-dark.test.ts:7"}, "properties": {"repobilityId": "bb3162a03ab41026", "scanner": "scanner-primary", "fingerprint": "925fcd3b46c8d34a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e521994d123e24f7", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/src/__tests__/css-migration/redesign-tokens.test.ts:172"}, "properties": {"repobilityId": "ec5206054f85854e", "scanner": "scanner-primary", "fingerprint": "e521994d123e24f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18805d93ca90ae5f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/__tests__/components/AppShell.test.tsx:224"}, "properties": {"repobilityId": "62e12aa59db9e9e7", "scanner": "scanner-primary", "fingerprint": "18805d93ca90ae5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f13d57841f01178", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/components/componentMigrations.test.tsx:12"}, "properties": {"repobilityId": "ca39753e00604683", "scanner": "scanner-primary", "fingerprint": "4f13d57841f01178", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e78c5d5f0327719f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubDarkModeContrast.test.ts:153"}, "properties": {"repobilityId": "cae148701bbcfd84", "scanner": "scanner-primary", "fingerprint": "e78c5d5f0327719f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e8a245779e061fb", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/ClubsTable.axe.test.tsx:1"}, "properties": {"repobilityId": "e5cf8268ff3f680e", "scanner": "scanner-primary", "fingerprint": "2e8a245779e061fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c545dcf4031913c", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubDCPGoalsPanel.axe.test.tsx:3"}, "properties": {"repobilityId": "eb0007e1b6de12ba", "scanner": "scanner-primary", "fingerprint": "2c545dcf4031913c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a04ddb3e2d80b036", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/__tests__/accessibility/GlobalRankingsAccessibility.test.tsx:35"}, "properties": {"repobilityId": "69378cef77d898d8", "scanner": "scanner-primary", "fingerprint": "a04ddb3e2d80b036", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc51720fde376b64", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/ClubsControlsDarkModeContrast.test.ts:178"}, "properties": {"repobilityId": "8b332cde9c90cf1d", "scanner": "scanner-primary", "fingerprint": "bc51720fde376b64", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a3de0ebdb7bee28", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/ClubsTableDarkModeContrast.test.ts:288"}, "properties": {"repobilityId": "c7a40ae047ba068a", "scanner": "scanner-primary", "fingerprint": "3a3de0ebdb7bee28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-18d64d860f212afd", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionDarkModeContrast.test.ts:308"}, "properties": {"repobilityId": "720d9a7cc5222373", "scanner": "scanner-primary", "fingerprint": "18d64d860f212afd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9c4a0a63ca5a8e19", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/__tests__/accessibility/DistrictDetailPage.axe.test.tsx:3"}, "properties": {"repobilityId": "6f4306a0a799f5e4", "scanner": "scanner-primary", "fingerprint": "9c4a0a63ca5a8e19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eee42c74e7732b98", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/__tests__/accessibility/RegionPage.axe.test.tsx:3"}, "properties": {"repobilityId": "58cdc44a052d3989", "scanner": "scanner-primary", "fingerprint": "eee42c74e7732b98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba46ac7c29d47457", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/__tests__/lint/set-state-in-effect.test.ts:16"}, "properties": {"repobilityId": "b0648fdfc78f5896", "scanner": "scanner-primary", "fingerprint": "ba46ac7c29d47457", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-310160257b4f3624", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/errorTelemetry.ts:124"}, "properties": {"repobilityId": "d039e86f8f203c06", "scanner": "scanner-primary", "fingerprint": "310160257b4f3624", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e24f71c77b077fcd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/utils/errorTelemetry.ts:141"}, "properties": {"repobilityId": "68f847a25375cb0b", "scanner": "scanner-primary", "fingerprint": "e24f71c77b077fcd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4e18fceefc91eebf", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/aggregateRegions.ts:180"}, "properties": {"repobilityId": "0ff25e68ab58a339", "scanner": "scanner-primary", "fingerprint": "4e18fceefc91eebf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-affd2067f0a8327c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/dcpProjections.ts:152"}, "properties": {"repobilityId": "46234c2db8a2a64b", "scanner": "scanner-primary", "fingerprint": "affd2067f0a8327c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8f7614e6f0ec33f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/formatCharterDate.test.ts:48"}, "properties": {"repobilityId": "b4971ea2b23a6ad0", "scanner": "scanner-primary", "fingerprint": "8f7614e6f0ec33f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-de1e0ba2ac375a12", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/membersToDistinguished.test.ts:172"}, "properties": {"repobilityId": "e8e651160bc0a3c6", "scanner": "scanner-primary", "fingerprint": "de1e0ba2ac375a12", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77f97f75a99b07d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractEducationLevels.test.ts:66"}, "properties": {"repobilityId": "d235c1a743b1c8aa", "scanner": "scanner-primary", "fingerprint": "77f97f75a99b07d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-934401d79d77b66d", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/utils/__tests__/extractDivisionPerformance.test.ts:1456"}, "properties": {"repobilityId": "1e6e893ed0b09ca1", "scanner": "scanner-primary", "fingerprint": "934401d79d77b66d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-570fbcde024ad889", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ErrorPage.tsx:39"}, "properties": {"repobilityId": "a961c0c7d18d8434", "scanner": "scanner-primary", "fingerprint": "570fbcde024ad889", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58b3b2d366fb47d0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ClubsTable.tsx:48"}, "properties": {"repobilityId": "bc02b0e4f94a9fae", "scanner": "scanner-primary", "fingerprint": "58b3b2d366fb47d0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a2de2438c4eef5e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/AwardsRaceSection.tsx:91"}, "properties": {"repobilityId": "06eb93dad6872df7", "scanner": "scanner-primary", "fingerprint": "6a2de2438c4eef5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99773b74ea592a7a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/YearOverYearComparison.tsx:185"}, "properties": {"repobilityId": "164844e86469f3e4", "scanner": "scanner-primary", "fingerprint": "99773b74ea592a7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a66641eabcc01ea2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/JumpToChip.tsx:104"}, "properties": {"repobilityId": "8d41b814ca3ef4d0", "scanner": "scanner-primary", "fingerprint": "a66641eabcc01ea2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5992e8267391eac8", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/DatePairPicker.tsx:51"}, "properties": {"repobilityId": "de5ab4b8e7cc4401", "scanner": "scanner-primary", "fingerprint": "5992e8267391eac8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-523e79cb26faf753", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/NotableDatesSection.tsx:94"}, "properties": {"repobilityId": "d733bcb46fa01ce4", "scanner": "scanner-primary", "fingerprint": "523e79cb26faf753", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d83566f5fc795103", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/DataControlsBar.tsx:24"}, "properties": {"repobilityId": "56581598fbefc39c", "scanner": "scanner-primary", "fingerprint": "d83566f5fc795103", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b8a424f0746cfe15", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/components/KpiBulletCard.tsx:68"}, "properties": {"repobilityId": "76a9ab5357cbfe47", "scanner": "scanner-primary", "fingerprint": "b8a424f0746cfe15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0fd46850080280d8", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/__tests__/ChartSkeleton.test.tsx:44"}, "properties": {"repobilityId": "f6f4721312f13f04", "scanner": "scanner-primary", "fingerprint": "0fd46850080280d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58c5b6362945f394", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubsTable.test.tsx:753"}, "properties": {"repobilityId": "2549efdd0e006e9f", "scanner": "scanner-primary", "fingerprint": "58c5b6362945f394", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e058861f0c8546", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/components/__tests__/DatePairPicker.test.tsx:68"}, "properties": {"repobilityId": "90b1817012921f00", "scanner": "scanner-primary", "fingerprint": "d7e058861f0c8546", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dd0e30353461393", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/DataControlsBar.test.tsx:90"}, "properties": {"repobilityId": "da2a327cc39d9844", "scanner": "scanner-primary", "fingerprint": "4dd0e30353461393", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-28026dc4b3bb64ec", "level": "none", "message": {"text": "Commented-code block (10 lines) in frontend/src/components/__tests__/DateSelector.integration.test.tsx:52"}, "properties": {"repobilityId": "c13ce04ba7da272d", "scanner": "scanner-primary", "fingerprint": "28026dc4b3bb64ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82ad2d3570b9b9c5", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/__tests__/KpiBulletCard.test.tsx:134"}, "properties": {"repobilityId": "a2a81d638445cc72", "scanner": "scanner-primary", "fingerprint": "82ad2d3570b9b9c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8837c8e22c4eb41f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/ClubCard.test.tsx:93"}, "properties": {"repobilityId": "960d178b66f614cb", "scanner": "scanner-primary", "fingerprint": "8837c8e22c4eb41f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f36b2e35554c488", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/__tests__/DivisionCriteriaExplanation.test.tsx:29"}, "properties": {"repobilityId": "e0097b3d92658006", "scanner": "scanner-primary", "fingerprint": "9f36b2e35554c488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea79098d9ec249de", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/__tests__/ClubsTable.reskin.test.tsx:129"}, "properties": {"repobilityId": "533180d436871309", "scanner": "scanner-primary", "fingerprint": "ea79098d9ec249de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-53853b7643064da4", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/lazy/LazyComparisonPanel.tsx:6"}, "properties": {"repobilityId": "fcd3f1ad19c6ad48", "scanner": "scanner-primary", "fingerprint": "53853b7643064da4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2700c286e1b11bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/lazy/__tests__/LazyComparisonPanel.test.tsx:6"}, "properties": {"repobilityId": "331ff8b3324f1728", "scanner": "scanner-primary", "fingerprint": "f2700c286e1b11bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8219f894d2455533", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/filters/NumericFilter.tsx:35"}, "properties": {"repobilityId": "8a41c4e88063e1cc", "scanner": "scanner-primary", "fingerprint": "8219f894d2455533", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84a41c5197b8e430", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/DivisionPage.tsx:77"}, "properties": {"repobilityId": "f141439df819312c", "scanner": "scanner-primary", "fingerprint": "84a41c5197b8e430", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f1643eb47cd1621b", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/DistrictClubsPage.tsx:98"}, "properties": {"repobilityId": "eb5f8838703932e0", "scanner": "scanner-primary", "fingerprint": "f1643eb47cd1621b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-983e982e97ea4921", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/AreaRedirectPage.tsx:34"}, "properties": {"repobilityId": "a406566e1e5a3b03", "scanner": "scanner-primary", "fingerprint": "983e982e97ea4921", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b786d16b19e2469", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/MethodologyPage.tsx:89"}, "properties": {"repobilityId": "c083c6472507ce1c", "scanner": "scanner-primary", "fingerprint": "0b786d16b19e2469", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-687be22e74b763fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictChangesPage.tsx:79"}, "properties": {"repobilityId": "3d14a0cf5e973c6b", "scanner": "scanner-primary", "fingerprint": "687be22e74b763fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-348518d220e3ce2b", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/AreaPage.tsx:40"}, "properties": {"repobilityId": "0301eec9510ddc8e", "scanner": "scanner-primary", "fingerprint": "348518d220e3ce2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17e55470f4e8f29b", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/RegionPage.tsx:347"}, "properties": {"repobilityId": "d29f1222ff7d1e63", "scanner": "scanner-primary", "fingerprint": "17e55470f4e8f29b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ba1b4cd03757cfef", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictTrendsPage.tsx:141"}, "properties": {"repobilityId": "9e7318ad61521cea", "scanner": "scanner-primary", "fingerprint": "ba1b4cd03757cfef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be23811c1f8d4c03", "level": "note", "message": {"text": "Legacy-named symbol `distinguished__copy` in frontend/src/pages/ClubDetailPage.tsx:920"}, "properties": {"repobilityId": "50bbc5c9fd3ef060", "scanner": "scanner-primary", "fingerprint": "be23811c1f8d4c03", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-80b43f189a5f6915", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/ClubDetailPage.tsx:38"}, "properties": {"repobilityId": "67689a59b3dc4fc9", "scanner": "scanner-primary", "fingerprint": "80b43f189a5f6915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-000eecf75d657cdd", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/pages/DistrictsPage.tsx:41"}, "properties": {"repobilityId": "9e14c7cbe55f97d2", "scanner": "scanner-primary", "fingerprint": "000eecf75d657cdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55b18466737c10d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/DistrictDetailPage.tsx:194"}, "properties": {"repobilityId": "b7c83aa54159d57d", "scanner": "scanner-primary", "fingerprint": "55b18466737c10d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43c89e804b95361e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.awardsDefer.test.tsx:144"}, "properties": {"repobilityId": "eb677c5be74f107c", "scanner": "scanner-primary", "fingerprint": "43c89e804b95361e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e87ed3face64296", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx:147"}, "properties": {"repobilityId": "e15865f9a88a1a46", "scanner": "scanner-primary", "fingerprint": "8e87ed3face64296", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b1c7058c2975a5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.test.tsx:244"}, "properties": {"repobilityId": "a9c0128ff2c72834", "scanner": "scanner-primary", "fingerprint": "6b1c7058c2975a5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d368ac301209e237", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/pages/__tests__/mobile-ux.test.tsx:42"}, "properties": {"repobilityId": "57acdb6af02d9776", "scanner": "scanner-primary", "fingerprint": "d368ac301209e237", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-738f8f7de8138722", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/ClubDetailPage.test.tsx:243"}, "properties": {"repobilityId": "64787ddd01d21637", "scanner": "scanner-primary", "fingerprint": "738f8f7de8138722", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd89405a3679bfd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.sortable.test.tsx:49"}, "properties": {"repobilityId": "0950e3c129d51fb2", "scanner": "scanner-primary", "fingerprint": "cd89405a3679bfd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3308e16232677fe2", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/pages/__tests__/DistrictsPage.comparison.test.tsx:181"}, "properties": {"repobilityId": "884b8855ebe6c605", "scanner": "scanner-primary", "fingerprint": "3308e16232677fe2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcf8474f3a957666", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/pages/__tests__/DistrictsPage.responsive.test.tsx:113"}, "properties": {"repobilityId": "e1967f97f5e7ecee", "scanner": "scanner-primary", "fingerprint": "dcf8474f3a957666", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62ce51e3d63cc18a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useUrlState.ts:53"}, "properties": {"repobilityId": "0c34fdf6f90f36fc", "scanner": "scanner-primary", "fingerprint": "62ce51e3d63cc18a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af5b75c0d6ef4cea", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/useGlobalRankings.ts:85"}, "properties": {"repobilityId": "3599d2918eb1433d", "scanner": "scanner-primary", "fingerprint": "af5b75c0d6ef4cea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bccb59e099ad2901", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/useTimeSeries.ts:109"}, "properties": {"repobilityId": "10be90ee4b6ba86d", "scanner": "scanner-primary", "fingerprint": "bccb59e099ad2901", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-64ad850be0736f81", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/hooks/useClubGoalTimeline.ts:87"}, "properties": {"repobilityId": "fc3e21705e7ad8e0", "scanner": "scanner-primary", "fingerprint": "64ad850be0736f81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-94dc72187aff31a0", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/hooks/useDistrictAnalytics.ts:248"}, "properties": {"repobilityId": "608f37c11d2da6b2", "scanner": "scanner-primary", "fingerprint": "94dc72187aff31a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d3d503f70529b35", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/hooks/useProgramYearSummaries.ts:78"}, "properties": {"repobilityId": "e5ad838a30120ba3", "scanner": "scanner-primary", "fingerprint": "8d3d503f70529b35", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4d3a14ce7fe71dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/hooks/__tests__/useAggregatedAnalytics.test.tsx:140"}, "properties": {"repobilityId": "42aace9d0f60a29c", "scanner": "scanner-primary", "fingerprint": "c4d3a14ce7fe71dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1d35574ee5b04cac", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/hooks/__tests__/usePaymentsTrend.property.test.ts:61"}, "properties": {"repobilityId": "131e015bbf9000e9", "scanner": "scanner-primary", "fingerprint": "1d35574ee5b04cac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4f56564d81854db", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/services/cdn.ts:87"}, "properties": {"repobilityId": "ff91c9887ee6b196", "scanner": "scanner-primary", "fingerprint": "e4f56564d81854db", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b3ec1ae60c2fc8c2", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/services/searchIndex.ts:142"}, "properties": {"repobilityId": "362988d3a3cb3323", "scanner": "scanner-primary", "fingerprint": "b3ec1ae60c2fc8c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f790fd2e5abcb8d3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/styles/__tests__/rt-brand-v1.test.ts:60"}, "properties": {"repobilityId": "b1b3e5989d4d1ef9", "scanner": "scanner-primary", "fingerprint": "f790fd2e5abcb8d3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ddc27ed164e593fe", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/styles/__tests__/page-width-tokens.test.ts:50"}, "properties": {"repobilityId": "384c9e51aa8c0da0", "scanner": "scanner-primary", "fingerprint": "ddc27ed164e593fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a50413eba9f96a9f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/e2e/landing-mobile-cls.smoke.ts:87"}, "properties": {"repobilityId": "78366e9e47483fdf", "scanner": "scanner-primary", "fingerprint": "a50413eba9f96a9f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0e67fbbb5b48e91a", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/e2e/regions-legibility.smoke.ts:67"}, "properties": {"repobilityId": "8cda69c3f0e82fe3", "scanner": "scanner-primary", "fingerprint": "0e67fbbb5b48e91a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4ae6a88d8fb442c", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/e2e/touch-targets.smoke.ts:45"}, "properties": {"repobilityId": "da9e4bf12fd6e755", "scanner": "scanner-primary", "fingerprint": "d4ae6a88d8fb442c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b2c4fa5af6bc6e27", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/test-templates/IntegrationTestTemplate.example.tsx:646"}, "properties": {"repobilityId": "a21961cf207ccf97", "scanner": "scanner-primary", "fingerprint": "b2c4fa5af6bc6e27", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f045b3e7e844045", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/run-flake-detection.ts:110"}, "properties": {"repobilityId": "016fe99f25d70ec1", "scanner": "scanner-primary", "fingerprint": "4f045b3e7e844045", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29ce6822ba851e70", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/lighthouse-cdn-server.mjs:81"}, "properties": {"repobilityId": "76a1757ec7e2f482", "scanner": "scanner-primary", "fingerprint": "29ce6822ba851e70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72c5699c5ef6a992", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/seoAssets.test.ts:95"}, "properties": {"repobilityId": "e71d08667a4b8d7c", "scanner": "scanner-primary", "fingerprint": "72c5699c5ef6a992", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00f1ad5d9e960e37", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/registryFreshness.test.ts:149"}, "properties": {"repobilityId": "608625e7047847b1", "scanner": "scanner-primary", "fingerprint": "00f1ad5d9e960e37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9191e43769c15c71", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/changedFilesGate.test.ts:3"}, "properties": {"repobilityId": "3dd2ac6f4e1e2496", "scanner": "scanner-primary", "fingerprint": "9191e43769c15c71", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6746a043df25c241", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/pruneClassifier.test.ts:73"}, "properties": {"repobilityId": "62326b5de00aa97e", "scanner": "scanner-primary", "fingerprint": "6746a043df25c241", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2575ea685dda465d", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/__tests__/flakeMetrics.test.ts:195"}, "properties": {"repobilityId": "13e8c87ddfd4439b", "scanner": "scanner-primary", "fingerprint": "2575ea685dda465d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dbc830b6592ce95", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/cli.ts:1171"}, "properties": {"repobilityId": "fc980f6885ff3a1b", "scanner": "scanner-primary", "fingerprint": "0dbc830b6592ce95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-245f56bf07e346bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/cli.ts:1171"}, "properties": {"repobilityId": "29ef6e83afad1858", "scanner": "scanner-primary", "fingerprint": "245f56bf07e346bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e503d8968014c0fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/CollectorOrchestrator.ts:534"}, "properties": {"repobilityId": "79821f2021c2aa32", "scanner": "scanner-primary", "fingerprint": "e503d8968014c0fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6db93cb5c5009b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.previousYearSnapshot.test.ts:366"}, "properties": {"repobilityId": "86523525dd8b7260", "scanner": "scanner-primary", "fingerprint": "f6db93cb5c5009b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-60019a4572f096bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/PruneService.test.ts:651"}, "properties": {"repobilityId": "73127d9697239e91", "scanner": "scanner-primary", "fingerprint": "60019a4572f096bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-941caa4fff40a68d", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/__tests__/AnalyticsComputeService.test.ts:2435"}, "properties": {"repobilityId": "69f1ad8b81f2bca4", "scanner": "scanner-primary", "fingerprint": "941caa4fff40a68d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2d4c434f88a3c7f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/TransformService.rankings.test.ts:234"}, "properties": {"repobilityId": "56140604cb73e213", "scanner": "scanner-primary", "fingerprint": "f2d4c434f88a3c7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a27623aff7301175", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/BackfillOrchestrator.test.ts:293"}, "properties": {"repobilityId": "87d72886b1b7aa8b", "scanner": "scanner-primary", "fingerprint": "a27623aff7301175", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e15aaeb28d4380cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/__tests__/ClosingPeriodDetector.property.test.ts:195"}, "properties": {"repobilityId": "09a49ccb0ba700bd", "scanner": "scanner-primary", "fingerprint": "e15aaeb28d4380cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6ed89a387abe67a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/types/findAClub.ts:13"}, "properties": {"repobilityId": "587db3905b069697", "scanner": "scanner-primary", "fingerprint": "6ed89a387abe67a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4a74ee4e2ed73afc", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/collector-cli/src/services/BackfillOrchestrator.ts:211"}, "properties": {"repobilityId": "ef181daf81c0d9ec", "scanner": "scanner-primary", "fingerprint": "4a74ee4e2ed73afc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dba7ddd53ed474f", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/services/AnalyticsComputeService.ts:785"}, "properties": {"repobilityId": "a521d868554248b1", "scanner": "scanner-primary", "fingerprint": "7dba7ddd53ed474f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-704797d9db3f2b78", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/SnapshotValueDiff.ts:283"}, "properties": {"repobilityId": "9084807bc6dabacc", "scanner": "scanner-primary", "fingerprint": "704797d9db3f2b78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-027b27ef19fea866", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/collector-cli/src/services/EducationArchiveBackfill.ts:186"}, "properties": {"repobilityId": "f128558dc4484067", "scanner": "scanner-primary", "fingerprint": "027b27ef19fea866", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16fb13e40433bf84", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/collector-cli/src/services/DailyReportParser.ts:226"}, "properties": {"repobilityId": "e63ecf1974a61702", "scanner": "scanner-primary", "fingerprint": "16fb13e40433bf84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04211b82fbd2a91c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/FindAClubMerger.ts:95"}, "properties": {"repobilityId": "7524a4ff02964f09", "scanner": "scanner-primary", "fingerprint": "04211b82fbd2a91c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81aa1b685cbf4eda", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/UploadService.ts:945"}, "properties": {"repobilityId": "ce88173559df2167", "scanner": "scanner-primary", "fingerprint": "81aa1b685cbf4eda", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-766ca89aada350c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/collector-cli/src/services/__tests__/FindAClubMerger.test.ts:90"}, "properties": {"repobilityId": "21741681f8de0afc", "scanner": "scanner-primary", "fingerprint": "766ca89aada350c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c9408b8b8423000", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/collector-cli/src/services/__tests__/DistrictReportsIngest.integration.test.ts:15"}, "properties": {"repobilityId": "5d7338387cb54b0e", "scanner": "scanner-primary", "fingerprint": "5c9408b8b8423000", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3fcde754304b1db7", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.test.ts:1792"}, "properties": {"repobilityId": "ec81a9cd2956a66a", "scanner": "scanner-primary", "fingerprint": "3fcde754304b1db7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfdbe96cf727bb95", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.test.ts:67"}, "properties": {"repobilityId": "7f94094e3a168288", "scanner": "scanner-primary", "fingerprint": "dfdbe96cf727bb95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfc1bd54e152db44", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/DistinguishedClubAnalyticsModule.ts:656"}, "properties": {"repobilityId": "b77b73f9da856fd6", "scanner": "scanner-primary", "fingerprint": "cfc1bd54e152db44", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf657d1acedaf1c3", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/ClubHealthAnalyticsModule.test.ts:565"}, "properties": {"repobilityId": "75ec8620fe4a9953", "scanner": "scanner-primary", "fingerprint": "cf657d1acedaf1c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-33f422717e9a39c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsComputer.ts:199"}, "properties": {"repobilityId": "fe7dafff61dd907d", "scanner": "scanner-primary", "fingerprint": "33f422717e9a39c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37d8003337695c6e", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.test.ts:187"}, "properties": {"repobilityId": "e9a9cfb0a30ec3ef", "scanner": "scanner-primary", "fingerprint": "37d8003337695c6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c3641fddf8136c85", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/AnalyticsUtils.ts:142"}, "properties": {"repobilityId": "584680458608e140", "scanner": "scanner-primary", "fingerprint": "c3641fddf8136c85", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0984f8ce19c3a19", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/analytics-core/src/analytics/__tests__/AnalyticsComputer.performanceTargets.test.ts:943"}, "properties": {"repobilityId": "f719adff3e2f86e0", "scanner": "scanner-primary", "fingerprint": "c0984f8ce19c3a19", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67cbcd6648fa5695", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/transformation/DataTransformer.test.ts:144"}, "properties": {"repobilityId": "4c8f6422e8b82a7e", "scanner": "scanner-primary", "fingerprint": "67cbcd6648fa5695", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26fb3d5bce8bee87", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/analytics-core/src/transformation/DataTransformer.ts:107"}, "properties": {"repobilityId": "7b163bfd2e96fb1e", "scanner": "scanner-primary", "fingerprint": "26fb3d5bce8bee87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d162bdf571cc360", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/analytics-core/src/rankings/DistinguishedDistrictCalculator.test.ts:249"}, "properties": {"repobilityId": "1242b03c0bcd0e25", "scanner": "scanner-primary", "fingerprint": "5d162bdf571cc360", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-601a92a60d89e259", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/scripts/record-fixtures.mjs:43"}, "properties": {"repobilityId": "e8ffab86cf5441af", "scanner": "scanner-primary", "fingerprint": "601a92a60d89e259", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c9ecd695976c8783", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/__tests__/_fixture-fetch.ts:33"}, "properties": {"repobilityId": "21f0431f8ec16592", "scanner": "scanner-primary", "fingerprint": "c9ecd695976c8783", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-30e91bf14d20c699", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/mcp-server/src/__tests__/CdnClient.test.ts:176"}, "properties": {"repobilityId": "10b2fc35905dd9de", "scanner": "scanner-primary", "fingerprint": "30e91bf14d20c699", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7e6a2a29797137d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/mcp-server/src/cdn/CdnClient.ts:51"}, "properties": {"repobilityId": "2bd28ff4f53277fb", "scanner": "scanner-primary", "fingerprint": "d7e6a2a29797137d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d785c17821858dcb", "level": "note", "message": {"text": "22 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "f5222babac44ad42", "scanner": "scanner-primary", "fingerprint": "d785c17821858dcb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-928ba95a2a8f0bbd", "level": "warning", "message": {"text": "Frontend route `/region/:n` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/RegionPage.sortable.test.tsx"}, "properties": {"repobilityId": "b998240966ec4695", "scanner": "scanner-primary", "fingerprint": "928ba95a2a8f0bbd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-7fa7dfdfe71d2bb4", "level": "warning", "message": {"text": "Frontend route `/district/:districtId/division/:divId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx"}, "properties": {"repobilityId": "39ee6f30e5ed1cae", "scanner": "scanner-primary", "fingerprint": "7fa7dfdfe71d2bb4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-ccb6fb771aa3892d", "level": "warning", "message": {"text": "Frontend route `/district/:districtId/division/:divId/area/:areaId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DivisionAreaWayfinding.test.tsx"}, "properties": {"repobilityId": "9609c8e7ec9335fd", "scanner": "scanner-primary", "fingerprint": "ccb6fb771aa3892d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-f8078a78563dceff", "level": "warning", "message": {"text": "Frontend route `/districts/:districtId` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictDetailPage.leanHub.test.tsx"}, "properties": {"repobilityId": "7e58c1c4b21910da", "scanner": "scanner-primary", "fingerprint": "f8078a78563dceff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-520c73f147776973", "level": "warning", "message": {"text": "Frontend route `/district/:districtId/changes` has no Link/navigate to it \u2014 frontend/src/pages/__tests__/DistrictChangesPage.test.tsx"}, "properties": {"repobilityId": "2685b71f0095360b", "scanner": "scanner-primary", "fingerprint": "520c73f147776973", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}