{"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-77ed55e84a479551", "name": "TODO/FIXME marker in shipping code \u2014 tests/unit/integrity-guards.test.js:36", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/integrity-guards.test.js:36"}, "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-f86ca6bc753beefc", "name": "TODO/FIXME marker in shipping code \u2014 tests/unit/thirds-assign.test.js:57", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/thirds-assign.test.js:57"}, "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-072d58ccbd81ccb2", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-config.js:64", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-config.js:64"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7092f05adb5597e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/integrity/verify.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/verify.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2c46fea157619ebd", "name": "Stray `console.log` in TS/JS \u2014 scripts/integrity/confirm-publication.js:75", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/confirm-publication.js:75"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-802fc5431bf4f3a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/integrity/snapshot.js:217", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/snapshot.js:217"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58fca454e0741d00", "name": "Stray `console.log` in TS/JS \u2014 scripts/integrity/post-picks.js:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/post-picks.js:32"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-005b22e32b3eca1a", "name": "Stray `console.log` in TS/JS \u2014 scripts/dev/reset-my-predictions.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev/reset-my-predictions.js:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3ebd763bfb476a4", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-info.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-info.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-397c3dd32f394e58", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-alerts-telegram.js:233", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-alerts-telegram.js:233"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-088568060f61221d", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-daily.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-daily.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-681bb965d0eaacf7", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-telegram-format.js:104", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-telegram-format.js:104"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b7a6f4b4e1c8c109", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-beb2ac7d3d39b402", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-via-edge.js:270", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-via-edge.js:270"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8ab8001f49458bde", "name": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-integration.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-integration.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bec8d252b524fa28", "name": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-production.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-production.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-05a7cab2cc0f13f5", "name": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-e2e.js:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-e2e.js:56"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-02b7ad00363b5d5d", "name": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/seed-odds-demo.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/seed-odds-demo.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35b60241fd2a4270", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/progress.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/progress.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6aeefe7d2404c09d", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/04-admin-results.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/04-admin-results.js:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4406b6807b447d2", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-fifa-tie-dom.js:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-fifa-tie-dom.js:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea22db24e24d64aa", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-verify.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-verify.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e5daec13b01d145c", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-historico-scorer.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-historico-scorer.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b791dd8aee86884", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/gen-playout-r32.js:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/gen-playout-r32.js:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c3285dbf0768435d", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rls-hostile.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rls-hostile.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5391723bed396ea9", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-concurrency-alerts.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-concurrency-alerts.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fe9eaca6fb7325a1", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-validation.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-validation.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fa93d2e954392599", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-temporal-states.js:49", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-temporal-states.js:49"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e537df800281a464", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rank-chart.js:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rank-chart.js:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa115f801d19af0e", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/notify-telegram.js:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/notify-telegram.js:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-07eb648cec66afc0", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-parity.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-parity.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d3bbc9ff221c3c96", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/05-audit.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/05-audit.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-72a6fac28496ad91", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-ui-penalty.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-ui-penalty.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-757f0a2cfbf7bbf7", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-ui-pages.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-ui-pages.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b22657a67998cfdf", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-session.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-session.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-16e3baba9f5d2354", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-harness-state.js:33", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-harness-state.js:33"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-082c890454cd0ed2", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-cross-browser.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-cross-browser.js:12"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-46a4101a2eba9c66", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-xss-hostile.js:65", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-xss-hostile.js:65"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5588acf74014f366", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/preset-inprogress.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/preset-inprogress.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db49e256af242002", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-load-concurrency.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-load-concurrency.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d7f328cf4cca326b", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-scale.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-scale.js:57"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1000ec7b77933a9", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/01-generate-tournament.js:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/01-generate-tournament.js:34"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1248fced6d8aa53", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/06-ui-assert.js:27", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/06-ui-assert.js:27"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1ec122f2ab10941b", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-render-adversarial.js:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-render-adversarial.js:61"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2d619e83a753f7e", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/backfill-missing-scorers.js:24", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/backfill-missing-scorers.js:24"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f8fb8fe7053e1fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-avatar-upload.js:25", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-avatar-upload.js:25"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4f0edc1d7f38427a", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/00-setup-local.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/00-setup-local.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcfc9776d26ce5ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-search.js:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-search.js:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5590170885c3b1ea", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-signup-flow.js:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-signup-flow.js:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-399f4d3fff8cd549", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-my-account.js:46", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-my-account.js:46"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eaba8fae82e784e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-odds.js:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-odds.js:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51962b653764ea71", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-smoke.js:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-smoke.js:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8be19924b09501e8", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-integrity-snapshot.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-integrity-snapshot.js:37"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b4bc7a4b6a7e2b63", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/03-palpitar.js:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/03-palpitar.js:51"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3274ace171bbce8d", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-date-locks.js:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-date-locks.js:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b610d7f3649c16fc", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-storage-and-validation.js:19", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-storage-and-validation.js:19"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5f1bbae03af7680", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-boundary.js:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-boundary.js:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-325c41dabbd578ec", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rescore-on-edit.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rescore-on-edit.js:36"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b2e0cdee76e36447", "name": "Stray `console.log` in TS/JS \u2014 scripts/e2e/lib/error-tracker.js:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/lib/error-tracker.js:157"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3dc707bd3fab1546", "name": "TODO/FIXME marker in shipping code \u2014 src/js/raiox.js:141", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/js/raiox.js:141"}, "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-4be86df7b34a84e1", "name": "Stray `console.log` in TS/JS \u2014 supabase/functions/telegram-alert/index.ts:180", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/telegram-alert/index.ts:180"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f8fb4c6c0f4f13a6", "name": "Possible secret in _ui-capture.mjs", "shortDescription": {"text": "Possible secret in _ui-capture.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-75576ae604cc7a02", "name": "Possible secret in scripts/dev/ui-mob-audit.mjs", "shortDescription": {"text": "Possible secret in scripts/dev/ui-mob-audit.mjs"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-b49488c15719e74d", "name": "Possible secret in scripts/e2e/test-historico-scorer.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-historico-scorer.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f0ee7dd0236f8a41", "name": "Possible secret in scripts/e2e/test-rls-hostile.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-rls-hostile.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7332c898d3e27db9", "name": "Insecure pattern 'node_child_process' in scripts/e2e/test-temporal-states.js:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-temporal-states.js:32"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb3d457e4ecc417c", "name": "Possible secret in scripts/e2e/test-rank-chart.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-rank-chart.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-771073d565f3c60d", "name": "Insecure pattern 'node_child_process' in scripts/e2e/test-rank-chart.js:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-rank-chart.js:31"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-414c0965430fc648", "name": "Possible secret in scripts/e2e/seed-harness-state.js", "shortDescription": {"text": "Possible secret in scripts/e2e/seed-harness-state.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-120aba494a5e06af", "name": "Insecure pattern 'node_child_process' in scripts/e2e/seed-harness-state.js:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/seed-harness-state.js:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-630d8262cc1122a0", "name": "Possible secret in scripts/e2e/test-xss-hostile.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-xss-hostile.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-280474ec048574b7", "name": "Possible secret in scripts/e2e/test-load-concurrency.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-load-concurrency.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-9161e3d1b72b6d8d", "name": "Possible secret in scripts/e2e/seed-scale.js", "shortDescription": {"text": "Possible secret in scripts/e2e/seed-scale.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-f6809fb0d54744e3", "name": "Possible secret in scripts/e2e/test-render-adversarial.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-render-adversarial.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-7dc74e7ecaa5853e", "name": "Possible secret in scripts/e2e/test-avatar-upload.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-avatar-upload.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4ac41c7f8e0be5bb", "name": "Possible secret in scripts/e2e/test-signup-flow.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-signup-flow.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-2b5df02525b9dbfe", "name": "Insecure pattern 'node_child_process' in scripts/e2e/test-integrity-snapshot.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-integrity-snapshot.js:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa3d8848d3cd0b30", "name": "Possible secret in scripts/e2e/03-palpitar.js", "shortDescription": {"text": "Possible secret in scripts/e2e/03-palpitar.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-bd80d4e6db06f289", "name": "Possible secret in scripts/e2e/test-date-locks.js", "shortDescription": {"text": "Possible secret in scripts/e2e/test-date-locks.js"}, "fullDescription": {"text": "Detected pattern matching password_literal. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-266a5826e57dc79b", "name": "Insecure pattern 'node_child_process' in scripts/e2e/test-rescore-on-edit.js:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-rescore-on-edit.js:21"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c4b4c9660d787b40", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/util.js:754", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/util.js:754"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-816d817e2216ec40", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/rank-chart.js:35", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/rank-chart.js:35"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb4cfef18c91118c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/raiox.js:774", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/raiox.js:774"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89c878cc867fdf84", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/journey-chart.js:115", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/journey-chart.js:115"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f64641ad12c6c7c2", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/sidebar.js:74", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/sidebar.js:74"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1db2a253304e31d5", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/tooltip.js:33", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/tooltip.js:33"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-364a7be6bcacd7ba", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/regras.js:82", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/regras.js:82"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32211b9e63262bfe", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/ranking.js:42", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/ranking.js:42"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-87a6bcd59aa1d9e4", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-grupos.js:89", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-grupos.js:89"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-19e9f50d5917f880", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/campeao-artilheiro.js:52", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/campeao-artilheiro.js:52"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8b7cbd5cf39dd6ff", "name": "Insecure pattern 'direct_outerhtml_assignment' in src/js/pages/campeao-artilheiro.js:679", "shortDescription": {"text": "Insecure pattern 'direct_outerhtml_assignment' in src/js/pages/campeao-artilheiro.js:679"}, "fullDescription": {"text": "Found a known-risky pattern (direct_outerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aef932b895b2383a", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/historico.js:47", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/historico.js:47"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fa94deb97d05f873", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/inicio.js:425", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/inicio.js:425"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aec0cfa0db1f707d", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-mata.js:98", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-mata.js:98"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3ca508a13b207f6c", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/admin.js:41", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/admin.js:41"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-acf750101ca563f7", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logo-final.html:133", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logo-final.html:133"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-23da221adbcb5cb1", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logos-fire.html:184", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logos-fire.html:184"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e229c13e9e393deb", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/rank-chart-prototypes.html:519", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/rank-chart-prototypes.html:519"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-14e8c41cbfbba411", "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-dd94f301f1d3b5cb", "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-5e37ed34d787f4a0", "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-cfe00eefaac57221", "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-56fc2d1abe43c93e", "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-22d40f34fdde8f7b", "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-e0c48649c0857a97", "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-8c04c52d2ce0a268", "name": "47 TODO/FIXME markers", "shortDescription": {"text": "47 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 319 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 12 placeholder/mock markers across 4 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6862fbb36a6981d7", "name": "Commented-code block (6 lines) in vitest.config.js:12", "shortDescription": {"text": "Commented-code block (6 lines) in vitest.config.js: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-843abb05442355ec", "name": "Commented-code block (5 lines) in tests/unit/leaderboard-parity.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/leaderboard-parity.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd330f9ca40c5c5f", "name": "Commented-code block (7 lines) in tests/unit/integrity-guards.test.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/integrity-guards.test.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-778891ef6a564ebf", "name": "Commented-code block (9 lines) in tests/unit/integrity-report.test.js:4", "shortDescription": {"text": "Commented-code block (9 lines) in tests/unit/integrity-report.test.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-481d1d374b0b4367", "name": "Commented-code block (8 lines) in tests/unit/bracket.test.js:165", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/bracket.test.js:165"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb4f98dc2d616745", "name": "Commented-code block (5 lines) in tests/unit/qualifier.test.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/qualifier.test.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b5f06e6db423bdfe", "name": "Commented-code block (8 lines) in tests/unit/card-results.test.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/card-results.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4169ec7544760a28", "name": "Commented-code block (5 lines) in tests/unit/integrity-telegram-picks.test.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/integrity-telegram-picks.test.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-923c541575a3b8aa", "name": "Commented-code block (6 lines) in tests/unit/progression.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/progression.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-498fb60261afece8", "name": "Commented-code block (5 lines) in tests/unit/chart-utils.test.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/chart-utils.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38fcfaad559e0597", "name": "Commented-code block (6 lines) in tests/unit/standings-tiebreak.test.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/standings-tiebreak.test.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d05d7f0b0775481", "name": "Commented-code block (5 lines) in tests/fixtures/tz-probe.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in tests/fixtures/tz-probe.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b98944cb4ee22251", "name": "Commented-code block (6 lines) in scripts/integrity/snapshot.js:179", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/integrity/snapshot.js:179"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-150bf25a57945f2c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev/prod-parity-audit.mjs:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev/prod-parity-audit.mjs:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9f6bc3153f33dc4a", "name": "Commented-code block (6 lines) in scripts/dev/probe-prod-grants.mjs:91", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/dev/probe-prod-grants.mjs: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-c87e13cfd45ddc9d", "name": "Commented-code block (6 lines) in scripts/dev/ui-mob-audit.mjs:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/dev/ui-mob-audit.mjs:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17ac54cf48f4b621", "name": "Commented-code block (6 lines) in scripts/dev/advance-to-r32.mjs:10", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/dev/advance-to-r32.mjs:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f5ecc82bcf502e1", "name": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-info.js:84", "shortDescription": {"text": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-info.js:84"}, "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-9409c56104c6964b", "name": "Commented-code block (5 lines) in scripts/alerts/preview-alerts-telegram.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/alerts/preview-alerts-telegram.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-437785a441306d4c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/preview-alerts-telegram.js:78", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/preview-alerts-telegram.js:78"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f0e8e40567d902f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/test-telegram-format.js:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/test-telegram-format.js:54"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4228c3a2d7836616", "name": "Commented-code block (6 lines) in scripts/alerts/test-alerts.js:94", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/alerts/test-alerts.js:94"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca2422dc87a8daa0", "name": "Commented-code block (5 lines) in scripts/alerts/preview-via-edge.js:11", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/alerts/preview-via-edge.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-67f907aea2c68072", "name": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-integration.js:217", "shortDescription": {"text": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-integration.js:217"}, "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-91bbee5e605ce0b5", "name": "Commented-code block (6 lines) in scripts/alerts/test-alerts-integration.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/alerts/test-alerts-integration.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d166c34a71f66855", "name": "Commented-code block (5 lines) in scripts/e2e/test-historico-scorer.js:203", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e/test-historico-scorer.js:203"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c51b420046ae500f", "name": "Legacy-named symbol `_matches_backup` in scripts/e2e/test-temporal-states.js:23", "shortDescription": {"text": "Legacy-named symbol `_matches_backup` in scripts/e2e/test-temporal-states.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d71fc564f16d490f", "name": "Commented-code block (5 lines) in scripts/e2e/test-ui-pages.js:72", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e/test-ui-pages.js:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b398bb7302ef73f6", "name": "Commented-code block (5 lines) in scripts/e2e/seed-harness-state.js:86", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e/seed-harness-state.js:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-83dbd40d8f122f55", "name": "Commented-code block (5 lines) in scripts/e2e/seed-scale.js:301", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e/seed-scale.js:301"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d487535d747caac7", "name": "Commented-code block (5 lines) in scripts/e2e/06-ui-assert.js:176", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/e2e/06-ui-assert.js:176"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cb8d6713e81194af", "name": "Commented-code block (7 lines) in scripts/e2e/prod-smoke.js:67", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/e2e/prod-smoke.js:67"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-958c146ceed3fc3a", "name": "Commented-code block (6 lines) in scripts/e2e/lib/recompute.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/e2e/lib/recompute.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e455d440fd58e60", "name": "Commented-code block (7 lines) in src/js/supabase.js:23", "shortDescription": {"text": "Commented-code block (7 lines) in src/js/supabase.js:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51b1f589788e1515", "name": "Commented-code block (7 lines) in src/js/util.js:291", "shortDescription": {"text": "Commented-code block (7 lines) in src/js/util.js:291"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4add340e87de26bc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/js/util.js:654", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/js/util.js:654"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a394a3f825a047f3", "name": "Commented-code block (6 lines) in src/js/rank-chart.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/js/rank-chart.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb4ba1d689713685", "name": "Commented-code block (9 lines) in src/js/raiox.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/js/raiox.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78a4e57523427afe", "name": "Commented-code block (8 lines) in src/js/thirds-assign.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/thirds-assign.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e2d5b75d10c4efb", "name": "Commented-code block (8 lines) in src/js/error-reporter.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/error-reporter.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f15b2cd67d2f3cfb", "name": "Commented-code block (8 lines) in src/js/journey-chart.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/journey-chart.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-051a185282febb16", "name": "Commented-code block (10 lines) in src/js/progression.js:1", "shortDescription": {"text": "Commented-code block (10 lines) in src/js/progression.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd6198ea12171039", "name": "Commented-code block (5 lines) in src/js/progression-core.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/progression-core.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-01a066178b8f2130", "name": "Commented-code block (9 lines) in src/js/tooltip.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/js/tooltip.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ceb69923c28e00f", "name": "Commented-code block (5 lines) in src/js/bracket.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/bracket.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-086fcfc41ec39f80", "name": "Commented-code block (7 lines) in src/js/prize.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/js/prize.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8eaefef663b78c3", "name": "Commented-code block (6 lines) in src/js/auto-refresh.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/js/auto-refresh.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb008d22d96dff2d", "name": "Commented-code block (8 lines) in src/js/standings-view.js:57", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/standings-view.js:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-21ee2188e9a296fa", "name": "Commented-code block (5 lines) in src/js/card-results.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/card-results.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad2826debd248634", "name": "Commented-code block (5 lines) in src/js/auth.js:75", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/auth.js:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fb394b2dac7cfe5b", "name": "Commented-code block (5 lines) in src/js/pages/regras.js:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/pages/regras.js:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d29ff7ad97ca801d", "name": "Commented-code block (8 lines) in src/js/pages/ranking.js:641", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/pages/ranking.js:641"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a11791661b9efe46", "name": "Commented-code block (5 lines) in src/js/pages/palpites-grupos.js:54", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/pages/palpites-grupos.js:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9ed774a480a1654", "name": "Commented-code block (5 lines) in src/js/pages/reset-password.js:31", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/pages/reset-password.js:31"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5787a4b393a1643e", "name": "Commented-code block (8 lines) in src/js/pages/inicio.js:302", "shortDescription": {"text": "Commented-code block (8 lines) in src/js/pages/inicio.js:302"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc14899c2cfcdc0b", "name": "Commented-code block (5 lines) in src/js/pages/palpites-mata.js:173", "shortDescription": {"text": "Commented-code block (5 lines) in src/js/pages/palpites-mata.js:173"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f669c2d381b385b3", "name": "Commented-code block (6 lines) in src/js/pages/admin.js:232", "shortDescription": {"text": "Commented-code block (6 lines) in src/js/pages/admin.js:232"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1858c04a8f6f04a8", "name": "Commented-code block (6 lines) in supabase/functions/telegram-alert/index.ts:54", "shortDescription": {"text": "Commented-code block (6 lines) in supabase/functions/telegram-alert/index.ts:54"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa05ba08852a0660", "name": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/telegram-alert/index.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/telegram-alert/index.ts:113"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f808a4ef3e1071fb", "name": "14 env vars used in code but missing from .env.example", "shortDescription": {"text": "14 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_EMAIL`, `ADMIN_PASSWORD`, `CI`, `E2E_ALLOW_REMOTE`, `E2E_KEEP_ALERTS`, `GITHUB_REF_NAME`, `GITHUB_REPOSITORY`, `GITHUB_RUN_ID` + 6 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25221"}, "properties": {"repository": "danieloda/world-cup-2026", "repoUrl": "https://github.com/danieloda/world-cup-2026", "branch": "main"}, "results": [{"ruleId": "scanner-77ed55e84a479551", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/integrity-guards.test.js:36"}, "properties": {"repobilityId": "22c682c87a0cdc75", "scanner": "scanner-primary", "fingerprint": "77ed55e84a479551", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-f86ca6bc753beefc", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tests/unit/thirds-assign.test.js:57"}, "properties": {"repobilityId": "c0d86e443cbea7f7", "scanner": "scanner-primary", "fingerprint": "f86ca6bc753beefc", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-072d58ccbd81ccb2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-config.js:64"}, "properties": {"repobilityId": "6f3e4a8c90db0301", "scanner": "scanner-primary", "fingerprint": "072d58ccbd81ccb2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7092f05adb5597e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/verify.js:32"}, "properties": {"repobilityId": "7fa4e927617bd42b", "scanner": "scanner-primary", "fingerprint": "7092f05adb5597e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-2c46fea157619ebd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/confirm-publication.js:75"}, "properties": {"repobilityId": "a82893d7259b9f69", "scanner": "scanner-primary", "fingerprint": "2c46fea157619ebd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-802fc5431bf4f3a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/snapshot.js:217"}, "properties": {"repobilityId": "7f67a5fab801a9c7", "scanner": "scanner-primary", "fingerprint": "802fc5431bf4f3a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-58fca454e0741d00", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/integrity/post-picks.js:32"}, "properties": {"repobilityId": "d25ffc3855a87c29", "scanner": "scanner-primary", "fingerprint": "58fca454e0741d00", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-005b22e32b3eca1a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/dev/reset-my-predictions.js:46"}, "properties": {"repobilityId": "d8180b9c178c42e0", "scanner": "scanner-primary", "fingerprint": "005b22e32b3eca1a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3ebd763bfb476a4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-info.js:37"}, "properties": {"repobilityId": "047eb7e7ff60c868", "scanner": "scanner-primary", "fingerprint": "c3ebd763bfb476a4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-397c3dd32f394e58", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-alerts-telegram.js:233"}, "properties": {"repobilityId": "f182d0149cd04da9", "scanner": "scanner-primary", "fingerprint": "397c3dd32f394e58", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-088568060f61221d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-daily.js:37"}, "properties": {"repobilityId": "9482c2dd2304de69", "scanner": "scanner-primary", "fingerprint": "088568060f61221d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-681bb965d0eaacf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-telegram-format.js:104"}, "properties": {"repobilityId": "991d54aafa9eab87", "scanner": "scanner-primary", "fingerprint": "681bb965d0eaacf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7a6f4b4e1c8c109", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts.js:49"}, "properties": {"repobilityId": "5967ebb03f9e9f3b", "scanner": "scanner-primary", "fingerprint": "b7a6f4b4e1c8c109", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-beb2ac7d3d39b402", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/preview-via-edge.js:270"}, "properties": {"repobilityId": "caa3fc8e1520ef75", "scanner": "scanner-primary", "fingerprint": "beb2ac7d3d39b402", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8ab8001f49458bde", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/alerts/test-alerts-integration.js:45"}, "properties": {"repobilityId": "c03502bc2e587770", "scanner": "scanner-primary", "fingerprint": "8ab8001f49458bde", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bec8d252b524fa28", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-production.js:52"}, "properties": {"repobilityId": "21ff62dff24d6b19", "scanner": "scanner-primary", "fingerprint": "bec8d252b524fa28", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-05a7cab2cc0f13f5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/reset-for-e2e.js:56"}, "properties": {"repobilityId": "8c26408ea7eecb08", "scanner": "scanner-primary", "fingerprint": "05a7cab2cc0f13f5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-02b7ad00363b5d5d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/maintenance/seed-odds-demo.js:40"}, "properties": {"repobilityId": "02ebe988fbc04128", "scanner": "scanner-primary", "fingerprint": "02b7ad00363b5d5d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-35b60241fd2a4270", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/progress.js:50"}, "properties": {"repobilityId": "79b80a892fbbe3b0", "scanner": "scanner-primary", "fingerprint": "35b60241fd2a4270", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6aeefe7d2404c09d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/04-admin-results.js:50"}, "properties": {"repobilityId": "5180b16a83ce8a2e", "scanner": "scanner-primary", "fingerprint": "6aeefe7d2404c09d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e4406b6807b447d2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-fifa-tie-dom.js:18"}, "properties": {"repobilityId": "47a717af67c04dc0", "scanner": "scanner-primary", "fingerprint": "e4406b6807b447d2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea22db24e24d64aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-verify.js:35"}, "properties": {"repobilityId": "3fe593ab10ca92a2", "scanner": "scanner-primary", "fingerprint": "ea22db24e24d64aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e5daec13b01d145c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-historico-scorer.js:35"}, "properties": {"repobilityId": "3aa6f1228995b496", "scanner": "scanner-primary", "fingerprint": "e5daec13b01d145c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4b791dd8aee86884", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/gen-playout-r32.js:68"}, "properties": {"repobilityId": "831f22bbec9ba20c", "scanner": "scanner-primary", "fingerprint": "4b791dd8aee86884", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c3285dbf0768435d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rls-hostile.js:57"}, "properties": {"repobilityId": "251eee96123a7f41", "scanner": "scanner-primary", "fingerprint": "c3285dbf0768435d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5391723bed396ea9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-concurrency-alerts.js:15"}, "properties": {"repobilityId": "340d0e2bdb1cf6ad", "scanner": "scanner-primary", "fingerprint": "5391723bed396ea9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fe9eaca6fb7325a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-validation.js:35"}, "properties": {"repobilityId": "90b2b383ab3ad26f", "scanner": "scanner-primary", "fingerprint": "fe9eaca6fb7325a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa93d2e954392599", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-temporal-states.js:49"}, "properties": {"repobilityId": "b083d8c8ff1a6154", "scanner": "scanner-primary", "fingerprint": "fa93d2e954392599", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e537df800281a464", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rank-chart.js:47"}, "properties": {"repobilityId": "abb93c4e78a65b7c", "scanner": "scanner-primary", "fingerprint": "e537df800281a464", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa115f801d19af0e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/notify-telegram.js:52"}, "properties": {"repobilityId": "f02d7b499b6d39d2", "scanner": "scanner-primary", "fingerprint": "aa115f801d19af0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07eb648cec66afc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-parity.js:33"}, "properties": {"repobilityId": "a2b1869115b52677", "scanner": "scanner-primary", "fingerprint": "07eb648cec66afc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d3bbc9ff221c3c96", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/05-audit.js:44"}, "properties": {"repobilityId": "a6d17fc5e32eda74", "scanner": "scanner-primary", "fingerprint": "d3bbc9ff221c3c96", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-72a6fac28496ad91", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-ui-penalty.js:19"}, "properties": {"repobilityId": "a20283440142a270", "scanner": "scanner-primary", "fingerprint": "72a6fac28496ad91", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-757f0a2cfbf7bbf7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-ui-pages.js:33"}, "properties": {"repobilityId": "58e2dcf5be0c75f2", "scanner": "scanner-primary", "fingerprint": "757f0a2cfbf7bbf7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b22657a67998cfdf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-session.js:15"}, "properties": {"repobilityId": "30f660dbf54ab80e", "scanner": "scanner-primary", "fingerprint": "b22657a67998cfdf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-16e3baba9f5d2354", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-harness-state.js:33"}, "properties": {"repobilityId": "8d60177b731e310f", "scanner": "scanner-primary", "fingerprint": "16e3baba9f5d2354", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-082c890454cd0ed2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-cross-browser.js:12"}, "properties": {"repobilityId": "133f7d06f2569268", "scanner": "scanner-primary", "fingerprint": "082c890454cd0ed2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-46a4101a2eba9c66", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-xss-hostile.js:65"}, "properties": {"repobilityId": "8ef62f6471c09a1b", "scanner": "scanner-primary", "fingerprint": "46a4101a2eba9c66", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5588acf74014f366", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/preset-inprogress.js:42"}, "properties": {"repobilityId": "a0db554559e68c48", "scanner": "scanner-primary", "fingerprint": "5588acf74014f366", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db49e256af242002", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-load-concurrency.js:36"}, "properties": {"repobilityId": "794890d9f636e133", "scanner": "scanner-primary", "fingerprint": "db49e256af242002", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d7f328cf4cca326b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-scale.js:57"}, "properties": {"repobilityId": "899ebde41d2c3d76", "scanner": "scanner-primary", "fingerprint": "d7f328cf4cca326b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c1000ec7b77933a9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/01-generate-tournament.js:34"}, "properties": {"repobilityId": "97534b4c41931298", "scanner": "scanner-primary", "fingerprint": "c1000ec7b77933a9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a1248fced6d8aa53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/06-ui-assert.js:27"}, "properties": {"repobilityId": "baecc7126ea42c19", "scanner": "scanner-primary", "fingerprint": "a1248fced6d8aa53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1ec122f2ab10941b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-render-adversarial.js:61"}, "properties": {"repobilityId": "d2319db083f14b34", "scanner": "scanner-primary", "fingerprint": "1ec122f2ab10941b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2d619e83a753f7e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/backfill-missing-scorers.js:24"}, "properties": {"repobilityId": "554b31291dd6a7dc", "scanner": "scanner-primary", "fingerprint": "b2d619e83a753f7e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5f8fb8fe7053e1fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-avatar-upload.js:25"}, "properties": {"repobilityId": "93809bdb74e58dc7", "scanner": "scanner-primary", "fingerprint": "5f8fb8fe7053e1fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f0edc1d7f38427a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/00-setup-local.js:36"}, "properties": {"repobilityId": "c8573e34e4b4bf8d", "scanner": "scanner-primary", "fingerprint": "4f0edc1d7f38427a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fcfc9776d26ce5ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-admin-search.js:15"}, "properties": {"repobilityId": "dce25892b293b8c3", "scanner": "scanner-primary", "fingerprint": "fcfc9776d26ce5ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5590170885c3b1ea", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-signup-flow.js:41"}, "properties": {"repobilityId": "a844700f7830d5c2", "scanner": "scanner-primary", "fingerprint": "5590170885c3b1ea", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-399f4d3fff8cd549", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/seed-my-account.js:46"}, "properties": {"repobilityId": "7410024ad27b37d5", "scanner": "scanner-primary", "fingerprint": "399f4d3fff8cd549", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eaba8fae82e784e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-odds.js:16"}, "properties": {"repobilityId": "50adee057420bcd2", "scanner": "scanner-primary", "fingerprint": "eaba8fae82e784e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-51962b653764ea71", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/prod-smoke.js:26"}, "properties": {"repobilityId": "f844e5ff3eee6e72", "scanner": "scanner-primary", "fingerprint": "51962b653764ea71", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8be19924b09501e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-integrity-snapshot.js:37"}, "properties": {"repobilityId": "26a76d36beb01254", "scanner": "scanner-primary", "fingerprint": "8be19924b09501e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b4bc7a4b6a7e2b63", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/03-palpitar.js:51"}, "properties": {"repobilityId": "76daa6172cfd194d", "scanner": "scanner-primary", "fingerprint": "b4bc7a4b6a7e2b63", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3274ace171bbce8d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-date-locks.js:35"}, "properties": {"repobilityId": "29d247b2e192912a", "scanner": "scanner-primary", "fingerprint": "3274ace171bbce8d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b610d7f3649c16fc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-storage-and-validation.js:19"}, "properties": {"repobilityId": "5b96782a3ad6e9ea", "scanner": "scanner-primary", "fingerprint": "b610d7f3649c16fc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5f1bbae03af7680", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-deadline-boundary.js:38"}, "properties": {"repobilityId": "eb8d6a111a340d97", "scanner": "scanner-primary", "fingerprint": "c5f1bbae03af7680", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-325c41dabbd578ec", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/test-rescore-on-edit.js:36"}, "properties": {"repobilityId": "73fee4ae2b621830", "scanner": "scanner-primary", "fingerprint": "325c41dabbd578ec", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b2e0cdee76e36447", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/e2e/lib/error-tracker.js:157"}, "properties": {"repobilityId": "30e8c21fcad34ac1", "scanner": "scanner-primary", "fingerprint": "b2e0cdee76e36447", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3dc707bd3fab1546", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/js/raiox.js:141"}, "properties": {"repobilityId": "416c960ff6539058", "scanner": "scanner-primary", "fingerprint": "3dc707bd3fab1546", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-4be86df7b34a84e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 supabase/functions/telegram-alert/index.ts:180"}, "properties": {"repobilityId": "d22dfa110a8cf8e7", "scanner": "scanner-primary", "fingerprint": "4be86df7b34a84e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f8fb4c6c0f4f13a6", "level": "error", "message": {"text": "Possible secret in _ui-capture.mjs"}, "properties": {"repobilityId": "f4eacc370f5a793c", "scanner": "scanner-primary", "fingerprint": "f8fb4c6c0f4f13a6", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "_ui-capture.mjs"}, "region": {"startLine": 8}}}]}, {"ruleId": "scanner-75576ae604cc7a02", "level": "error", "message": {"text": "Possible secret in scripts/dev/ui-mob-audit.mjs"}, "properties": {"repobilityId": "62bcb68f232d5f79", "scanner": "scanner-primary", "fingerprint": "75576ae604cc7a02", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/dev/ui-mob-audit.mjs"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-b49488c15719e74d", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-historico-scorer.js"}, "properties": {"repobilityId": "963b75b366917fb2", "scanner": "scanner-primary", "fingerprint": "b49488c15719e74d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-historico-scorer.js"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-f0ee7dd0236f8a41", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-rls-hostile.js"}, "properties": {"repobilityId": "9735ba66e2e22596", "scanner": "scanner-primary", "fingerprint": "f0ee7dd0236f8a41", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-rls-hostile.js"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-7332c898d3e27db9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-temporal-states.js:32"}, "properties": {"repobilityId": "928fbc8246208bff", "scanner": "scanner-primary", "fingerprint": "7332c898d3e27db9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-temporal-states.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-cb3d457e4ecc417c", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-rank-chart.js"}, "properties": {"repobilityId": "072a6547ca49fe5d", "scanner": "scanner-primary", "fingerprint": "cb3d457e4ecc417c", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-rank-chart.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-771073d565f3c60d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-rank-chart.js:31"}, "properties": {"repobilityId": "ab82448420d22c61", "scanner": "scanner-primary", "fingerprint": "771073d565f3c60d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-rank-chart.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-414c0965430fc648", "level": "error", "message": {"text": "Possible secret in scripts/e2e/seed-harness-state.js"}, "properties": {"repobilityId": "78978cece2b5ba18", "scanner": "scanner-primary", "fingerprint": "414c0965430fc648", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/seed-harness-state.js"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-120aba494a5e06af", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/seed-harness-state.js:17"}, "properties": {"repobilityId": "f9682e8296bc54a7", "scanner": "scanner-primary", "fingerprint": "120aba494a5e06af", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/seed-harness-state.js"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-630d8262cc1122a0", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-xss-hostile.js"}, "properties": {"repobilityId": "0a71f288a414e1db", "scanner": "scanner-primary", "fingerprint": "630d8262cc1122a0", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-xss-hostile.js"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-280474ec048574b7", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-load-concurrency.js"}, "properties": {"repobilityId": "c1934ea8d49e7951", "scanner": "scanner-primary", "fingerprint": "280474ec048574b7", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-load-concurrency.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-9161e3d1b72b6d8d", "level": "error", "message": {"text": "Possible secret in scripts/e2e/seed-scale.js"}, "properties": {"repobilityId": "e48ee10bb1c6fe9f", "scanner": "scanner-primary", "fingerprint": "9161e3d1b72b6d8d", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/seed-scale.js"}, "region": {"startLine": 54}}}]}, {"ruleId": "scanner-f6809fb0d54744e3", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-render-adversarial.js"}, "properties": {"repobilityId": "28a1864d85c42952", "scanner": "scanner-primary", "fingerprint": "f6809fb0d54744e3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-render-adversarial.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-7dc74e7ecaa5853e", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-avatar-upload.js"}, "properties": {"repobilityId": "04b33b35ed6d5f06", "scanner": "scanner-primary", "fingerprint": "7dc74e7ecaa5853e", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-avatar-upload.js"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-4ac41c7f8e0be5bb", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-signup-flow.js"}, "properties": {"repobilityId": "22aea523d58558fd", "scanner": "scanner-primary", "fingerprint": "4ac41c7f8e0be5bb", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-signup-flow.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-2b5df02525b9dbfe", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-integrity-snapshot.js:21"}, "properties": {"repobilityId": "666802c5b9baf47b", "scanner": "scanner-primary", "fingerprint": "2b5df02525b9dbfe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-integrity-snapshot.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-aa3d8848d3cd0b30", "level": "error", "message": {"text": "Possible secret in scripts/e2e/03-palpitar.js"}, "properties": {"repobilityId": "dc17671616d99fcd", "scanner": "scanner-primary", "fingerprint": "aa3d8848d3cd0b30", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/03-palpitar.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-bd80d4e6db06f289", "level": "error", "message": {"text": "Possible secret in scripts/e2e/test-date-locks.js"}, "properties": {"repobilityId": "8d6455a91bb1d757", "scanner": "scanner-primary", "fingerprint": "bd80d4e6db06f289", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-date-locks.js"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-266a5826e57dc79b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/e2e/test-rescore-on-edit.js:21"}, "properties": {"repobilityId": "6e892bd4eecaf2b8", "scanner": "scanner-primary", "fingerprint": "266a5826e57dc79b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/e2e/test-rescore-on-edit.js"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-c4b4c9660d787b40", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/util.js:754"}, "properties": {"repobilityId": "8e1f130e7453ef0d", "scanner": "scanner-primary", "fingerprint": "c4b4c9660d787b40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/util.js"}, "region": {"startLine": 754}}}]}, {"ruleId": "scanner-816d817e2216ec40", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/rank-chart.js:35"}, "properties": {"repobilityId": "9a92f85cfcbd9ad8", "scanner": "scanner-primary", "fingerprint": "816d817e2216ec40", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/rank-chart.js"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-cb4cfef18c91118c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/raiox.js:774"}, "properties": {"repobilityId": "eab98e364d6b6bce", "scanner": "scanner-primary", "fingerprint": "cb4cfef18c91118c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/raiox.js"}, "region": {"startLine": 774}}}]}, {"ruleId": "scanner-89c878cc867fdf84", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/journey-chart.js:115"}, "properties": {"repobilityId": "a9e7ff2dcbf09571", "scanner": "scanner-primary", "fingerprint": "89c878cc867fdf84", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/journey-chart.js"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-f64641ad12c6c7c2", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/sidebar.js:74"}, "properties": {"repobilityId": "955720e5579c59c1", "scanner": "scanner-primary", "fingerprint": "f64641ad12c6c7c2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/sidebar.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-1db2a253304e31d5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/tooltip.js:33"}, "properties": {"repobilityId": "506e57cff8379743", "scanner": "scanner-primary", "fingerprint": "1db2a253304e31d5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/tooltip.js"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-364a7be6bcacd7ba", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/regras.js:82"}, "properties": {"repobilityId": "d0b3e3697c5a61fc", "scanner": "scanner-primary", "fingerprint": "364a7be6bcacd7ba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/regras.js"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-32211b9e63262bfe", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/ranking.js:42"}, "properties": {"repobilityId": "7138ffee4d6ecf4f", "scanner": "scanner-primary", "fingerprint": "32211b9e63262bfe", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/ranking.js"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-87a6bcd59aa1d9e4", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-grupos.js:89"}, "properties": {"repobilityId": "a5deb5ad54b29532", "scanner": "scanner-primary", "fingerprint": "87a6bcd59aa1d9e4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/palpites-grupos.js"}, "region": {"startLine": 89}}}]}, {"ruleId": "scanner-19e9f50d5917f880", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/campeao-artilheiro.js:52"}, "properties": {"repobilityId": "0cb0368b41748682", "scanner": "scanner-primary", "fingerprint": "19e9f50d5917f880", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/campeao-artilheiro.js"}, "region": {"startLine": 52}}}]}, {"ruleId": "scanner-8b7cbd5cf39dd6ff", "level": "warning", "message": {"text": "Insecure pattern 'direct_outerhtml_assignment' in src/js/pages/campeao-artilheiro.js:679"}, "properties": {"repobilityId": "7aeae3bbef51c778", "scanner": "scanner-primary", "fingerprint": "8b7cbd5cf39dd6ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_outerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/campeao-artilheiro.js"}, "region": {"startLine": 679}}}]}, {"ruleId": "scanner-aef932b895b2383a", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/historico.js:47"}, "properties": {"repobilityId": "a52a53d28344429f", "scanner": "scanner-primary", "fingerprint": "aef932b895b2383a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/historico.js"}, "region": {"startLine": 47}}}]}, {"ruleId": "scanner-fa94deb97d05f873", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/inicio.js:425"}, "properties": {"repobilityId": "d10cf2fa5764130d", "scanner": "scanner-primary", "fingerprint": "fa94deb97d05f873", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/inicio.js"}, "region": {"startLine": 425}}}]}, {"ruleId": "scanner-aec0cfa0db1f707d", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/palpites-mata.js:98"}, "properties": {"repobilityId": "d45abcc292a2f24b", "scanner": "scanner-primary", "fingerprint": "aec0cfa0db1f707d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/palpites-mata.js"}, "region": {"startLine": 98}}}]}, {"ruleId": "scanner-3ca508a13b207f6c", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/js/pages/admin.js:41"}, "properties": {"repobilityId": "5fcd8d76bebdfdfa", "scanner": "scanner-primary", "fingerprint": "3ca508a13b207f6c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/js/pages/admin.js"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-acf750101ca563f7", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logo-final.html:133"}, "properties": {"repobilityId": "15de3f6cb9e27532", "scanner": "scanner-primary", "fingerprint": "acf750101ca563f7", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/sbc-logo-final.html"}, "region": {"startLine": 133}}}]}, {"ruleId": "scanner-23da221adbcb5cb1", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/sbc-logos-fire.html:184"}, "properties": {"repobilityId": "d525ce11d3237412", "scanner": "scanner-primary", "fingerprint": "23da221adbcb5cb1", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/sbc-logos-fire.html"}, "region": {"startLine": 184}}}]}, {"ruleId": "scanner-e229c13e9e393deb", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/design/rank-chart-prototypes.html:519"}, "properties": {"repobilityId": "297489dd0ccb2879", "scanner": "scanner-primary", "fingerprint": "e229c13e9e393deb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/design/rank-chart-prototypes.html"}, "region": {"startLine": 519}}}]}, {"ruleId": "scanner-14e8c41cbfbba411", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3118748a9b2e7f34", "scanner": "scanner-primary", "fingerprint": "14e8c41cbfbba411", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-predictions.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-14e8c41cbfbba411", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fc3a455528475118", "scanner": "scanner-primary", "fingerprint": "14e8c41cbfbba411", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-predictions.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-dd94f301f1d3b5cb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5fb9b396ad7f2d85", "scanner": "scanner-primary", "fingerprint": "dd94f301f1d3b5cb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-fixtures.yml"}, "region": {"startLine": 37}}}]}, {"ruleId": "scanner-dd94f301f1d3b5cb", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "23effedb7963bef3", "scanner": "scanner-primary", "fingerprint": "dd94f301f1d3b5cb", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/verify-fixtures.yml"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-5e37ed34d787f4a0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "72dafbb221587ba3", "scanner": "scanner-primary", "fingerprint": "5e37ed34d787f4a0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-odds.yml"}, "region": {"startLine": 33}}}]}, {"ruleId": "scanner-5e37ed34d787f4a0", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7cf3bb9a442b357b", "scanner": "scanner-primary", "fingerprint": "5e37ed34d787f4a0", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-odds.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-cfe00eefaac57221", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fba73c77f5c55094", "scanner": "scanner-primary", "fingerprint": "cfe00eefaac57221", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integrity-snapshot.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-cfe00eefaac57221", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f064d6c7aaedb1c8", "scanner": "scanner-primary", "fingerprint": "cfe00eefaac57221", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integrity-snapshot.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-56fc2d1abe43c93e", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "4532b7707e1ada1b", "scanner": "scanner-primary", "fingerprint": "56fc2d1abe43c93e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/integrity-snapshot.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-22d40f34fdde8f7b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3dc37bd28fb469b3", "scanner": "scanner-primary", "fingerprint": "22d40f34fdde8f7b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-recent-matches.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-22d40f34fdde8f7b", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d46584c74fb97557", "scanner": "scanner-primary", "fingerprint": "22d40f34fdde8f7b", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-recent-matches.yml"}, "region": {"startLine": 44}}}]}, {"ruleId": "scanner-e0c48649c0857a97", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "276de681e3d64735", "scanner": "scanner-primary", "fingerprint": "e0c48649c0857a97", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/refresh-recent-matches.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": 16}}}]}, {"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": 19}}}]}, {"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": 34}}}]}, {"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": 48}}}]}, {"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": 51}}}]}, {"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": 75}}}]}, {"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": 88}}}]}, {"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": 91}}}]}, {"ruleId": "scanner-8c04c52d2ce0a268", "level": "note", "message": {"text": "47 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "8c04c52d2ce0a268", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "fcfa2ab805e1e4ab", "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": "e5adcff3f0cf7f53", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "d6b7853c1480d92d", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a2eb7d20b4c9b10d", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-6862fbb36a6981d7", "level": "none", "message": {"text": "Commented-code block (6 lines) in vitest.config.js:12"}, "properties": {"repobilityId": "f7798e4743b7c585", "scanner": "scanner-primary", "fingerprint": "6862fbb36a6981d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-843abb05442355ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/leaderboard-parity.test.js:1"}, "properties": {"repobilityId": "14e2d044d3ef9500", "scanner": "scanner-primary", "fingerprint": "843abb05442355ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd330f9ca40c5c5f", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/integrity-guards.test.js:4"}, "properties": {"repobilityId": "236e2e701dbae08b", "scanner": "scanner-primary", "fingerprint": "cd330f9ca40c5c5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-778891ef6a564ebf", "level": "none", "message": {"text": "Commented-code block (9 lines) in tests/unit/integrity-report.test.js:4"}, "properties": {"repobilityId": "1549bb4038f30872", "scanner": "scanner-primary", "fingerprint": "778891ef6a564ebf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-481d1d374b0b4367", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/bracket.test.js:165"}, "properties": {"repobilityId": "597806a8d6194278", "scanner": "scanner-primary", "fingerprint": "481d1d374b0b4367", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb4f98dc2d616745", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/qualifier.test.js:4"}, "properties": {"repobilityId": "031fb90fcb72c72e", "scanner": "scanner-primary", "fingerprint": "cb4f98dc2d616745", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b5f06e6db423bdfe", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/card-results.test.js:1"}, "properties": {"repobilityId": "8c54d055bcb4b451", "scanner": "scanner-primary", "fingerprint": "b5f06e6db423bdfe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4169ec7544760a28", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/integrity-telegram-picks.test.js:5"}, "properties": {"repobilityId": "1586563d5a788ec1", "scanner": "scanner-primary", "fingerprint": "4169ec7544760a28", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-923c541575a3b8aa", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/progression.test.js:1"}, "properties": {"repobilityId": "0df098480284f0fb", "scanner": "scanner-primary", "fingerprint": "923c541575a3b8aa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-498fb60261afece8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/chart-utils.test.js:1"}, "properties": {"repobilityId": "ef2c48cc2caa9a09", "scanner": "scanner-primary", "fingerprint": "498fb60261afece8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38fcfaad559e0597", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/standings-tiebreak.test.js:1"}, "properties": {"repobilityId": "b31342a147aea9bf", "scanner": "scanner-primary", "fingerprint": "38fcfaad559e0597", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d05d7f0b0775481", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/fixtures/tz-probe.mjs:1"}, "properties": {"repobilityId": "144156ba8d71754f", "scanner": "scanner-primary", "fingerprint": "3d05d7f0b0775481", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b98944cb4ee22251", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/integrity/snapshot.js:179"}, "properties": {"repobilityId": "4d00476a7423e305", "scanner": "scanner-primary", "fingerprint": "b98944cb4ee22251", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-150bf25a57945f2c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/dev/prod-parity-audit.mjs:52"}, "properties": {"repobilityId": "29c29022302b4e96", "scanner": "scanner-primary", "fingerprint": "150bf25a57945f2c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9f6bc3153f33dc4a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/dev/probe-prod-grants.mjs:91"}, "properties": {"repobilityId": "757c88a10dc78abd", "scanner": "scanner-primary", "fingerprint": "9f6bc3153f33dc4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c87e13cfd45ddc9d", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/dev/ui-mob-audit.mjs:1"}, "properties": {"repobilityId": "f1ef4b0e3aefe024", "scanner": "scanner-primary", "fingerprint": "c87e13cfd45ddc9d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17ac54cf48f4b621", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/dev/advance-to-r32.mjs:10"}, "properties": {"repobilityId": "714510f41091c83c", "scanner": "scanner-primary", "fingerprint": "17ac54cf48f4b621", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0f5ecc82bcf502e1", "level": "note", "message": {"text": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-info.js:84"}, "properties": {"repobilityId": "59642f642be8a509", "scanner": "scanner-primary", "fingerprint": "0f5ecc82bcf502e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9409c56104c6964b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/alerts/preview-alerts-telegram.js:8"}, "properties": {"repobilityId": "ec87d24212bc7b6b", "scanner": "scanner-primary", "fingerprint": "9409c56104c6964b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-437785a441306d4c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/preview-alerts-telegram.js:78"}, "properties": {"repobilityId": "17fe7c4a4cce870e", "scanner": "scanner-primary", "fingerprint": "437785a441306d4c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f0e8e40567d902f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/alerts/test-telegram-format.js:54"}, "properties": {"repobilityId": "c7f307c74254bc59", "scanner": "scanner-primary", "fingerprint": "6f0e8e40567d902f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4228c3a2d7836616", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/alerts/test-alerts.js:94"}, "properties": {"repobilityId": "f0795861888c5d2b", "scanner": "scanner-primary", "fingerprint": "4228c3a2d7836616", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ca2422dc87a8daa0", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/alerts/preview-via-edge.js:11"}, "properties": {"repobilityId": "9d5d43e25f0bddb8", "scanner": "scanner-primary", "fingerprint": "ca2422dc87a8daa0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-67f907aea2c68072", "level": "note", "message": {"text": "Legacy-named symbol `team_old` in scripts/alerts/test-alerts-integration.js:217"}, "properties": {"repobilityId": "79f7ace0131c70ef", "scanner": "scanner-primary", "fingerprint": "67f907aea2c68072", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-91bbee5e605ce0b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/alerts/test-alerts-integration.js:4"}, "properties": {"repobilityId": "0188ea637b3558f4", "scanner": "scanner-primary", "fingerprint": "91bbee5e605ce0b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d166c34a71f66855", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e/test-historico-scorer.js:203"}, "properties": {"repobilityId": "f31c744d39c26ed3", "scanner": "scanner-primary", "fingerprint": "d166c34a71f66855", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c51b420046ae500f", "level": "note", "message": {"text": "Legacy-named symbol `_matches_backup` in scripts/e2e/test-temporal-states.js:23"}, "properties": {"repobilityId": "170c3697c1080b33", "scanner": "scanner-primary", "fingerprint": "c51b420046ae500f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d71fc564f16d490f", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e/test-ui-pages.js:72"}, "properties": {"repobilityId": "ebf8aa0610658133", "scanner": "scanner-primary", "fingerprint": "d71fc564f16d490f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b398bb7302ef73f6", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e/seed-harness-state.js:86"}, "properties": {"repobilityId": "9bd79c8a2b2be312", "scanner": "scanner-primary", "fingerprint": "b398bb7302ef73f6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83dbd40d8f122f55", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e/seed-scale.js:301"}, "properties": {"repobilityId": "43b80ef6cbd4017b", "scanner": "scanner-primary", "fingerprint": "83dbd40d8f122f55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d487535d747caac7", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/e2e/06-ui-assert.js:176"}, "properties": {"repobilityId": "8057df0b4e42c1cc", "scanner": "scanner-primary", "fingerprint": "d487535d747caac7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb8d6713e81194af", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/e2e/prod-smoke.js:67"}, "properties": {"repobilityId": "7d445e1bee873179", "scanner": "scanner-primary", "fingerprint": "cb8d6713e81194af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-958c146ceed3fc3a", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/e2e/lib/recompute.js:1"}, "properties": {"repobilityId": "eee1f9541a72eee3", "scanner": "scanner-primary", "fingerprint": "958c146ceed3fc3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e455d440fd58e60", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/js/supabase.js:23"}, "properties": {"repobilityId": "7967462fbe4ce525", "scanner": "scanner-primary", "fingerprint": "5e455d440fd58e60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51b1f589788e1515", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/js/util.js:291"}, "properties": {"repobilityId": "ebd29a450d9a2ea8", "scanner": "scanner-primary", "fingerprint": "51b1f589788e1515", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4add340e87de26bc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/js/util.js:654"}, "properties": {"repobilityId": "13d33dbad87de1e4", "scanner": "scanner-primary", "fingerprint": "4add340e87de26bc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a394a3f825a047f3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/js/rank-chart.js:1"}, "properties": {"repobilityId": "9d1a8a06f14af26f", "scanner": "scanner-primary", "fingerprint": "a394a3f825a047f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb4ba1d689713685", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/js/raiox.js:1"}, "properties": {"repobilityId": "a76668e4acb4cf61", "scanner": "scanner-primary", "fingerprint": "fb4ba1d689713685", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78a4e57523427afe", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/thirds-assign.js:1"}, "properties": {"repobilityId": "64ee5435a3897cf2", "scanner": "scanner-primary", "fingerprint": "78a4e57523427afe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e2d5b75d10c4efb", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/error-reporter.js:1"}, "properties": {"repobilityId": "31a7769875867fc2", "scanner": "scanner-primary", "fingerprint": "2e2d5b75d10c4efb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f15b2cd67d2f3cfb", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/journey-chart.js:1"}, "properties": {"repobilityId": "fb27c36bd04066b1", "scanner": "scanner-primary", "fingerprint": "f15b2cd67d2f3cfb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-051a185282febb16", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/js/progression.js:1"}, "properties": {"repobilityId": "34f724acbb6a7a62", "scanner": "scanner-primary", "fingerprint": "051a185282febb16", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd6198ea12171039", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/progression-core.js:5"}, "properties": {"repobilityId": "200d9e955edd4e7c", "scanner": "scanner-primary", "fingerprint": "fd6198ea12171039", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01a066178b8f2130", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/js/tooltip.js:1"}, "properties": {"repobilityId": "7b58212ddc2bc831", "scanner": "scanner-primary", "fingerprint": "01a066178b8f2130", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ceb69923c28e00f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/bracket.js:1"}, "properties": {"repobilityId": "7ff739e8e7ff1859", "scanner": "scanner-primary", "fingerprint": "9ceb69923c28e00f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-086fcfc41ec39f80", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/js/prize.js:1"}, "properties": {"repobilityId": "0f019b3d4f8adf07", "scanner": "scanner-primary", "fingerprint": "086fcfc41ec39f80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8eaefef663b78c3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/js/auto-refresh.js:1"}, "properties": {"repobilityId": "cd7e29f6b287b7b5", "scanner": "scanner-primary", "fingerprint": "c8eaefef663b78c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb008d22d96dff2d", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/standings-view.js:57"}, "properties": {"repobilityId": "c14a9731d8a56ab5", "scanner": "scanner-primary", "fingerprint": "fb008d22d96dff2d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21ee2188e9a296fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/card-results.js:1"}, "properties": {"repobilityId": "3348dd04cfc990cb", "scanner": "scanner-primary", "fingerprint": "21ee2188e9a296fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad2826debd248634", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/auth.js:75"}, "properties": {"repobilityId": "dcc6e543a3c90b64", "scanner": "scanner-primary", "fingerprint": "ad2826debd248634", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fb394b2dac7cfe5b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/pages/regras.js:8"}, "properties": {"repobilityId": "495ecdbe358b1282", "scanner": "scanner-primary", "fingerprint": "fb394b2dac7cfe5b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d29ff7ad97ca801d", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/pages/ranking.js:641"}, "properties": {"repobilityId": "6c6a740fb47f595f", "scanner": "scanner-primary", "fingerprint": "d29ff7ad97ca801d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a11791661b9efe46", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/pages/palpites-grupos.js:54"}, "properties": {"repobilityId": "83df832f853081d9", "scanner": "scanner-primary", "fingerprint": "a11791661b9efe46", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9ed774a480a1654", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/pages/reset-password.js:31"}, "properties": {"repobilityId": "1c474864876abb8d", "scanner": "scanner-primary", "fingerprint": "b9ed774a480a1654", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5787a4b393a1643e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/js/pages/inicio.js:302"}, "properties": {"repobilityId": "6f08d768030c1465", "scanner": "scanner-primary", "fingerprint": "5787a4b393a1643e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc14899c2cfcdc0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/js/pages/palpites-mata.js:173"}, "properties": {"repobilityId": "3484731fa4a3d261", "scanner": "scanner-primary", "fingerprint": "bc14899c2cfcdc0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f669c2d381b385b3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/js/pages/admin.js:232"}, "properties": {"repobilityId": "a98515c40be239f1", "scanner": "scanner-primary", "fingerprint": "f669c2d381b385b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1858c04a8f6f04a8", "level": "none", "message": {"text": "Commented-code block (6 lines) in supabase/functions/telegram-alert/index.ts:54"}, "properties": {"repobilityId": "5d8c395d899bc749", "scanner": "scanner-primary", "fingerprint": "1858c04a8f6f04a8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa05ba08852a0660", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 supabase/functions/telegram-alert/index.ts:113"}, "properties": {"repobilityId": "243e7dfb0c6dfcdb", "scanner": "scanner-primary", "fingerprint": "fa05ba08852a0660", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f808a4ef3e1071fb", "level": "note", "message": {"text": "14 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "ce6b2ec4be4ec75a", "scanner": "scanner-primary", "fingerprint": "f808a4ef3e1071fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}