{"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-e496438151f62a86", "name": "Stray `console.log` in TS/JS \u2014 tests/helpers/screenshot-compare.ts:223", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/helpers/screenshot-compare.ts:223"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4344f11829ead31c", "name": "Stray `console.log` in TS/JS \u2014 tests/helpers/docker.ts:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tests/helpers/docker.ts:225"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-db91c8296e80b998", "name": "TODO/FIXME marker in shipping code \u2014 tests/integration/stripe/webhook-handler.test.ts:381", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 tests/integration/stripe/webhook-handler.test.ts:381"}, "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-de6dc58ac84c9272", "name": "Stray `console.log` in TS/JS \u2014 scripts/register-resesh-commands.ts:91", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/register-resesh-commands.ts:91"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8153613182a99c33", "name": "TODO/FIXME marker in shipping code \u2014 src/controllers/campaign-controller.ts:92", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/controllers/campaign-controller.ts:92"}, "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-76f6e0436c021ed3", "name": "Stray `console.log` in TS/JS \u2014 src/cli/foundry-init.ts:39", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/cli/foundry-init.ts:39"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66e2210a988a2404", "name": "TODO/FIXME marker in shipping code \u2014 src/services/auth-sign-in.ts:188", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/auth-sign-in.ts:188"}, "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-1b6ff8f8e1443514", "name": "TODO/FIXME marker in shipping code \u2014 src/services/user-storage.ts:235", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/user-storage.ts:235"}, "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-40a469dd539486bf", "name": "TODO/FIXME marker in shipping code \u2014 src/services/bot/bot-execution-service.ts:86", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/bot-execution-service.ts:86"}, "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-0a27442817ad4c94", "name": "TODO/FIXME marker in shipping code \u2014 src/services/bot/tools/tool-registry.ts:91", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/tools/tool-registry.ts:91"}, "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-aeaaec6729a6c60b", "name": "TODO/FIXME marker in shipping code \u2014 src/services/bot/roles/index.ts:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/roles/index.ts:14"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-727ecdf933f7f693", "name": "TODO/FIXME marker in shipping code \u2014 src/services/foundry/foundry-world-loader.ts:145", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/foundry/foundry-world-loader.ts:145"}, "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-1f33da37e7f6ab9b", "name": "TODO/FIXME marker in shipping code \u2014 src/services/auth/auth-providers.ts:64", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/auth/auth-providers.ts:64"}, "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-c316ae5cc2359f52", "name": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-sync-queue.ts:194", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-sync-queue.ts:194"}, "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-ed841a1ee54f8d9d", "name": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-poller.ts:175", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-poller.ts:175"}, "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-a588f8a27416323b", "name": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/campaigns.ts:62", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/campaigns.ts:62"}, "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-93e781b9531acc8a", "name": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/resesh/channel-settings.ts:61", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/resesh/channel-settings.ts:61"}, "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-854e7371aad5fc32", "name": "Stray `console.log` in TS/JS \u2014 prisma/bootstrap.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/bootstrap.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c44bb183d771dc8", "name": "Stray `console.log` in TS/JS \u2014 prisma/backfill-world-access-grants.ts:286", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/backfill-world-access-grants.ts:286"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a92e686aa1c17ae4", "name": "Stray `console.log` in TS/JS \u2014 prisma/migrate-to-canonical-entities.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 prisma/migrate-to-canonical-entities.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25de52372c63f233", "name": "Docker base image is tag-pinned but not digest-pinned: node:24-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a135a663d7adc92c", "name": "Insecure pattern 'node_child_process' in scripts/check-route-collisions.mjs:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-route-collisions.mjs:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7cbfc8f80f05864a", "name": "Insecure pattern 'node_child_process' in src/services/user-volume-storage.ts:31", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/services/user-volume-storage.ts:31"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-31314a75d305047b", "name": "Insecure pattern 'node_child_process' in src/services/user-volume-storage/host-group.ts:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/services/user-volume-storage/host-group.ts:28"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a7020f25ef20dc2", "name": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-backups.ts:14", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-backups.ts:14"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-889f386db96e99c9", "name": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-worlds.ts:18", "shortDescription": {"text": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-worlds.ts:18"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa2a87f3b17a5837", "name": "Insecure pattern 'node_child_process' in prisma/migrate.mjs:40", "shortDescription": {"text": "Insecure pattern 'node_child_process' in prisma/migrate.mjs:40"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-46c644c6227e4d4a", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1838a141491ce38c", "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-dbdc44a647622a35", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 58 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 30 placeholder/mock markers across 23 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-006e9371469bc2fa", "name": "Commented-code block (7 lines) in eslint.config.js:81", "shortDescription": {"text": "Commented-code block (7 lines) in eslint.config.js:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc8348e955a78c76", "name": "Commented-code block (5 lines) in prisma.config.mjs:29", "shortDescription": {"text": "Commented-code block (5 lines) in prisma.config.mjs:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d4614c23295bb7d", "name": "Commented-code block (6 lines) in tests/unit/proxy/core-secret-auth.test.ts:87", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/proxy/core-secret-auth.test.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-913ca86b1d9e7094", "name": "Commented-code block (5 lines) in tests/unit/utils/dice-roller.test.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/utils/dice-roller.test.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f20b28458a14061", "name": "Commented-code block (5 lines) in tests/unit/controllers/campaign-controller.test.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/controllers/campaign-controller.test.ts: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-0dd2619b6a11c6a5", "name": "Commented-code block (7 lines) in tests/unit/services/consent-collector-persistent.test.ts:56", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/services/consent-collector-persistent.test.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-788775ec7607d651", "name": "Commented-code block (5 lines) in tests/unit/services/split-tip.test.ts:66", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/split-tip.test.ts:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-71900d2826045ec6", "name": "Commented-code block (7 lines) in tests/unit/services/foundry-launcher.test.ts:103", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/services/foundry-launcher.test.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bedda2175cf2b604", "name": "Commented-code block (5 lines) in tests/unit/services/billing/container-sizing.test.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/billing/container-sizing.test.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-677c148592b02d11", "name": "Commented-code block (6 lines) in tests/unit/services/user-volume-storage/gid-allocator.test.ts:182", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/services/user-volume-storage/gid-allocator.test.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-708ff270f085eadf", "name": "Commented-code block (7 lines) in tests/unit/services/foundry/package-ingest.test.ts:82", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/services/foundry/package-ingest.test.ts:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3bb990fbabc9f757", "name": "Commented-code block (5 lines) in tests/unit/services/foundry/foundry-admin-session.test.ts:250", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/foundry/foundry-admin-session.test.ts:250"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c673957172ef0c5a", "name": "Commented-code block (6 lines) in tests/unit/services/session-events/resesh-auto-start.test.ts:153", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/services/session-events/resesh-auto-start.test.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aaf17cbfc84038b0", "name": "Commented-code block (5 lines) in tests/unit/services/discord/interactions.test.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/discord/interactions.test.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80712f92d6eaf6ea", "name": "Commented-code block (5 lines) in tests/unit/services/discord/voice/recording-indicators.test.ts:295", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/discord/voice/recording-indicators.test.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8491628974cc9808", "name": "Commented-code block (5 lines) in tests/unit/services/server-manager/access-cascade.test.ts:372", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/services/server-manager/access-cascade.test.ts:372"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea58701a9b1e2e92", "name": "Commented-code block (5 lines) in tests/unit/config/server-config.test.ts:124", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/config/server-config.test.ts:124"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-26d5f5f9fcb69765", "name": "Commented-code block (8 lines) in tests/unit/routes/player-campaigns.test.ts:467", "shortDescription": {"text": "Commented-code block (8 lines) in tests/unit/routes/player-campaigns.test.ts:467"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce7c7e75a447679b", "name": "Commented-code block (5 lines) in tests/unit/routes/spacebar-proxy.test.ts:54", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/routes/spacebar-proxy.test.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-99a697cdee1c8781", "name": "Commented-code block (7 lines) in tests/unit/routes/voice-state-stream.test.ts:22", "shortDescription": {"text": "Commented-code block (7 lines) in tests/unit/routes/voice-state-stream.test.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-38e5eb584e27bf5f", "name": "Commented-code block (5 lines) in tests/unit/routes/disrecord-routes.test.ts:158", "shortDescription": {"text": "Commented-code block (5 lines) in tests/unit/routes/disrecord-routes.test.ts:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9e5a196c67dd8d1f", "name": "Commented-code block (6 lines) in tests/unit/routes/vtt-proxy-content-type-parsers.test.ts:56", "shortDescription": {"text": "Commented-code block (6 lines) in tests/unit/routes/vtt-proxy-content-type-parsers.test.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24d6a8838f2e8b2e", "name": "Commented-code block (7 lines) in tests/integration/cfg-plugin-auto-inject.test.ts:28", "shortDescription": {"text": "Commented-code block (7 lines) in tests/integration/cfg-plugin-auto-inject.test.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85add11461d87db2", "name": "Commented-code block (5 lines) in tests/integration/asset-revshare-flow.test.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/asset-revshare-flow.test.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a5fb56c640cb016", "name": "Commented-code block (5 lines) in tests/integration/access-cascade-chain.test.ts:248", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/access-cascade-chain.test.ts:248"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87bd920bb59ac156", "name": "Commented-code block (5 lines) in tests/integration/tip-flow-edge-cases.test.ts:307", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/tip-flow-edge-cases.test.ts:307"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1738c867f6ef84d8", "name": "Commented-code block (5 lines) in tests/integration/foundry-gid-provisioning.test.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/foundry-gid-provisioning.test.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d7f914651e438fb", "name": "Commented-code block (6 lines) in tests/integration/foundry-vtt.test.ts:411", "shortDescription": {"text": "Commented-code block (6 lines) in tests/integration/foundry-vtt.test.ts:411"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f85831fe650c6560", "name": "Commented-code block (5 lines) in tests/integration/persistent-consent-flow.test.ts:292", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/persistent-consent-flow.test.ts:292"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-620adfee1d047c23", "name": "Commented-code block (7 lines) in tests/integration/stripe/webhook-handler.test.ts:901", "shortDescription": {"text": "Commented-code block (7 lines) in tests/integration/stripe/webhook-handler.test.ts:901"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1beba0fab7600e10", "name": "Commented-code block (5 lines) in tests/integration/webhooks/discord-webhook.test.ts:27", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/webhooks/discord-webhook.test.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5be7d7451a57f75", "name": "Commented-code block (5 lines) in tests/integration/discord/discord-event-sync.test.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in tests/integration/discord/discord-event-sync.test.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-371301ce62c740bc", "name": "Commented-code block (6 lines) in tests/config/jest.integration.setup.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in tests/config/jest.integration.setup.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9bb8817d339433a3", "name": "Commented-code block (5 lines) in scripts/register-resesh-commands.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/register-resesh-commands.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b819d648fc5edc5e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/register-resesh-commands.ts:95", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/register-resesh-commands.ts:95"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aaa476f282dea7d6", "name": "Commented-code block (6 lines) in src/index.ts:46", "shortDescription": {"text": "Commented-code block (6 lines) in src/index.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-04c7e667510a0ad2", "name": "Commented-code block (6 lines) in src/app.ts:55", "shortDescription": {"text": "Commented-code block (6 lines) in src/app.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3eb023a207f989c9", "name": "Commented-code block (6 lines) in src/clients/discord/client.ts:29", "shortDescription": {"text": "Commented-code block (6 lines) in src/clients/discord/client.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f330fb766aeff528", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/client.ts:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/client.ts:59"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-705fa363b965b689", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/guild-api.ts:467", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/guild-api.ts:467"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-eec145cb3e0242da", "name": "Commented-code block (9 lines) in src/clients/container/client.ts:245", "shortDescription": {"text": "Commented-code block (9 lines) in src/clients/container/client.ts:245"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b2ed39606d08ac", "name": "Commented-code block (8 lines) in src/plugins/auth.ts:183", "shortDescription": {"text": "Commented-code block (8 lines) in src/plugins/auth.ts:183"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4059200327da1748", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/plugins/auth.ts:13", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/plugins/auth.ts:13"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cfba7ae95603b742", "name": "Commented-code block (5 lines) in src/controllers/campaign-controller.ts:155", "shortDescription": {"text": "Commented-code block (5 lines) in src/controllers/campaign-controller.ts:155"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0861133205c207c6", "name": "Commented-code block (7 lines) in src/services/split-tip.ts:244", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/split-tip.ts:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8531fc6f82209ee1", "name": "Commented-code block (8 lines) in src/services/user-volume-storage.ts:150", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/user-volume-storage.ts:150"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da2bc56131cf7785", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/admin-alert.ts:46", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/admin-alert.ts:46"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-283fbab5fa110bfc", "name": "Commented-code block (12 lines) in src/services/session-events.ts:53", "shortDescription": {"text": "Commented-code block (12 lines) in src/services/session-events.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab69b1c09475f965", "name": "Commented-code block (8 lines) in src/services/session-log-thread.ts:147", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/session-log-thread.ts:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a3c1c1832e2d8f9", "name": "Commented-code block (7 lines) in src/services/compute-billing.ts:61", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/compute-billing.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97c365c106baee3c", "name": "Commented-code block (6 lines) in src/services/resesh/channel-events-service.ts:128", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/resesh/channel-events-service.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7382215b004ba765", "name": "Commented-code block (6 lines) in src/services/disrecord/index.ts:132", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/disrecord/index.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6e40be886f96e881", "name": "Commented-code block (5 lines) in src/services/disrecord/container-spawn.ts:149", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/disrecord/container-spawn.ts:149"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4c038bc3db35fb7d", "name": "Commented-code block (9 lines) in src/services/recording/consent-collector.ts:142", "shortDescription": {"text": "Commented-code block (9 lines) in src/services/recording/consent-collector.ts:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24fd7cacff5122a7", "name": "Commented-code block (7 lines) in src/services/recording/transcript-thread-poster.ts:314", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/recording/transcript-thread-poster.ts:314"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-956eb8d75c91d89f", "name": "Commented-code block (9 lines) in src/services/characters/character-sheet-fields.ts:96", "shortDescription": {"text": "Commented-code block (9 lines) in src/services/characters/character-sheet-fields.ts:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8608b86db3885f3b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/user-volume-storage/gid-allocator.ts:166", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/user-volume-storage/gid-allocator.ts:166"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa8bc9296e9f686f", "name": "Commented-code block (7 lines) in src/services/foundry/foundry-user-provisioner.ts:146", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/foundry/foundry-user-provisioner.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ffcec506d997f9d7", "name": "Commented-code block (5 lines) in src/services/foundry/foundry-launcher.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-launcher.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d54658bceb5672a", "name": "Commented-code block (6 lines) in src/services/foundry/foundry-management.ts:46", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/foundry/foundry-management.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-827e799217bd44fa", "name": "Commented-code block (5 lines) in src/services/foundry/foundry-admin-session.ts:214", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-admin-session.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aebe1b45db29a936", "name": "Commented-code block (18 lines) in src/services/foundry/foundry-s3-env.ts:93", "shortDescription": {"text": "Commented-code block (18 lines) in src/services/foundry/foundry-s3-env.ts:93"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6148ccdcb00f517d", "name": "Commented-code block (8 lines) in src/services/foundry/foundry-world-loader.ts:128", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/foundry/foundry-world-loader.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d6bd80d58e57eb80", "name": "Commented-code block (5 lines) in src/services/foundry/foundry-users-store.ts:212", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-users-store.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3dd9bbcf9fd4500", "name": "Commented-code block (5 lines) in src/services/foundry/package-ingest.ts:362", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/foundry/package-ingest.ts:362"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-694116a877bf341e", "name": "Commented-code block (6 lines) in src/services/foundry/foundry-resource-syncer.ts:212", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/foundry/foundry-resource-syncer.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6a5cefab0790f6ef", "name": "Commented-code block (5 lines) in src/services/foundry/foundry-worlds.ts:507", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-worlds.ts:507"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f0e5282914f03dd", "name": "Commented-code block (9 lines) in src/services/auth/auth-config.ts:55", "shortDescription": {"text": "Commented-code block (9 lines) in src/services/auth/auth-config.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c52e78e2bbd0fae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/auth/steam-provider.ts:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/auth/steam-provider.ts:132"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-923b087372bf0c20", "name": "Commented-code block (6 lines) in src/services/auth/discord-auth-sync.ts:136", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/auth/discord-auth-sync.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b214dc2a7f3069a", "name": "Commented-code block (6 lines) in src/services/auth/provision-user.ts:172", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/auth/provision-user.ts:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-424db235f225369f", "name": "Commented-code block (6 lines) in src/services/session-events/resesh-auto-start.ts:81", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/session-events/resesh-auto-start.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b626f0789911c9cf", "name": "Commented-code block (7 lines) in src/services/session-events/session-end-from-discord.ts:228", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/session-events/session-end-from-discord.ts:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-da2161d4dd9b9226", "name": "Commented-code block (5 lines) in src/services/session-events/safety-net-auto-record.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/session-events/safety-net-auto-record.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d94d758027cff42e", "name": "Commented-code block (6 lines) in src/services/factorio/launch.ts:216", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/factorio/launch.ts:216"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5dbd02df1d9aa94d", "name": "Commented-code block (6 lines) in src/services/discord/discord-token.ts:17", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/discord/discord-token.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97d2ab05f91ff09f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/discord-service.ts:96", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/discord-service.ts:96"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2cee805d7c87bcba", "name": "Commented-code block (6 lines) in src/services/discord/aggregated-scheduled-events.ts:371", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/discord/aggregated-scheduled-events.ts:371"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-297f1620ef76e746", "name": "Commented-code block (5 lines) in src/services/discord/party-role-writer.ts:61", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/discord/party-role-writer.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3bcb380d23a63d4d", "name": "Commented-code block (7 lines) in src/services/discord/role-membership-sync.ts:81", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/discord/role-membership-sync.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9204ab7549b90e72", "name": "Commented-code block (6 lines) in src/services/discord/events-gateway.ts:126", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/discord/events-gateway.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5c48f893374bf1ba", "name": "Commented-code block (6 lines) in src/services/discord/voice/recording-indicators.ts:121", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/discord/voice/recording-indicators.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5293a921a91c2b1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/voice/recording-indicators.ts:578", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/voice/recording-indicators.ts:578"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-66e92e2f489f6011", "name": "Commented-code block (7 lines) in src/services/discord/voice/voice-presence-gateway.ts:146", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/discord/voice/voice-presence-gateway.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-837c9c7d17d45308", "name": "Commented-code block (8 lines) in src/services/discord/guilds/guild-meta-cache.ts:51", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/guild-meta-cache.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f11d0ba071c8663f", "name": "Commented-code block (8 lines) in src/services/discord/guilds/voice-control-service.ts:363", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/voice-control-service.ts:363"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f44c2e670d2f5d1c", "name": "Commented-code block (8 lines) in src/services/discord/guilds/voice-state-service.ts:226", "shortDescription": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/voice-state-service.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d975adce8e412f75", "name": "Commented-code block (5 lines) in src/services/discord/guilds/discord-permissions.ts:212", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/discord/guilds/discord-permissions.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1f1ac0a82c4b4d1e", "name": "Commented-code block (6 lines) in src/services/discord/interactions/slash-commands.ts:51", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/discord/interactions/slash-commands.ts:51"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3485c3b2605f576", "name": "Commented-code block (7 lines) in src/services/discord/interactions/component-handlers.ts:64", "shortDescription": {"text": "Commented-code block (7 lines) in src/services/discord/interactions/component-handlers.ts:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b1732bcad779d83", "name": "Commented-code block (5 lines) in src/services/uptime-windows/kind-adapters/terraria.ts:43", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/uptime-windows/kind-adapters/terraria.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd6628e5b83e3f98", "name": "Commented-code block (5 lines) in src/services/spacebar/platform-account.ts:246", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/spacebar/platform-account.ts:246"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54b0f84a6af92d78", "name": "Commented-code block (11 lines) in src/services/terraria/launch.ts:202", "shortDescription": {"text": "Commented-code block (11 lines) in src/services/terraria/launch.ts:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4908267a5c5e8696", "name": "Commented-code block (5 lines) in src/config/server.ts:326", "shortDescription": {"text": "Commented-code block (5 lines) in src/config/server.ts:326"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3641a2046e3692f7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/config/server.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/config/server.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7b3b8bd827df3c15", "name": "Commented-code block (5 lines) in src/routes/spacebar-proxy.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/spacebar-proxy.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8271c3839d580ffc", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/config.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/config.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-28ced9104035f82a", "name": "Commented-code block (7 lines) in src/routes/vtt-proxy.ts:85", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/vtt-proxy.ts:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-36192b3b4f71df24", "name": "Commented-code block (5 lines) in src/routes/v1/player/campaign-key-terms.ts:108", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaign-key-terms.ts:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-760643ea3c487199", "name": "Commented-code block (5 lines) in src/routes/v1/player/campaign-page-data.ts:457", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaign-page-data.ts:457"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a20ecfb7f2333c4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/player/campaign-page-data.ts:264", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/player/campaign-page-data.ts:264"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e023e67229babdec", "name": "Commented-code block (6 lines) in src/routes/v1/player/campaign-vtt.ts:20", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/player/campaign-vtt.ts:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ba03e9f0cde97fc", "name": "Commented-code block (7 lines) in src/routes/v1/player/campaign-sessions.ts:132", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-sessions.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b37e71ea5436faf", "name": "Commented-code block (5 lines) in src/routes/v1/player/campaigns.ts:267", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaigns.ts:267"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20817dbe14c1d42f", "name": "Commented-code block (5 lines) in src/routes/v1/player/resesh/channel-settings.ts:55", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/resesh/channel-settings.ts:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2b613e3b78527954", "name": "Commented-code block (8 lines) in src/routes/v1/player/resesh/guilds.ts:53", "shortDescription": {"text": "Commented-code block (8 lines) in src/routes/v1/player/resesh/guilds.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-505f4aaa7d2ac586", "name": "Commented-code block (7 lines) in src/routes/v1/player/campaign-integrations/foundry-launch.ts:40", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-integrations/foundry-launch.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b368320b70f7809", "name": "Commented-code block (6 lines) in src/routes/v1/player/campaign-integrations/foundry.ts:147", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/player/campaign-integrations/foundry.ts:147"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fc9b366637df3074", "name": "Commented-code block (7 lines) in src/routes/v1/player/campaign-personas/invite-routes.ts:212", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-personas/invite-routes.ts:212"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ef47b82f415c9d3d", "name": "Commented-code block (5 lines) in src/routes/v1/player/calendar/uptime-windows.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/calendar/uptime-windows.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2e978b45651a5feb", "name": "Commented-code block (5 lines) in src/routes/v1/player/discord/event-bindings.ts:178", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/event-bindings.ts:178"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9798354236820f3e", "name": "Commented-code block (5 lines) in src/routes/v1/player/discord/guild-member-search.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/guild-member-search.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e28934a9ea9101cd", "name": "Commented-code block (5 lines) in src/routes/v1/player/discord/server-guide.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/server-guide.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e75978926fde520", "name": "Commented-code block (5 lines) in src/routes/v1/player/discord/campaign-discord.ts:197", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/campaign-discord.ts:197"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cec3bff8c778c39e", "name": "Commented-code block (5 lines) in src/routes/v1/player/discord/voice-remote.ts:100", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/voice-remote.ts:100"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a35e4739e715cc9", "name": "Commented-code block (6 lines) in src/routes/v1/player/discord/presence.ts:164", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/player/discord/presence.ts:164"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfc248000802f350", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/account/worldanvil.ts:282", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/account/worldanvil.ts:282"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea85ce4f39cd6e03", "name": "Commented-code block (5 lines) in src/routes/v1/account/game-world-access.ts:82", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/game-world-access.ts:82"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-508a5f2513505200", "name": "Commented-code block (6 lines) in src/routes/v1/account/foundry-users.ts:226", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/account/foundry-users.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a0819c52c49ee45", "name": "Commented-code block (5 lines) in src/routes/v1/account/foundry-management.ts:180", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/foundry-management.ts:180"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eee58d946ba8e2d9", "name": "Commented-code block (8 lines) in src/routes/v1/account/dock-preferences.ts:233", "shortDescription": {"text": "Commented-code block (8 lines) in src/routes/v1/account/dock-preferences.ts:233"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45a537d756a77e0a", "name": "Commented-code block (6 lines) in src/routes/v1/account/foundry-package-install.ts:274", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/account/foundry-package-install.ts:274"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6be117db40d0b5a4", "name": "Commented-code block (5 lines) in src/routes/v1/account/game-worlds.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/game-worlds.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-651587ac1a1cd82b", "name": "Commented-code block (5 lines) in src/routes/v1/account/files.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/files.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69688d9cb6794c1a", "name": "Commented-code block (6 lines) in src/routes/v1/account/fermi-bootstrap.ts:102", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/account/fermi-bootstrap.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a36fc282cf9cd483", "name": "Commented-code block (6 lines) in src/routes/v1/account/payments.ts:134", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/account/payments.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d61ca15e96d7af5c", "name": "Commented-code block (9 lines) in src/routes/v1/account/terraria-management.ts:161", "shortDescription": {"text": "Commented-code block (9 lines) in src/routes/v1/account/terraria-management.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd29a0b477860610", "name": "Commented-code block (8 lines) in src/routes/v1/account/installations.ts:202", "shortDescription": {"text": "Commented-code block (8 lines) in src/routes/v1/account/installations.ts:202"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-455ffd79bd5ab57c", "name": "Commented-code block (5 lines) in src/routes/v1/account/wallet.ts:267", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/wallet.ts:267"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ea0bc9ac5282828e", "name": "Commented-code block (5 lines) in src/routes/v1/account/profile/profile-crud.ts:294", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/account/profile/profile-crud.ts:294"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-737916a3d6113347", "name": "Commented-code block (6 lines) in src/routes/v1/admin/foundry.ts:251", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/admin/foundry.ts:251"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39304819cfab9413", "name": "Commented-code block (5 lines) in src/routes/v1/admin/stats.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/admin/stats.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1fb418d13e3dcdf", "name": "Commented-code block (5 lines) in src/routes/v1/discord/linked-roles.ts:139", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/v1/discord/linked-roles.ts:139"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dea6638168bfe3e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/discord/linked-roles.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/discord/linked-roles.ts:158"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a76537768af47704", "name": "Commented-code block (7 lines) in src/routes/v1/public/skills.ts:27", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/v1/public/skills.ts:27"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-30607c70bbebf84c", "name": "Commented-code block (6 lines) in src/routes/v1/public/pair.ts:230", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/v1/public/pair.ts:230"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-58989bd85f370438", "name": "Commented-code block (8 lines) in src/routes/internal/webhooks.ts:33", "shortDescription": {"text": "Commented-code block (8 lines) in src/routes/internal/webhooks.ts:33"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f6e3d594c9bb88f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/internal/webhooks.ts:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/internal/webhooks.ts:135"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4f7f69a0b7581673", "name": "Commented-code block (6 lines) in src/routes/internal/cron/discord-polling.ts:40", "shortDescription": {"text": "Commented-code block (6 lines) in src/routes/internal/cron/discord-polling.ts:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cfbea54b824fbaa8", "name": "Commented-code block (5 lines) in src/routes/internal/disrecord/transcripts.ts:130", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/internal/disrecord/transcripts.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a89c3229b7d1add1", "name": "Commented-code block (5 lines) in src/routes/internal/disrecord/session-policy.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in src/routes/internal/disrecord/session-policy.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-755ddc369c4b2e4d", "name": "Commented-code block (7 lines) in src/routes/internal/disrecord/billing.ts:80", "shortDescription": {"text": "Commented-code block (7 lines) in src/routes/internal/disrecord/billing.ts:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f578dbd16a0feaab", "name": "Legacy-named symbol `core_game_creatures_legacy` in prisma/migrate-to-canonical-entities.ts:72", "shortDescription": {"text": "Legacy-named symbol `core_game_creatures_legacy` in prisma/migrate-to-canonical-entities.ts:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5fa5af25316da646", "name": "16 env vars used in code but missing from .env.example", "shortDescription": {"text": "16 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `ADMIN_DISCORD_IDS`, `CFG_CONTAINER_PLATFORM`, `CFG_FOUNDRY_PLUGIN_MANIFEST_URL`, `DISCORD_CLIENT_ID`, `DISRECORD_DISCORD_CLIENT_SECRET`, `DISRECORD_DISCORD_TOKEN`, `DOCKER_DEFAULT_PLATFORM`, `FOUNDRY_ADMIN_KEY` + 8 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9ee76fba267a7e55", "name": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/permissions/${overwriteId} (src/clients/discord/gu", "shortDescription": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/permissions/${overwriteId} (src/clients/discord/guild-api.ts:467)"}, "fullDescription": {"text": "`src/clients/discord/guild-api.ts:467` calls `PUT https://discord.com/api/v10/channels/${channelId}/permissions/${overwriteId}` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/channels/<p>/permissions/<p>`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-b9957c2904364ef9", "name": "Dangling fetch: POST https://discord.com/api/oauth2/token (src/routes/config.ts:65)", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/oauth2/token (src/routes/config.ts:65)"}, "fullDescription": {"text": "`src/routes/config.ts:65` calls `POST https://discord.com/api/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-6ebf94fdf9ed1d7d", "name": "Dangling fetch: GET https://www.worldanvil.com/api/aragorn/user (src/routes/v1/account/worldanvil.ts:282)", "shortDescription": {"text": "Dangling fetch: GET https://www.worldanvil.com/api/aragorn/user (src/routes/v1/account/worldanvil.ts:282)"}, "fullDescription": {"text": "`src/routes/v1/account/worldanvil.ts:282` calls `GET https://www.worldanvil.com/api/aragorn/user` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/www.worldanvil.com/api/aragorn/user`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-dc32d8c0dccd8692", "name": "Dangling fetch: GET http://${containerName}:${internalPort}/api/ping (src/routes/v1/admin/chat-setup.ts:72)", "shortDescription": {"text": "Dangling fetch: GET http://${containerName}:${internalPort}/api/ping (src/routes/v1/admin/chat-setup.ts:72)"}, "fullDescription": {"text": "`src/routes/v1/admin/chat-setup.ts:72` calls `GET http://${containerName}:${internalPort}/api/ping` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/http:/<p>:/<p>/api/ping`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-98fd84ebd439e42e", "name": "Dangling fetch: POST https://discord.com/api/v10/oauth2/token (src/routes/v1/discord/linked-roles.ts:158)", "shortDescription": {"text": "Dangling fetch: POST https://discord.com/api/v10/oauth2/token (src/routes/v1/discord/linked-roles.ts:158)"}, "fullDescription": {"text": "`src/routes/v1/discord/linked-roles.ts:158` calls `POST https://discord.com/api/v10/oauth2/token` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/oauth2/token`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-142a4d1f48f7a5d6", "name": "Dangling fetch: GET https://discord.com/api/v10/users/@me (src/routes/v1/discord/linked-roles.ts:178)", "shortDescription": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me (src/routes/v1/discord/linked-roles.ts:178)"}, "fullDescription": {"text": "`src/routes/v1/discord/linked-roles.ts:178` calls `GET https://discord.com/api/v10/users/@me` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/discord.com/api/v10/users/@me`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4756b4c4da7d2088", "name": "Unused endpoint: GET /api/health", "shortDescription": {"text": "Unused endpoint: GET /api/health"}, "fullDescription": {"text": "`src/routes/health.ts` declares `GET /api/health` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7aa4b2518cbbbfa2", "name": "Unused endpoint: GET /api/config", "shortDescription": {"text": "Unused endpoint: GET /api/config"}, "fullDescription": {"text": "`src/routes/config.ts` declares `GET /api/config` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c61070ac91c76ef5", "name": "Unused endpoint: POST /api/config/token", "shortDescription": {"text": "Unused endpoint: POST /api/config/token"}, "fullDescription": {"text": "`src/routes/config.ts` declares `POST /api/config/token` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8eadc51da6e2e46b", "name": "Unused endpoint: POST /api/v1/dice", "shortDescription": {"text": "Unused endpoint: POST /api/v1/dice"}, "fullDescription": {"text": "`src/routes/v1/dice.ts` declares `POST /api/v1/dice` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d84e7df73a95b8a6", "name": "Unused endpoint: GET /api/v1/instances/:instanceType/:instanceId/roles", "shortDescription": {"text": "Unused endpoint: GET /api/v1/instances/:instanceType/:instanceId/roles"}, "fullDescription": {"text": "`src/routes/v1/instances.ts` declares `GET /api/v1/instances/:instanceType/:instanceId/roles` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-afff1899c6f0e888", "name": "Unused endpoint: POST /api/v1/instances/:instanceType/:instanceId/roles", "shortDescription": {"text": "Unused endpoint: POST /api/v1/instances/:instanceType/:instanceId/roles"}, "fullDescription": {"text": "`src/routes/v1/instances.ts` declares `POST /api/v1/instances/:instanceType/:instanceId/roles` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcd1a0db4f067e67", "name": "Unused endpoint: DELETE /api/v1/instances/:instanceType/:instanceId/roles", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/instances/:instanceType/:instanceId/roles"}, "fullDescription": {"text": "`src/routes/v1/instances.ts` declares `DELETE /api/v1/instances/:instanceType/:instanceId/roles` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ebce806980954a1f", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-homebrew.ts` declares `GET /api/v1/player/campaigns/:campaignId/homebrew` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2a6dc013ed66adf6", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-homebrew.ts` declares `POST /api/v1/player/campaigns/:campaignId/homebrew` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d4c3e7190079051", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-homebrew.ts` declares `GET /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a14781b879437e3", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId/approve", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId/approve"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-homebrew.ts` declares `POST /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId/approve` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2f37d7a59323a3ee", "name": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-homebrew.ts` declares `DELETE /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90a00b4790ea102c", "name": "Unused endpoint: GET /api/v1/player/compendium-sources", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `GET /api/v1/player/compendium-sources` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c473b85f22f1c902", "name": "Unused endpoint: POST /api/v1/player/compendium-sources", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `POST /api/v1/player/compendium-sources` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b0e69e429b0b3936", "name": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `GET /api/v1/player/compendium-sources/:slug` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-162c8af77387e958", "name": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `PATCH /api/v1/player/compendium-sources/:slug` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a395cab6d9486448", "name": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `DELETE /api/v1/player/compendium-sources/:slug` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-614493e90b77a3ef", "name": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/submit-for-review", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/submit-for-review"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `POST /api/v1/player/compendium-sources/:slug/submit-for-review` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9fa0cfa8fdffe926", "name": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/withdraw-review", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/withdraw-review"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `POST /api/v1/player/compendium-sources/:slug/withdraw-review` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8574fc4bb5b57e5", "name": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/chat-settings", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/chat-settings"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `GET /api/v1/player/compendium-sources/:slug/chat-settings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4d6edaf9c29441b6", "name": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/chat-settings", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/chat-settings"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `PATCH /api/v1/player/compendium-sources/:slug/chat-settings` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb8fac24b573fa80", "name": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/collaboration-sessions", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/collaboration-sessions"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `GET /api/v1/player/compendium-sources/:slug/collaboration-sessions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8bf510fbabe42d36", "name": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/collaboration-sessions", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/collaboration-sessions"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `POST /api/v1/player/compendium-sources/:slug/collaboration-sessions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5b041827375cbbb7", "name": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `PATCH /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24b28d09ccd7568d", "name": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id"}, "fullDescription": {"text": "`src/routes/v1/player/compendium-sources.ts` declares `DELETE /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b867b79f31ef8f0b", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-scene-log.ts` declares `GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f4d3beb1e94bba94", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-scene-log.ts` declares `POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-68b8da2c854db465", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-scene-log.ts` declares `GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-565b8d8b70a410a6", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-scene-log.ts` declares `POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-634aac788712a65c", "name": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/:entryId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/:entryId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-scene-log.ts` declares `DELETE /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/:entryId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-763bd90babe2e0e7", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `GET /api/v1/player/campaigns/:campaignId/quests` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86aa8b050e49944e", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/quests", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/quests"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `POST /api/v1/player/campaigns/:campaignId/quests` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a39a8626971f1a50", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests/:questId", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests/:questId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `GET /api/v1/player/campaigns/:campaignId/quests/:questId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fcf4b888c49450a6", "name": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/quests/:questId", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/quests/:questId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `PATCH /api/v1/player/campaigns/:campaignId/quests/:questId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c53cedfb0f67a619", "name": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/quests/:questId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/quests/:questId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `DELETE /api/v1/player/campaigns/:campaignId/quests/:questId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bf1160ff6ef2cbee", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/rules", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/rules"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `GET /api/v1/player/campaigns/:campaignId/rules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b171b513248a943a", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/rules", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/rules"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `POST /api/v1/player/campaigns/:campaignId/rules` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4b9d6035d539640c", "name": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/rules/:ruleId", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/rules/:ruleId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `PATCH /api/v1/player/campaigns/:campaignId/rules/:ruleId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a1b82da68987eadb", "name": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/rules/:ruleId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/rules/:ruleId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `DELETE /api/v1/player/campaigns/:campaignId/rules/:ruleId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49b42d4a828e7754", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `GET /api/v1/player/campaigns/:campaignId/tables` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c1a010183977480b", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `POST /api/v1/player/campaigns/:campaignId/tables` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-add6517107b03aad", "name": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables/:tableId/roll", "shortDescription": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables/:tableId/roll"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `POST /api/v1/player/campaigns/:campaignId/tables/:tableId/roll` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-32f1312da84791fe", "name": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables/:tableId", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `GET /api/v1/player/campaigns/:campaignId/tables/:tableId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-807e3ed6edad0620", "name": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/tables/:tableId", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `PATCH /api/v1/player/campaigns/:campaignId/tables/:tableId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e2ca45c568f62a47", "name": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/tables/:tableId", "shortDescription": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-quests.ts` declares `DELETE /api/v1/player/campaigns/:campaignId/tables/:tableId` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99119dac71d0ff83", "name": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/key-terms", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/key-terms"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-key-terms.ts` declares `PATCH /api/v1/player/campaigns/:id/key-terms` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9278827a01708112", "name": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-key-terms.ts` declares `GET /api/v1/player/campaigns/:id/key-terms` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c6cdbf82d43b37da", "name": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/parties/:partyId/key-terms", "shortDescription": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/parties/:partyId/key-terms"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-key-terms.ts` declares `PATCH /api/v1/player/campaigns/:id/parties/:partyId/key-terms` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-707db4455866bd4a", "name": "Unused endpoint: GET /api/v1/player/campaigns/:id/parties/:partyId/key-terms", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/parties/:partyId/key-terms"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-key-terms.ts` declares `GET /api/v1/player/campaigns/:id/parties/:partyId/key-terms` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-60fffed854936b62", "name": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms/preview", "shortDescription": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms/preview"}, "fullDescription": {"text": "`src/routes/v1/player/campaign-key-terms.ts` declares `GET /api/v1/player/campaigns/:id/key-terms/preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25129"}, "properties": {"repository": "Crit-Fumble/cfg-core-server", "repoUrl": "https://github.com/Crit-Fumble/cfg-core-server", "branch": "main"}, "results": [{"ruleId": "scanner-e496438151f62a86", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/helpers/screenshot-compare.ts:223"}, "properties": {"repobilityId": "7406fc3a18d83411", "scanner": "scanner-primary", "fingerprint": "e496438151f62a86", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4344f11829ead31c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tests/helpers/docker.ts:225"}, "properties": {"repobilityId": "b542a831040948d0", "scanner": "scanner-primary", "fingerprint": "4344f11829ead31c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-db91c8296e80b998", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 tests/integration/stripe/webhook-handler.test.ts:381"}, "properties": {"repobilityId": "9607238c1589d92c", "scanner": "scanner-primary", "fingerprint": "db91c8296e80b998", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-de6dc58ac84c9272", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/register-resesh-commands.ts:91"}, "properties": {"repobilityId": "9918ba17bab0304b", "scanner": "scanner-primary", "fingerprint": "de6dc58ac84c9272", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8153613182a99c33", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/controllers/campaign-controller.ts:92"}, "properties": {"repobilityId": "b25909ae19822adb", "scanner": "scanner-primary", "fingerprint": "8153613182a99c33", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-76f6e0436c021ed3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/cli/foundry-init.ts:39"}, "properties": {"repobilityId": "293bae32b48ea016", "scanner": "scanner-primary", "fingerprint": "76f6e0436c021ed3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-66e2210a988a2404", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/auth-sign-in.ts:188"}, "properties": {"repobilityId": "efd0f2de6d22b4cc", "scanner": "scanner-primary", "fingerprint": "66e2210a988a2404", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1b6ff8f8e1443514", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/user-storage.ts:235"}, "properties": {"repobilityId": "0261b24f5d76cc2a", "scanner": "scanner-primary", "fingerprint": "1b6ff8f8e1443514", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-40a469dd539486bf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/bot-execution-service.ts:86"}, "properties": {"repobilityId": "84f1f0e00080dac8", "scanner": "scanner-primary", "fingerprint": "40a469dd539486bf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-0a27442817ad4c94", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/tools/tool-registry.ts:91"}, "properties": {"repobilityId": "949f8b90efd4ecef", "scanner": "scanner-primary", "fingerprint": "0a27442817ad4c94", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-aeaaec6729a6c60b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/bot/roles/index.ts:14"}, "properties": {"repobilityId": "635c0b4aa0793274", "scanner": "scanner-primary", "fingerprint": "aeaaec6729a6c60b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-727ecdf933f7f693", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/foundry/foundry-world-loader.ts:145"}, "properties": {"repobilityId": "268e350ce3664056", "scanner": "scanner-primary", "fingerprint": "727ecdf933f7f693", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-1f33da37e7f6ab9b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/auth/auth-providers.ts:64"}, "properties": {"repobilityId": "66ddd5a88525a64d", "scanner": "scanner-primary", "fingerprint": "1f33da37e7f6ab9b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c316ae5cc2359f52", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-sync-queue.ts:194"}, "properties": {"repobilityId": "5992130cb16cb4f5", "scanner": "scanner-primary", "fingerprint": "c316ae5cc2359f52", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-ed841a1ee54f8d9d", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/services/worldanvil/worldanvil-poller.ts:175"}, "properties": {"repobilityId": "ea85813a99e06e90", "scanner": "scanner-primary", "fingerprint": "ed841a1ee54f8d9d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-a588f8a27416323b", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/campaigns.ts:62"}, "properties": {"repobilityId": "08578104e7a8dedd", "scanner": "scanner-primary", "fingerprint": "a588f8a27416323b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-93e781b9531acc8a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/routes/v1/player/resesh/channel-settings.ts:61"}, "properties": {"repobilityId": "ed7f46a02ae1b20e", "scanner": "scanner-primary", "fingerprint": "93e781b9531acc8a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-854e7371aad5fc32", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/bootstrap.ts:30"}, "properties": {"repobilityId": "268d8b1e69742b84", "scanner": "scanner-primary", "fingerprint": "854e7371aad5fc32", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4c44bb183d771dc8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/backfill-world-access-grants.ts:286"}, "properties": {"repobilityId": "3bcb2aa2038c7a4e", "scanner": "scanner-primary", "fingerprint": "4c44bb183d771dc8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a92e686aa1c17ae4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 prisma/migrate-to-canonical-entities.ts:68"}, "properties": {"repobilityId": "726ff2693131ba66", "scanner": "scanner-primary", "fingerprint": "a92e686aa1c17ae4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-25de52372c63f233", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:24-slim"}, "properties": {"repobilityId": "c1b78239df620d6b", "scanner": "scanner-primary", "fingerprint": "25de52372c63f233", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-a135a663d7adc92c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-route-collisions.mjs:22"}, "properties": {"repobilityId": "32e5283886b49b81", "scanner": "scanner-primary", "fingerprint": "a135a663d7adc92c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-route-collisions.mjs"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-7cbfc8f80f05864a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/services/user-volume-storage.ts:31"}, "properties": {"repobilityId": "cd780b52ae8d839b", "scanner": "scanner-primary", "fingerprint": "7cbfc8f80f05864a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/user-volume-storage.ts"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-31314a75d305047b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/services/user-volume-storage/host-group.ts:28"}, "properties": {"repobilityId": "ebd807b442f4efce", "scanner": "scanner-primary", "fingerprint": "31314a75d305047b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/user-volume-storage/host-group.ts"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-8a7020f25ef20dc2", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-backups.ts:14"}, "properties": {"repobilityId": "bf4b40e15cdd107e", "scanner": "scanner-primary", "fingerprint": "8a7020f25ef20dc2", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/foundry/foundry-backups.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-889f386db96e99c9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in src/services/foundry/foundry-worlds.ts:18"}, "properties": {"repobilityId": "fe9f721b5cc1f774", "scanner": "scanner-primary", "fingerprint": "889f386db96e99c9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/services/foundry/foundry-worlds.ts"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-aa2a87f3b17a5837", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in prisma/migrate.mjs:40"}, "properties": {"repobilityId": "75f31bcd103b2d2f", "scanner": "scanner-primary", "fingerprint": "aa2a87f3b17a5837", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "prisma/migrate.mjs"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2644034c718fb80d", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-1838a141491ce38c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "b8fd4f5048f96576", "scanner": "scanner-primary", "fingerprint": "1838a141491ce38c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-dbdc44a647622a35", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "3a9bed995e984923", "scanner": "scanner-primary", "fingerprint": "dbdc44a647622a35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/publish-db.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "0c8d2536c72d068a", "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": "28ede1befe89010a", "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": "7c04018329af7dea", "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": "c6c2d4a98bc557e9", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-006e9371469bc2fa", "level": "none", "message": {"text": "Commented-code block (7 lines) in eslint.config.js:81"}, "properties": {"repobilityId": "acf79a4f9b973f7c", "scanner": "scanner-primary", "fingerprint": "006e9371469bc2fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc8348e955a78c76", "level": "none", "message": {"text": "Commented-code block (5 lines) in prisma.config.mjs:29"}, "properties": {"repobilityId": "b53e90dfb20caecb", "scanner": "scanner-primary", "fingerprint": "fc8348e955a78c76", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d4614c23295bb7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/proxy/core-secret-auth.test.ts:87"}, "properties": {"repobilityId": "8f1cdba1c6835e20", "scanner": "scanner-primary", "fingerprint": "3d4614c23295bb7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-913ca86b1d9e7094", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/utils/dice-roller.test.ts:79"}, "properties": {"repobilityId": "e93537d7e59a91f1", "scanner": "scanner-primary", "fingerprint": "913ca86b1d9e7094", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f20b28458a14061", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/controllers/campaign-controller.test.ts:57"}, "properties": {"repobilityId": "3fe1719ef382f2ad", "scanner": "scanner-primary", "fingerprint": "1f20b28458a14061", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dd2619b6a11c6a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/services/consent-collector-persistent.test.ts:56"}, "properties": {"repobilityId": "1fb1a8bfc5c73c66", "scanner": "scanner-primary", "fingerprint": "0dd2619b6a11c6a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-788775ec7607d651", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/split-tip.test.ts:66"}, "properties": {"repobilityId": "a6f63778c8822e4a", "scanner": "scanner-primary", "fingerprint": "788775ec7607d651", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-71900d2826045ec6", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/services/foundry-launcher.test.ts:103"}, "properties": {"repobilityId": "0e4bc909b10e7263", "scanner": "scanner-primary", "fingerprint": "71900d2826045ec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bedda2175cf2b604", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/billing/container-sizing.test.ts:43"}, "properties": {"repobilityId": "24b57c274cd876eb", "scanner": "scanner-primary", "fingerprint": "bedda2175cf2b604", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-677c148592b02d11", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/services/user-volume-storage/gid-allocator.test.ts:182"}, "properties": {"repobilityId": "e3dbb652b73ab607", "scanner": "scanner-primary", "fingerprint": "677c148592b02d11", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-708ff270f085eadf", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/services/foundry/package-ingest.test.ts:82"}, "properties": {"repobilityId": "10e63f6cb521b5a0", "scanner": "scanner-primary", "fingerprint": "708ff270f085eadf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bb990fbabc9f757", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/foundry/foundry-admin-session.test.ts:250"}, "properties": {"repobilityId": "910ef1b85556e169", "scanner": "scanner-primary", "fingerprint": "3bb990fbabc9f757", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c673957172ef0c5a", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/services/session-events/resesh-auto-start.test.ts:153"}, "properties": {"repobilityId": "3fcdf20edf7ac046", "scanner": "scanner-primary", "fingerprint": "c673957172ef0c5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaf17cbfc84038b0", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/discord/interactions.test.ts:60"}, "properties": {"repobilityId": "f4cdcc4ef4b56bbb", "scanner": "scanner-primary", "fingerprint": "aaf17cbfc84038b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80712f92d6eaf6ea", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/discord/voice/recording-indicators.test.ts:295"}, "properties": {"repobilityId": "f1c109357269746c", "scanner": "scanner-primary", "fingerprint": "80712f92d6eaf6ea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8491628974cc9808", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/services/server-manager/access-cascade.test.ts:372"}, "properties": {"repobilityId": "4d00a3058216e07f", "scanner": "scanner-primary", "fingerprint": "8491628974cc9808", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea58701a9b1e2e92", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/config/server-config.test.ts:124"}, "properties": {"repobilityId": "553bb67af45e2281", "scanner": "scanner-primary", "fingerprint": "ea58701a9b1e2e92", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-26d5f5f9fcb69765", "level": "none", "message": {"text": "Commented-code block (8 lines) in tests/unit/routes/player-campaigns.test.ts:467"}, "properties": {"repobilityId": "773900e412c7d335", "scanner": "scanner-primary", "fingerprint": "26d5f5f9fcb69765", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce7c7e75a447679b", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/routes/spacebar-proxy.test.ts:54"}, "properties": {"repobilityId": "ba4da98e4b84fe45", "scanner": "scanner-primary", "fingerprint": "ce7c7e75a447679b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99a697cdee1c8781", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/unit/routes/voice-state-stream.test.ts:22"}, "properties": {"repobilityId": "9009ca238efbf80a", "scanner": "scanner-primary", "fingerprint": "99a697cdee1c8781", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-38e5eb584e27bf5f", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/unit/routes/disrecord-routes.test.ts:158"}, "properties": {"repobilityId": "4bfee4a2dba9454e", "scanner": "scanner-primary", "fingerprint": "38e5eb584e27bf5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9e5a196c67dd8d1f", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/unit/routes/vtt-proxy-content-type-parsers.test.ts:56"}, "properties": {"repobilityId": "68bfb0d90d801d4d", "scanner": "scanner-primary", "fingerprint": "9e5a196c67dd8d1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24d6a8838f2e8b2e", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/integration/cfg-plugin-auto-inject.test.ts:28"}, "properties": {"repobilityId": "c52dfac269cc8e2d", "scanner": "scanner-primary", "fingerprint": "24d6a8838f2e8b2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85add11461d87db2", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/asset-revshare-flow.test.ts:114"}, "properties": {"repobilityId": "e4aae78f07e76fae", "scanner": "scanner-primary", "fingerprint": "85add11461d87db2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a5fb56c640cb016", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/access-cascade-chain.test.ts:248"}, "properties": {"repobilityId": "4255a1f092082d98", "scanner": "scanner-primary", "fingerprint": "6a5fb56c640cb016", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87bd920bb59ac156", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/tip-flow-edge-cases.test.ts:307"}, "properties": {"repobilityId": "811a44228f48cf6a", "scanner": "scanner-primary", "fingerprint": "87bd920bb59ac156", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1738c867f6ef84d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/foundry-gid-provisioning.test.ts:92"}, "properties": {"repobilityId": "122bfbef62a805fb", "scanner": "scanner-primary", "fingerprint": "1738c867f6ef84d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d7f914651e438fb", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/integration/foundry-vtt.test.ts:411"}, "properties": {"repobilityId": "d95746780f646825", "scanner": "scanner-primary", "fingerprint": "7d7f914651e438fb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f85831fe650c6560", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/persistent-consent-flow.test.ts:292"}, "properties": {"repobilityId": "39a69ebc2ce50887", "scanner": "scanner-primary", "fingerprint": "f85831fe650c6560", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-620adfee1d047c23", "level": "none", "message": {"text": "Commented-code block (7 lines) in tests/integration/stripe/webhook-handler.test.ts:901"}, "properties": {"repobilityId": "c697ebbce005fba5", "scanner": "scanner-primary", "fingerprint": "620adfee1d047c23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1beba0fab7600e10", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/webhooks/discord-webhook.test.ts:27"}, "properties": {"repobilityId": "2aaefb7315f9a90e", "scanner": "scanner-primary", "fingerprint": "1beba0fab7600e10", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5be7d7451a57f75", "level": "none", "message": {"text": "Commented-code block (5 lines) in tests/integration/discord/discord-event-sync.test.ts:46"}, "properties": {"repobilityId": "d5e82f9c8b2f3511", "scanner": "scanner-primary", "fingerprint": "f5be7d7451a57f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-371301ce62c740bc", "level": "none", "message": {"text": "Commented-code block (6 lines) in tests/config/jest.integration.setup.ts:1"}, "properties": {"repobilityId": "3e6fc1509e8feae3", "scanner": "scanner-primary", "fingerprint": "371301ce62c740bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9bb8817d339433a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/register-resesh-commands.ts:36"}, "properties": {"repobilityId": "99593f4c010c37da", "scanner": "scanner-primary", "fingerprint": "9bb8817d339433a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b819d648fc5edc5e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/register-resesh-commands.ts:95"}, "properties": {"repobilityId": "221e327848232f98", "scanner": "scanner-primary", "fingerprint": "b819d648fc5edc5e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aaa476f282dea7d6", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/index.ts:46"}, "properties": {"repobilityId": "1ef585a678f4fa2a", "scanner": "scanner-primary", "fingerprint": "aaa476f282dea7d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-04c7e667510a0ad2", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app.ts:55"}, "properties": {"repobilityId": "8e32f2ba4dcbcf1d", "scanner": "scanner-primary", "fingerprint": "04c7e667510a0ad2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3eb023a207f989c9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/clients/discord/client.ts:29"}, "properties": {"repobilityId": "8e10d3ea4b665b14", "scanner": "scanner-primary", "fingerprint": "3eb023a207f989c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f330fb766aeff528", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/client.ts:59"}, "properties": {"repobilityId": "8cf13afea1da3b38", "scanner": "scanner-primary", "fingerprint": "f330fb766aeff528", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-705fa363b965b689", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/clients/discord/guild-api.ts:467"}, "properties": {"repobilityId": "5b43369d0f13b97d", "scanner": "scanner-primary", "fingerprint": "705fa363b965b689", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eec145cb3e0242da", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/clients/container/client.ts:245"}, "properties": {"repobilityId": "c12912e101ec233f", "scanner": "scanner-primary", "fingerprint": "eec145cb3e0242da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-15b2ed39606d08ac", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/plugins/auth.ts:183"}, "properties": {"repobilityId": "1fdb8d9c762437fc", "scanner": "scanner-primary", "fingerprint": "15b2ed39606d08ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4059200327da1748", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/plugins/auth.ts:13"}, "properties": {"repobilityId": "863ec1649fd4f309", "scanner": "scanner-primary", "fingerprint": "4059200327da1748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfba7ae95603b742", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/controllers/campaign-controller.ts:155"}, "properties": {"repobilityId": "017b7a4be0a8fafe", "scanner": "scanner-primary", "fingerprint": "cfba7ae95603b742", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0861133205c207c6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/split-tip.ts:244"}, "properties": {"repobilityId": "13e3772eadecf216", "scanner": "scanner-primary", "fingerprint": "0861133205c207c6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8531fc6f82209ee1", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/user-volume-storage.ts:150"}, "properties": {"repobilityId": "662468e5bf832e11", "scanner": "scanner-primary", "fingerprint": "8531fc6f82209ee1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da2bc56131cf7785", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/admin-alert.ts:46"}, "properties": {"repobilityId": "ff6765b5f71361ac", "scanner": "scanner-primary", "fingerprint": "da2bc56131cf7785", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-283fbab5fa110bfc", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/services/session-events.ts:53"}, "properties": {"repobilityId": "54535d11f86bffd1", "scanner": "scanner-primary", "fingerprint": "283fbab5fa110bfc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab69b1c09475f965", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/session-log-thread.ts:147"}, "properties": {"repobilityId": "5f2a4df102fd3bd2", "scanner": "scanner-primary", "fingerprint": "ab69b1c09475f965", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a3c1c1832e2d8f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/compute-billing.ts:61"}, "properties": {"repobilityId": "8aaf89b295cecd85", "scanner": "scanner-primary", "fingerprint": "1a3c1c1832e2d8f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97c365c106baee3c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/resesh/channel-events-service.ts:128"}, "properties": {"repobilityId": "b08d224e87426bdf", "scanner": "scanner-primary", "fingerprint": "97c365c106baee3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7382215b004ba765", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/disrecord/index.ts:132"}, "properties": {"repobilityId": "4f70c8dafac7cf98", "scanner": "scanner-primary", "fingerprint": "7382215b004ba765", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e40be886f96e881", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/disrecord/container-spawn.ts:149"}, "properties": {"repobilityId": "fdae4b51922494c9", "scanner": "scanner-primary", "fingerprint": "6e40be886f96e881", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c038bc3db35fb7d", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/services/recording/consent-collector.ts:142"}, "properties": {"repobilityId": "3ab55a66da7e8441", "scanner": "scanner-primary", "fingerprint": "4c038bc3db35fb7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24fd7cacff5122a7", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/recording/transcript-thread-poster.ts:314"}, "properties": {"repobilityId": "3d744d21385cd7aa", "scanner": "scanner-primary", "fingerprint": "24fd7cacff5122a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-956eb8d75c91d89f", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/services/characters/character-sheet-fields.ts:96"}, "properties": {"repobilityId": "376fc955296fd042", "scanner": "scanner-primary", "fingerprint": "956eb8d75c91d89f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8608b86db3885f3b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/user-volume-storage/gid-allocator.ts:166"}, "properties": {"repobilityId": "1ce3891702edb5c0", "scanner": "scanner-primary", "fingerprint": "8608b86db3885f3b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa8bc9296e9f686f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/foundry/foundry-user-provisioner.ts:146"}, "properties": {"repobilityId": "9dc78d72d537bdd0", "scanner": "scanner-primary", "fingerprint": "aa8bc9296e9f686f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ffcec506d997f9d7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-launcher.ts:111"}, "properties": {"repobilityId": "7598469bf0dfdd40", "scanner": "scanner-primary", "fingerprint": "ffcec506d997f9d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7d54658bceb5672a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/foundry/foundry-management.ts:46"}, "properties": {"repobilityId": "654ad6cd8bada9df", "scanner": "scanner-primary", "fingerprint": "7d54658bceb5672a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-827e799217bd44fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-admin-session.ts:214"}, "properties": {"repobilityId": "e70ef8ece90f2dd8", "scanner": "scanner-primary", "fingerprint": "827e799217bd44fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aebe1b45db29a936", "level": "none", "message": {"text": "Commented-code block (18 lines) in src/services/foundry/foundry-s3-env.ts:93"}, "properties": {"repobilityId": "6f874485ec71c08f", "scanner": "scanner-primary", "fingerprint": "aebe1b45db29a936", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6148ccdcb00f517d", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/foundry/foundry-world-loader.ts:128"}, "properties": {"repobilityId": "c5c9179a883abf5a", "scanner": "scanner-primary", "fingerprint": "6148ccdcb00f517d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6bd80d58e57eb80", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-users-store.ts:212"}, "properties": {"repobilityId": "88bae964755a7f22", "scanner": "scanner-primary", "fingerprint": "d6bd80d58e57eb80", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3dd9bbcf9fd4500", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/foundry/package-ingest.ts:362"}, "properties": {"repobilityId": "9785f639da60f914", "scanner": "scanner-primary", "fingerprint": "b3dd9bbcf9fd4500", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-694116a877bf341e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/foundry/foundry-resource-syncer.ts:212"}, "properties": {"repobilityId": "49fdcf92991552e0", "scanner": "scanner-primary", "fingerprint": "694116a877bf341e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6a5cefab0790f6ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/foundry/foundry-worlds.ts:507"}, "properties": {"repobilityId": "d81592a0ff14e593", "scanner": "scanner-primary", "fingerprint": "6a5cefab0790f6ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f0e5282914f03dd", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/services/auth/auth-config.ts:55"}, "properties": {"repobilityId": "068680d91ecad19f", "scanner": "scanner-primary", "fingerprint": "9f0e5282914f03dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c52e78e2bbd0fae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/auth/steam-provider.ts:132"}, "properties": {"repobilityId": "a3ac1c787d290e46", "scanner": "scanner-primary", "fingerprint": "2c52e78e2bbd0fae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-923b087372bf0c20", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/auth/discord-auth-sync.ts:136"}, "properties": {"repobilityId": "aa933be45ad97f96", "scanner": "scanner-primary", "fingerprint": "923b087372bf0c20", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b214dc2a7f3069a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/auth/provision-user.ts:172"}, "properties": {"repobilityId": "dbf093005e3c216c", "scanner": "scanner-primary", "fingerprint": "0b214dc2a7f3069a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-424db235f225369f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/session-events/resesh-auto-start.ts:81"}, "properties": {"repobilityId": "e84f487d399520b9", "scanner": "scanner-primary", "fingerprint": "424db235f225369f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b626f0789911c9cf", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/session-events/session-end-from-discord.ts:228"}, "properties": {"repobilityId": "aa75c6d1b7cd1f8d", "scanner": "scanner-primary", "fingerprint": "b626f0789911c9cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-da2161d4dd9b9226", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/session-events/safety-net-auto-record.ts:65"}, "properties": {"repobilityId": "7985f67e92130032", "scanner": "scanner-primary", "fingerprint": "da2161d4dd9b9226", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d94d758027cff42e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/factorio/launch.ts:216"}, "properties": {"repobilityId": "5f0d455d7f1a340c", "scanner": "scanner-primary", "fingerprint": "d94d758027cff42e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5dbd02df1d9aa94d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/discord/discord-token.ts:17"}, "properties": {"repobilityId": "2d3efc8ab39ca107", "scanner": "scanner-primary", "fingerprint": "5dbd02df1d9aa94d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97d2ab05f91ff09f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/discord-service.ts:96"}, "properties": {"repobilityId": "c617776a2e5557df", "scanner": "scanner-primary", "fingerprint": "97d2ab05f91ff09f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2cee805d7c87bcba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/discord/aggregated-scheduled-events.ts:371"}, "properties": {"repobilityId": "9aa9de6372ada974", "scanner": "scanner-primary", "fingerprint": "2cee805d7c87bcba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-297f1620ef76e746", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/discord/party-role-writer.ts:61"}, "properties": {"repobilityId": "8488c276b7ecce32", "scanner": "scanner-primary", "fingerprint": "297f1620ef76e746", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3bcb380d23a63d4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/discord/role-membership-sync.ts:81"}, "properties": {"repobilityId": "684ed1dc2d0cb280", "scanner": "scanner-primary", "fingerprint": "3bcb380d23a63d4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9204ab7549b90e72", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/discord/events-gateway.ts:126"}, "properties": {"repobilityId": "b2dc6e7e2a8dca4d", "scanner": "scanner-primary", "fingerprint": "9204ab7549b90e72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5c48f893374bf1ba", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/discord/voice/recording-indicators.ts:121"}, "properties": {"repobilityId": "64941672e5c2f7cc", "scanner": "scanner-primary", "fingerprint": "5c48f893374bf1ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5293a921a91c2b1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/discord/voice/recording-indicators.ts:578"}, "properties": {"repobilityId": "e4b6f77c6e8ed5c2", "scanner": "scanner-primary", "fingerprint": "e5293a921a91c2b1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-66e92e2f489f6011", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/discord/voice/voice-presence-gateway.ts:146"}, "properties": {"repobilityId": "4d4f807799b09abf", "scanner": "scanner-primary", "fingerprint": "66e92e2f489f6011", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-837c9c7d17d45308", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/guild-meta-cache.ts:51"}, "properties": {"repobilityId": "b511ff80a6ee9d9a", "scanner": "scanner-primary", "fingerprint": "837c9c7d17d45308", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f11d0ba071c8663f", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/voice-control-service.ts:363"}, "properties": {"repobilityId": "a530c5e5d53dcce0", "scanner": "scanner-primary", "fingerprint": "f11d0ba071c8663f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f44c2e670d2f5d1c", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/services/discord/guilds/voice-state-service.ts:226"}, "properties": {"repobilityId": "70955aea3d8e9866", "scanner": "scanner-primary", "fingerprint": "f44c2e670d2f5d1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d975adce8e412f75", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/discord/guilds/discord-permissions.ts:212"}, "properties": {"repobilityId": "d3613bae74126c85", "scanner": "scanner-primary", "fingerprint": "d975adce8e412f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f1ac0a82c4b4d1e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/discord/interactions/slash-commands.ts:51"}, "properties": {"repobilityId": "9bf0c4e3172e4019", "scanner": "scanner-primary", "fingerprint": "1f1ac0a82c4b4d1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3485c3b2605f576", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/services/discord/interactions/component-handlers.ts:64"}, "properties": {"repobilityId": "f096b485d5dcafa9", "scanner": "scanner-primary", "fingerprint": "b3485c3b2605f576", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7b1732bcad779d83", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/uptime-windows/kind-adapters/terraria.ts:43"}, "properties": {"repobilityId": "01f59be7f2285ad6", "scanner": "scanner-primary", "fingerprint": "7b1732bcad779d83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd6628e5b83e3f98", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/spacebar/platform-account.ts:246"}, "properties": {"repobilityId": "4b43e5504969eea0", "scanner": "scanner-primary", "fingerprint": "bd6628e5b83e3f98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-54b0f84a6af92d78", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/services/terraria/launch.ts:202"}, "properties": {"repobilityId": "169035176c432c77", "scanner": "scanner-primary", "fingerprint": "54b0f84a6af92d78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4908267a5c5e8696", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/config/server.ts:326"}, "properties": {"repobilityId": "f2ad78e1728d01fb", "scanner": "scanner-primary", "fingerprint": "4908267a5c5e8696", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3641a2046e3692f7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/config/server.ts:103"}, "properties": {"repobilityId": "3f7912c65f86b2bf", "scanner": "scanner-primary", "fingerprint": "3641a2046e3692f7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7b3b8bd827df3c15", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/spacebar-proxy.ts:95"}, "properties": {"repobilityId": "08616c88320e5689", "scanner": "scanner-primary", "fingerprint": "7b3b8bd827df3c15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8271c3839d580ffc", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/config.ts:65"}, "properties": {"repobilityId": "b0f38559ecaccc9b", "scanner": "scanner-primary", "fingerprint": "8271c3839d580ffc", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28ced9104035f82a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/vtt-proxy.ts:85"}, "properties": {"repobilityId": "62d1b9f75ebed9cb", "scanner": "scanner-primary", "fingerprint": "28ced9104035f82a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-36192b3b4f71df24", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaign-key-terms.ts:108"}, "properties": {"repobilityId": "554a450bc1912107", "scanner": "scanner-primary", "fingerprint": "36192b3b4f71df24", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-760643ea3c487199", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaign-page-data.ts:457"}, "properties": {"repobilityId": "2a1506db055df205", "scanner": "scanner-primary", "fingerprint": "760643ea3c487199", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a20ecfb7f2333c4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/player/campaign-page-data.ts:264"}, "properties": {"repobilityId": "10c6c0c03d72ee4d", "scanner": "scanner-primary", "fingerprint": "5a20ecfb7f2333c4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e023e67229babdec", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/player/campaign-vtt.ts:20"}, "properties": {"repobilityId": "e19e851005614325", "scanner": "scanner-primary", "fingerprint": "e023e67229babdec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ba03e9f0cde97fc", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-sessions.ts:132"}, "properties": {"repobilityId": "28806f3c467c491f", "scanner": "scanner-primary", "fingerprint": "2ba03e9f0cde97fc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b37e71ea5436faf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/campaigns.ts:267"}, "properties": {"repobilityId": "130cb92b36d9f7bb", "scanner": "scanner-primary", "fingerprint": "6b37e71ea5436faf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20817dbe14c1d42f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/resesh/channel-settings.ts:55"}, "properties": {"repobilityId": "83f43403af916f16", "scanner": "scanner-primary", "fingerprint": "20817dbe14c1d42f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2b613e3b78527954", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/routes/v1/player/resesh/guilds.ts:53"}, "properties": {"repobilityId": "5eb77ca50faddc88", "scanner": "scanner-primary", "fingerprint": "2b613e3b78527954", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-505f4aaa7d2ac586", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-integrations/foundry-launch.ts:40"}, "properties": {"repobilityId": "5992fcdbcfec7498", "scanner": "scanner-primary", "fingerprint": "505f4aaa7d2ac586", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b368320b70f7809", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/player/campaign-integrations/foundry.ts:147"}, "properties": {"repobilityId": "eddc8336298e5965", "scanner": "scanner-primary", "fingerprint": "4b368320b70f7809", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fc9b366637df3074", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/v1/player/campaign-personas/invite-routes.ts:212"}, "properties": {"repobilityId": "01c5f592427e1ebc", "scanner": "scanner-primary", "fingerprint": "fc9b366637df3074", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef47b82f415c9d3d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/calendar/uptime-windows.ts:133"}, "properties": {"repobilityId": "b566e28f5f6ecab9", "scanner": "scanner-primary", "fingerprint": "ef47b82f415c9d3d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2e978b45651a5feb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/event-bindings.ts:178"}, "properties": {"repobilityId": "7647c6b35d4bfb83", "scanner": "scanner-primary", "fingerprint": "2e978b45651a5feb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9798354236820f3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/guild-member-search.ts:79"}, "properties": {"repobilityId": "dfb231398f4ee05d", "scanner": "scanner-primary", "fingerprint": "9798354236820f3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e28934a9ea9101cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/server-guide.ts:130"}, "properties": {"repobilityId": "72b9284f4cacea57", "scanner": "scanner-primary", "fingerprint": "e28934a9ea9101cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e75978926fde520", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/campaign-discord.ts:197"}, "properties": {"repobilityId": "c3205f85f02b3380", "scanner": "scanner-primary", "fingerprint": "4e75978926fde520", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cec3bff8c778c39e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/player/discord/voice-remote.ts:100"}, "properties": {"repobilityId": "2344752bcf8a4cf5", "scanner": "scanner-primary", "fingerprint": "cec3bff8c778c39e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a35e4739e715cc9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/player/discord/presence.ts:164"}, "properties": {"repobilityId": "cf83828eb0448581", "scanner": "scanner-primary", "fingerprint": "9a35e4739e715cc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfc248000802f350", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/account/worldanvil.ts:282"}, "properties": {"repobilityId": "2d4fb45c1eb31eb2", "scanner": "scanner-primary", "fingerprint": "cfc248000802f350", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea85ce4f39cd6e03", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/game-world-access.ts:82"}, "properties": {"repobilityId": "b579a00c23838987", "scanner": "scanner-primary", "fingerprint": "ea85ce4f39cd6e03", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-508a5f2513505200", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/account/foundry-users.ts:226"}, "properties": {"repobilityId": "f3b0b564931218be", "scanner": "scanner-primary", "fingerprint": "508a5f2513505200", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a0819c52c49ee45", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/foundry-management.ts:180"}, "properties": {"repobilityId": "5e916fc944c90b80", "scanner": "scanner-primary", "fingerprint": "0a0819c52c49ee45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eee58d946ba8e2d9", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/routes/v1/account/dock-preferences.ts:233"}, "properties": {"repobilityId": "d805758b270e2551", "scanner": "scanner-primary", "fingerprint": "eee58d946ba8e2d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45a537d756a77e0a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/account/foundry-package-install.ts:274"}, "properties": {"repobilityId": "9778fff8367cd3a5", "scanner": "scanner-primary", "fingerprint": "45a537d756a77e0a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6be117db40d0b5a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/game-worlds.ts:103"}, "properties": {"repobilityId": "b4623e5df72a449e", "scanner": "scanner-primary", "fingerprint": "6be117db40d0b5a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-651587ac1a1cd82b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/files.ts:91"}, "properties": {"repobilityId": "018d0623fc445c7c", "scanner": "scanner-primary", "fingerprint": "651587ac1a1cd82b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69688d9cb6794c1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/account/fermi-bootstrap.ts:102"}, "properties": {"repobilityId": "f837a09a42fccff9", "scanner": "scanner-primary", "fingerprint": "69688d9cb6794c1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a36fc282cf9cd483", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/account/payments.ts:134"}, "properties": {"repobilityId": "16cc79d8c0fefb2f", "scanner": "scanner-primary", "fingerprint": "a36fc282cf9cd483", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d61ca15e96d7af5c", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/routes/v1/account/terraria-management.ts:161"}, "properties": {"repobilityId": "eb590f83ff5a7aef", "scanner": "scanner-primary", "fingerprint": "d61ca15e96d7af5c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd29a0b477860610", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/routes/v1/account/installations.ts:202"}, "properties": {"repobilityId": "c67099cd9fd7aef3", "scanner": "scanner-primary", "fingerprint": "fd29a0b477860610", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-455ffd79bd5ab57c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/wallet.ts:267"}, "properties": {"repobilityId": "2876e85ddf4b3a68", "scanner": "scanner-primary", "fingerprint": "455ffd79bd5ab57c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ea0bc9ac5282828e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/account/profile/profile-crud.ts:294"}, "properties": {"repobilityId": "737ec0bb2e1b0e5b", "scanner": "scanner-primary", "fingerprint": "ea0bc9ac5282828e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-737916a3d6113347", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/admin/foundry.ts:251"}, "properties": {"repobilityId": "9d374f2bec19f03e", "scanner": "scanner-primary", "fingerprint": "737916a3d6113347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39304819cfab9413", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/admin/stats.ts:26"}, "properties": {"repobilityId": "ca7c16fa2019ba16", "scanner": "scanner-primary", "fingerprint": "39304819cfab9413", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1fb418d13e3dcdf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/v1/discord/linked-roles.ts:139"}, "properties": {"repobilityId": "f2cbf61249fad47d", "scanner": "scanner-primary", "fingerprint": "d1fb418d13e3dcdf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dea6638168bfe3e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/v1/discord/linked-roles.ts:158"}, "properties": {"repobilityId": "3d18f9ba32888a4f", "scanner": "scanner-primary", "fingerprint": "dea6638168bfe3e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a76537768af47704", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/v1/public/skills.ts:27"}, "properties": {"repobilityId": "44984fcbfb291fcf", "scanner": "scanner-primary", "fingerprint": "a76537768af47704", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-30607c70bbebf84c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/v1/public/pair.ts:230"}, "properties": {"repobilityId": "90bbc8f9e6e9a016", "scanner": "scanner-primary", "fingerprint": "30607c70bbebf84c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-58989bd85f370438", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/routes/internal/webhooks.ts:33"}, "properties": {"repobilityId": "e33b52b052e7227e", "scanner": "scanner-primary", "fingerprint": "58989bd85f370438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f6e3d594c9bb88f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/routes/internal/webhooks.ts:135"}, "properties": {"repobilityId": "6fe8ac53912bb875", "scanner": "scanner-primary", "fingerprint": "f6e3d594c9bb88f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f7f69a0b7581673", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/routes/internal/cron/discord-polling.ts:40"}, "properties": {"repobilityId": "ac41b543f20338d5", "scanner": "scanner-primary", "fingerprint": "4f7f69a0b7581673", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cfbea54b824fbaa8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/internal/disrecord/transcripts.ts:130"}, "properties": {"repobilityId": "a56c0c876ca0da8f", "scanner": "scanner-primary", "fingerprint": "cfbea54b824fbaa8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a89c3229b7d1add1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/routes/internal/disrecord/session-policy.ts:60"}, "properties": {"repobilityId": "568f567e68eac94c", "scanner": "scanner-primary", "fingerprint": "a89c3229b7d1add1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-755ddc369c4b2e4d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/routes/internal/disrecord/billing.ts:80"}, "properties": {"repobilityId": "5e52349b50a529cb", "scanner": "scanner-primary", "fingerprint": "755ddc369c4b2e4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f578dbd16a0feaab", "level": "note", "message": {"text": "Legacy-named symbol `core_game_creatures_legacy` in prisma/migrate-to-canonical-entities.ts:72"}, "properties": {"repobilityId": "786d3d8af239de1f", "scanner": "scanner-primary", "fingerprint": "f578dbd16a0feaab", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5fa5af25316da646", "level": "note", "message": {"text": "16 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "e0919a3f6a45e8c2", "scanner": "scanner-primary", "fingerprint": "5fa5af25316da646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-9ee76fba267a7e55", "level": "error", "message": {"text": "Dangling fetch: PUT https://discord.com/api/v10/channels/${channelId}/permissions/${overwriteId} (src/clients/discord/guild-api.ts:467)"}, "properties": {"repobilityId": "32f5e7cea21292a3", "scanner": "scanner-primary", "fingerprint": "9ee76fba267a7e55", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b9957c2904364ef9", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/oauth2/token (src/routes/config.ts:65)"}, "properties": {"repobilityId": "b203d3f203807eb8", "scanner": "scanner-primary", "fingerprint": "b9957c2904364ef9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-6ebf94fdf9ed1d7d", "level": "error", "message": {"text": "Dangling fetch: GET https://www.worldanvil.com/api/aragorn/user (src/routes/v1/account/worldanvil.ts:282)"}, "properties": {"repobilityId": "7d23f8d80c1b0666", "scanner": "scanner-primary", "fingerprint": "6ebf94fdf9ed1d7d", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-dc32d8c0dccd8692", "level": "error", "message": {"text": "Dangling fetch: GET http://${containerName}:${internalPort}/api/ping (src/routes/v1/admin/chat-setup.ts:72)"}, "properties": {"repobilityId": "873dd55c206014d7", "scanner": "scanner-primary", "fingerprint": "dc32d8c0dccd8692", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-98fd84ebd439e42e", "level": "error", "message": {"text": "Dangling fetch: POST https://discord.com/api/v10/oauth2/token (src/routes/v1/discord/linked-roles.ts:158)"}, "properties": {"repobilityId": "413850689023ff43", "scanner": "scanner-primary", "fingerprint": "98fd84ebd439e42e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-142a4d1f48f7a5d6", "level": "error", "message": {"text": "Dangling fetch: GET https://discord.com/api/v10/users/@me (src/routes/v1/discord/linked-roles.ts:178)"}, "properties": {"repobilityId": "2d3aef8d1bc2a6d9", "scanner": "scanner-primary", "fingerprint": "142a4d1f48f7a5d6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-4756b4c4da7d2088", "level": "note", "message": {"text": "Unused endpoint: GET /api/health"}, "properties": {"repobilityId": "6efcf1b9cc1c7b4d", "scanner": "scanner-primary", "fingerprint": "4756b4c4da7d2088", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7aa4b2518cbbbfa2", "level": "note", "message": {"text": "Unused endpoint: GET /api/config"}, "properties": {"repobilityId": "b8b2fb5bd15dba05", "scanner": "scanner-primary", "fingerprint": "7aa4b2518cbbbfa2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c61070ac91c76ef5", "level": "note", "message": {"text": "Unused endpoint: POST /api/config/token"}, "properties": {"repobilityId": "2fa6560e960ec06d", "scanner": "scanner-primary", "fingerprint": "c61070ac91c76ef5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8eadc51da6e2e46b", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/dice"}, "properties": {"repobilityId": "3552807b09ddc765", "scanner": "scanner-primary", "fingerprint": "8eadc51da6e2e46b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d84e7df73a95b8a6", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/instances/:instanceType/:instanceId/roles"}, "properties": {"repobilityId": "85e94ffeaedb4d3d", "scanner": "scanner-primary", "fingerprint": "d84e7df73a95b8a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-afff1899c6f0e888", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/instances/:instanceType/:instanceId/roles"}, "properties": {"repobilityId": "495e59e6b593950b", "scanner": "scanner-primary", "fingerprint": "afff1899c6f0e888", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fcd1a0db4f067e67", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/instances/:instanceType/:instanceId/roles"}, "properties": {"repobilityId": "bbfa4ed8bb69ecec", "scanner": "scanner-primary", "fingerprint": "fcd1a0db4f067e67", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ebce806980954a1f", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew"}, "properties": {"repobilityId": "61bc1069140975a0", "scanner": "scanner-primary", "fingerprint": "ebce806980954a1f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a6dc013ed66adf6", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew"}, "properties": {"repobilityId": "ea5ab48200734b02", "scanner": "scanner-primary", "fingerprint": "2a6dc013ed66adf6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2d4c3e7190079051", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId"}, "properties": {"repobilityId": "f5e7222281b61901", "scanner": "scanner-primary", "fingerprint": "2d4c3e7190079051", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3a14781b879437e3", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId/approve"}, "properties": {"repobilityId": "9801caf90bf6c183", "scanner": "scanner-primary", "fingerprint": "3a14781b879437e3", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2f37d7a59323a3ee", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/homebrew/:homebrewId"}, "properties": {"repobilityId": "1f9bead86920d455", "scanner": "scanner-primary", "fingerprint": "2f37d7a59323a3ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90a00b4790ea102c", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources"}, "properties": {"repobilityId": "7288010b3f14d9b7", "scanner": "scanner-primary", "fingerprint": "90a00b4790ea102c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c473b85f22f1c902", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources"}, "properties": {"repobilityId": "aaf36389569f214f", "scanner": "scanner-primary", "fingerprint": "c473b85f22f1c902", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b0e69e429b0b3936", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug"}, "properties": {"repobilityId": "7d097e5289cbeaa6", "scanner": "scanner-primary", "fingerprint": "b0e69e429b0b3936", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-162c8af77387e958", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug"}, "properties": {"repobilityId": "f942791b044248fc", "scanner": "scanner-primary", "fingerprint": "162c8af77387e958", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a395cab6d9486448", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug"}, "properties": {"repobilityId": "0031713ad03f0766", "scanner": "scanner-primary", "fingerprint": "a395cab6d9486448", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-614493e90b77a3ef", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/submit-for-review"}, "properties": {"repobilityId": "e726e4fd13966ab0", "scanner": "scanner-primary", "fingerprint": "614493e90b77a3ef", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9fa0cfa8fdffe926", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/withdraw-review"}, "properties": {"repobilityId": "f1c17b138e99599c", "scanner": "scanner-primary", "fingerprint": "9fa0cfa8fdffe926", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8574fc4bb5b57e5", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/chat-settings"}, "properties": {"repobilityId": "635e7b7fc9a8555d", "scanner": "scanner-primary", "fingerprint": "b8574fc4bb5b57e5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4d6edaf9c29441b6", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/chat-settings"}, "properties": {"repobilityId": "1314db01b05c1ee6", "scanner": "scanner-primary", "fingerprint": "4d6edaf9c29441b6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb8fac24b573fa80", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/compendium-sources/:slug/collaboration-sessions"}, "properties": {"repobilityId": "14123d75ee9720d3", "scanner": "scanner-primary", "fingerprint": "cb8fac24b573fa80", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8bf510fbabe42d36", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/compendium-sources/:slug/collaboration-sessions"}, "properties": {"repobilityId": "295830b44436aebf", "scanner": "scanner-primary", "fingerprint": "8bf510fbabe42d36", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5b041827375cbbb7", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id"}, "properties": {"repobilityId": "27ceac93567fe1a3", "scanner": "scanner-primary", "fingerprint": "5b041827375cbbb7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-24b28d09ccd7568d", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/compendium-sources/:slug/collaboration-sessions/:id"}, "properties": {"repobilityId": "7ddaae3532cbceed", "scanner": "scanner-primary", "fingerprint": "24b28d09ccd7568d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b867b79f31ef8f0b", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat"}, "properties": {"repobilityId": "f4d174cb7e15d844", "scanner": "scanner-primary", "fingerprint": "b867b79f31ef8f0b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f4d3beb1e94bba94", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/from-chat"}, "properties": {"repobilityId": "3c1ea06f78626551", "scanner": "scanner-primary", "fingerprint": "f4d3beb1e94bba94", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-68b8da2c854db465", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log"}, "properties": {"repobilityId": "015cc050d0c967fc", "scanner": "scanner-primary", "fingerprint": "68b8da2c854db465", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-565b8d8b70a410a6", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log"}, "properties": {"repobilityId": "42355228aa68259d", "scanner": "scanner-primary", "fingerprint": "565b8d8b70a410a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-634aac788712a65c", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/scenes/:sceneId/log/:entryId"}, "properties": {"repobilityId": "44c205f2e24b25d9", "scanner": "scanner-primary", "fingerprint": "634aac788712a65c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-763bd90babe2e0e7", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests"}, "properties": {"repobilityId": "25d578743710d533", "scanner": "scanner-primary", "fingerprint": "763bd90babe2e0e7", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86aa8b050e49944e", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/quests"}, "properties": {"repobilityId": "0a6276a300351ba3", "scanner": "scanner-primary", "fingerprint": "86aa8b050e49944e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a39a8626971f1a50", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/quests/:questId"}, "properties": {"repobilityId": "c523da3cf528594b", "scanner": "scanner-primary", "fingerprint": "a39a8626971f1a50", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fcf4b888c49450a6", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/quests/:questId"}, "properties": {"repobilityId": "35b6e2326aab84b9", "scanner": "scanner-primary", "fingerprint": "fcf4b888c49450a6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c53cedfb0f67a619", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/quests/:questId"}, "properties": {"repobilityId": "b46e2c28d01694ef", "scanner": "scanner-primary", "fingerprint": "c53cedfb0f67a619", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bf1160ff6ef2cbee", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/rules"}, "properties": {"repobilityId": "8efc6d18b8fb0804", "scanner": "scanner-primary", "fingerprint": "bf1160ff6ef2cbee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b171b513248a943a", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/rules"}, "properties": {"repobilityId": "3b893d21f0e6e5f6", "scanner": "scanner-primary", "fingerprint": "b171b513248a943a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4b9d6035d539640c", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/rules/:ruleId"}, "properties": {"repobilityId": "9956f30e768e17aa", "scanner": "scanner-primary", "fingerprint": "4b9d6035d539640c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a1b82da68987eadb", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/rules/:ruleId"}, "properties": {"repobilityId": "1f39037421edcfc3", "scanner": "scanner-primary", "fingerprint": "a1b82da68987eadb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-49b42d4a828e7754", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables"}, "properties": {"repobilityId": "65653aebd43b7f1e", "scanner": "scanner-primary", "fingerprint": "49b42d4a828e7754", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c1a010183977480b", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables"}, "properties": {"repobilityId": "2e0210358a1aa9d4", "scanner": "scanner-primary", "fingerprint": "c1a010183977480b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-add6517107b03aad", "level": "note", "message": {"text": "Unused endpoint: POST /api/v1/player/campaigns/:campaignId/tables/:tableId/roll"}, "properties": {"repobilityId": "8f27ef19d6369f10", "scanner": "scanner-primary", "fingerprint": "add6517107b03aad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-32f1312da84791fe", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "properties": {"repobilityId": "eee122d138420128", "scanner": "scanner-primary", "fingerprint": "32f1312da84791fe", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-807e3ed6edad0620", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "properties": {"repobilityId": "247bf2d4e48fb521", "scanner": "scanner-primary", "fingerprint": "807e3ed6edad0620", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-e2ca45c568f62a47", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/v1/player/campaigns/:campaignId/tables/:tableId"}, "properties": {"repobilityId": "2e6541e1416aa2fa", "scanner": "scanner-primary", "fingerprint": "e2ca45c568f62a47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99119dac71d0ff83", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/key-terms"}, "properties": {"repobilityId": "36e81087865897dd", "scanner": "scanner-primary", "fingerprint": "99119dac71d0ff83", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9278827a01708112", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms"}, "properties": {"repobilityId": "2ddeeff173c2436d", "scanner": "scanner-primary", "fingerprint": "9278827a01708112", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6cdbf82d43b37da", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/v1/player/campaigns/:id/parties/:partyId/key-terms"}, "properties": {"repobilityId": "5adcb30e02a4b008", "scanner": "scanner-primary", "fingerprint": "c6cdbf82d43b37da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-707db4455866bd4a", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/parties/:partyId/key-terms"}, "properties": {"repobilityId": "324d35502164d80d", "scanner": "scanner-primary", "fingerprint": "707db4455866bd4a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-60fffed854936b62", "level": "note", "message": {"text": "Unused endpoint: GET /api/v1/player/campaigns/:id/key-terms/preview"}, "properties": {"repobilityId": "961460bd1c20cc42", "scanner": "scanner-primary", "fingerprint": "60fffed854936b62", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}