{"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-4137a64b0febbca1", "name": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/util/expressionMightMutate.ts:14", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/util/expressionMightMutate.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-711326fce9397064", "name": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/nodes/expressions/transformElementAccessExpre", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/nodes/expressions/transformElementAccessExpression.ts:32"}, "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-5aca4dc29cf2bc1a", "name": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/CLI/util/patchFs.ts:5", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/CLI/util/patchFs.ts:5"}, "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-04bcf0ae39b07b6d", "name": "Stray `console.log` in TS/JS \u2014 reference/luau-ast/src/LuauRenderer/render.ts:118", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 reference/luau-ast/src/LuauRenderer/render.ts:118"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38bfeb8948691390", "name": "TODO/FIXME marker in shipping code \u2014 reference/luau-ast/src/LuauAST/impl/typeGuards.ts:78", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 reference/luau-ast/src/LuauAST/impl/typeGuards.ts:78"}, "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-486ab48841c80ee3", "name": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.webworker.d.ts:14723", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.webworker.d.ts:14723"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f1d995f4476ac74a", "name": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.decorators.d.ts:129", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.decorators.d.ts:129"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48f9b16f918f76d8", "name": "Stray `console.log` in TS/JS \u2014 scripts/install.test.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/install.test.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ed4ad74ac4c4c16b", "name": "Stray `console.log` in TS/JS \u2014 tools/sidecar/main.js:4", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sidecar/main.js:4"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-347e72c82aee160e", "name": "Stray `console.log` in TS/JS \u2014 tools/sidecar/test/sidecar.test.js:169", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/sidecar/test/sidecar.test.js:169"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82351a2dceaad1aa", "name": "Dockerfile runs as root: reference/roblox-ts/.devcontainer/Dockerfile", "shortDescription": {"text": "Dockerfile runs as root: reference/roblox-ts/.devcontainer/Dockerfile"}, "fullDescription": {"text": "No non-root USER set. Containers running as root expand the blast radius of any vulnerability inside the image."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3986e163a4cd46a2", "name": "Docker base image uses a mutable or implicit tag: node:latest", "shortDescription": {"text": "Docker base image uses a mutable or implicit tag: node:latest"}, "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": "medium", "confidence": 1.0}}, {"id": "scanner-aa5acaa49eb8315b", "name": "Containers defined but no K8s/orchestration manifest found", "shortDescription": {"text": "Containers defined but no K8s/orchestration manifest found"}, "fullDescription": {"text": "Repo has Dockerfiles/compose but no Kubernetes/Nomad manifests. If the target deployment is K8s, the manifests may live in a separate ops repo."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9710c8d059e53154", "name": "No frontend routes/components detected", "shortDescription": {"text": "No frontend routes/components detected"}, "fullDescription": {"text": "No React/Vue/Next routes were found. This is fine for backend-only repos."}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3ce8a691573bdeae", "name": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env.studio", "shortDescription": {"text": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env.studio"}, "fullDescription": {"text": "`internal/compile/testdata/env_model/.env.studio` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c823d83938e1171d", "name": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env", "shortDescription": {"text": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env"}, "fullDescription": {"text": "`internal/compile/testdata/env_model/.env` looks like a runtime dotenv file. No high-confidence secret value was matched, but runtime dotenv files often drift into live credentials. Move real values to a secret manager and keep only `.env.example` style templates in source control."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ec612074a4aa6e1d", "name": "Insecure pattern 'node_child_process' in reference/roblox-ts/src/TSTransformer/util/assertNever.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in reference/roblox-ts/src/TSTransformer/util/assertNever.ts:1"}, "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-1506954df5ce0af0", "name": "Insecure pattern 'node_child_process' in scripts/install.test.js:28", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/install.test.js:28"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cdb41d451dfb3049", "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-03fd3f7ddfb27215", "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@v2.3.4 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-b5b47d61b9faedfc", "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@v2.3.4 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-e746dd5a0c537ec4", "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@v2.3.4 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-4fd04c4729f806c8", "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-be18df82adb5a6ba", "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@v2.3.4 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-e3f192d2dc633888", "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@v2.3.4 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-40fa29db8878fd3f", "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@v2.3.4 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-79f4ceded6e06993", "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-52e1310d78cb7925", "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-1766eea40d73538c", "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@v2.3.4 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-ead31cc192175591", "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-e66b9b5ab5422f7e", "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@v2.3.4 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-5d483f4b699dd5d8", "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@v2.3.4 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-98248635a13a66dd", "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@v2.3.4 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-ac14a06d34722a3f", "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-4049b7574aa63f57", "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@v2.3.4 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-d220919e55d8ed04", "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@v2.3.4 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-7a180219d183f972", "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@v2.3.4 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-fa9b995646930c75", "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-0fe2cc8022e468a5", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-27924aa79fa4a517", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/checkout@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-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-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-065f0b8963774209", "name": "Very large file: tsgo/compiler/program.go (2164 lines)", "shortDescription": {"text": "Very large file: tsgo/compiler/program.go (2164 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a13c317d42999901", "name": "Very large file: tsgo/ast/utilities.go (4549 lines)", "shortDescription": {"text": "Very large file: tsgo/ast/utilities.go (4549 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6c0d9e87b1fc0f9", "name": "Very large file: tsgo/ast/ast_generated.go (9884 lines)", "shortDescription": {"text": "Very large file: tsgo/ast/ast_generated.go (9884 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-51f8628d1958091e", "name": "Very large file: tsgo/ast/ast.go (3002 lines)", "shortDescription": {"text": "Very large file: tsgo/ast/ast.go (3002 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b05686eee2dc3c96", "name": "Very large file: tsgo/module/resolver.go (2361 lines)", "shortDescription": {"text": "Very large file: tsgo/module/resolver.go (2361 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1dee43e09dc604d2", "name": "Very large file: tsgo/fourslash/fourslash.go (5718 lines)", "shortDescription": {"text": "Very large file: tsgo/fourslash/fourslash.go (5718 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9d0b3f277769f23a", "name": "Very large file: tsgo/fourslash/tests/util/util.go (1570 lines)", "shortDescription": {"text": "Very large file: tsgo/fourslash/tests/util/util.go (1570 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3863769ed0cee1f7", "name": "Very large file: tsgo/binder/binder.go (2805 lines)", "shortDescription": {"text": "Very large file: tsgo/binder/binder.go (2805 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-add45d7690ed22a2", "name": "Very large file: tsgo/api/session.go (2216 lines)", "shortDescription": {"text": "Very large file: tsgo/api/session.go (2216 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bc2d511c750aab8b", "name": "Very large file: tsgo/transformers/moduletransforms/commonjsmodule.go (2160 lines)", "shortDescription": {"text": "Very large file: tsgo/transformers/moduletransforms/commonjsmodule.go (2160 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f130c4525ac64e38", "name": "Very large file: tsgo/transformers/declarations/transform.go (2406 lines)", "shortDescription": {"text": "Very large file: tsgo/transformers/declarations/transform.go (2406 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1425fc54063b2d13", "name": "Very large file: tsgo/transformers/estransforms/classfields.go (3618 lines)", "shortDescription": {"text": "Very large file: tsgo/transformers/estransforms/classfields.go (3618 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2baab711c5cd4c2c", "name": "Very large file: tsgo/transformers/estransforms/esdecorator.go (2751 lines)", "shortDescription": {"text": "Very large file: tsgo/transformers/estransforms/esdecorator.go (2751 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-48e3e7a1be349fe0", "name": "Very large file: tsgo/modulespecifiers/specifiers.go (1397 lines)", "shortDescription": {"text": "Very large file: tsgo/modulespecifiers/specifiers.go (1397 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a16ff675f063c1d", "name": "Very large file: tsgo/bundled/libs/lib.webworker.d.ts (15606 lines)", "shortDescription": {"text": "Very large file: tsgo/bundled/libs/lib.webworker.d.ts (15606 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0183dfbb5e24a8c0", "name": "Very large file: tsgo/bundled/libs/lib.es5.d.ts (4599 lines)", "shortDescription": {"text": "Very large file: tsgo/bundled/libs/lib.es5.d.ts (4599 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8a373ef1babd67e8", "name": "Very large file: tsgo/printer/printer.go (6268 lines)", "shortDescription": {"text": "Very large file: tsgo/printer/printer.go (6268 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9e708191ab670213", "name": "Very large file: tsgo/diagnostics/diagnostics_generated.go (8622 lines)", "shortDescription": {"text": "Very large file: tsgo/diagnostics/diagnostics_generated.go (8622 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-73554f922cf56613", "name": "Very large file: tsgo/scanner/scanner.go (2882 lines)", "shortDescription": {"text": "Very large file: tsgo/scanner/scanner.go (2882 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-36f37891919b6243", "name": "Very large file: tsgo/ls/signaturehelp.go (1416 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/signaturehelp.go (1416 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e95d9a854d63285", "name": "Very large file: tsgo/ls/findallreferences.go (2551 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/findallreferences.go (2551 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-496e4903a605be99", "name": "Very large file: tsgo/ls/completions.go (6224 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/completions.go (6224 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-674f75d2b1f4b8a7", "name": "Very large file: tsgo/ls/utilities.go (1404 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/utilities.go (1404 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f5e059d4d5ad35e0", "name": "Very large file: tsgo/ls/string_completions.go (2201 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/string_completions.go (2201 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4993e19e8ad5473a", "name": "Very large file: tsgo/ls/codeactions_fixmissingtypeannotation.go (1426 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/codeactions_fixmissingtypeannotation.go (1426 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-981db0b6a38f3dcd", "name": "Very large file: tsgo/ls/autoimport/fix.go (1314 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/autoimport/fix.go (1314 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-50fa82f77afd18b5", "name": "Very large file: tsgo/ls/autoimport/registry.go (1838 lines)", "shortDescription": {"text": "Very large file: tsgo/ls/autoimport/registry.go (1838 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-705c7b7a2071fd5e", "name": "Very large file: tsgo/checker/jsx.go (1479 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/jsx.go (1479 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-565adcd3499bacfc", "name": "Very large file: tsgo/checker/relater.go (4985 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/relater.go (4985 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-beb7a5c4556badea", "name": "Very large file: tsgo/checker/types.go (1447 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/types.go (1447 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-41f871d99e47c132", "name": "Very large file: tsgo/checker/utilities.go (1829 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/utilities.go (1829 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3fba61ea3bf0ccc9", "name": "Very large file: tsgo/checker/flow.go (2734 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/flow.go (2734 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-654828530fb71057", "name": "Very large file: tsgo/checker/emitresolver.go (1292 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/emitresolver.go (1292 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ec9bf34fc3a2c1f6", "name": "Very large file: tsgo/checker/grammarchecks.go (2202 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/grammarchecks.go (2202 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2e53c99bff161ec", "name": "Very large file: tsgo/checker/nodebuilderimpl.go (3556 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/nodebuilderimpl.go (3556 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5f5f2fd40459783c", "name": "Very large file: tsgo/checker/inference.go (1627 lines)", "shortDescription": {"text": "Very large file: tsgo/checker/inference.go (1627 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa16a1e88e06cce0", "name": "Very large file: tsgo/tsoptions/tsconfigparsing.go (1822 lines)", "shortDescription": {"text": "Very large file: tsgo/tsoptions/tsconfigparsing.go (1822 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-790d9a49de0e160e", "name": "Very large file: tsgo/tsoptions/declscompiler.go (1264 lines)", "shortDescription": {"text": "Very large file: tsgo/tsoptions/declscompiler.go (1264 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e05d8409d1abe478", "name": "Very large file: tsgo/lsp/server.go (1822 lines)", "shortDescription": {"text": "Very large file: tsgo/lsp/server.go (1822 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-82d47f94ea6a5322", "name": "Very large file: tsgo/parser/parser.go (6822 lines)", "shortDescription": {"text": "Very large file: tsgo/parser/parser.go (6822 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea68f27a47924e4f", "name": "Very large file: tsgo/project/session.go (1843 lines)", "shortDescription": {"text": "Very large file: tsgo/project/session.go (1843 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-098ef62e6d3a5e7d", "name": "214 TODO/FIXME markers", "shortDescription": {"text": "214 TODO/FIXME markers"}, "fullDescription": {"text": "High count of TODO/FIXME/HACK markers \u2014 track them as issues so they're not forgotten."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4640b472b0739d8e", "name": "Node manifest has dependencies but no lockfile: testdata/transformers/project/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: testdata/transformers/project/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 634 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 395 placeholder/mock markers across 53 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ace8e2858877ab2", "name": "Commented-code block (11 lines) in reference/roblox-ts/tests/src/tests/map.spec.ts:139", "shortDescription": {"text": "Commented-code block (11 lines) in reference/roblox-ts/tests/src/tests/map.spec.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-40c701d9c2425c1c", "name": "Commented-code block (6 lines) in reference/roblox-ts/tests/src/tests/roact.spec.tsx:134", "shortDescription": {"text": "Commented-code block (6 lines) in reference/roblox-ts/tests/src/tests/roact.spec.tsx:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cf8553fa074a4c3", "name": "Commented-code block (5 lines) in reference/roblox-ts/src/TSTransformer/nodes/statements/transformForStatement.ts:228", "shortDescription": {"text": "Commented-code block (5 lines) in reference/roblox-ts/src/TSTransformer/nodes/statements/transformForStatement.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-ae0b480babe17a99", "name": "Commented-code block (11 lines) in testdata/conformance/project/src/tests/map.spec.ts:139", "shortDescription": {"text": "Commented-code block (11 lines) in testdata/conformance/project/src/tests/map.spec.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-57e244da8d081f4d", "name": "Commented-code block (6 lines) in testdata/conformance/project/src/tests/roact.spec.tsx:134", "shortDescription": {"text": "Commented-code block (6 lines) in testdata/conformance/project/src/tests/roact.spec.tsx:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8fabd9ca011754fe", "name": "Commented-code block (5 lines) in testdata/diff/project/src/39_mixed3c.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in testdata/diff/project/src/39_mixed3c.tsx:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dc9add1873ef6a41", "name": "`fetch()` without try/.catch or AbortSignal \u2014 tsgo/bundled/libs/lib.webworker.d.ts:5205", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tsgo/bundled/libs/lib.webworker.d.ts:5205"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-95053a1818f3bdd3", "name": "Commented-code block (5 lines) in internal/compile/testdata/asset_model/src/globals.d.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in internal/compile/testdata/asset_model/src/globals.d.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6351df77f4ef92fe", "name": "Commented-code block (5 lines) in internal/compile/testdata/env_model/src/globals.d.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in internal/compile/testdata/env_model/src/globals.d.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-469f074e9332a2b3", "name": "Commented-code block (5 lines) in internal/transformer/testdata/jsx/src/jsx.d.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in internal/transformer/testdata/jsx/src/jsx.d.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-fd10495eb682d4a9", "name": "Commented-code block (9 lines) in internal/transformer/testdata/typeprobe/src/refs.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in internal/transformer/testdata/typeprobe/src/refs.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-35ee877331624cac", "name": "Commented-code block (7 lines) in internal/transformer/testdata/casehoist/src/case.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in internal/transformer/testdata/casehoist/src/case.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-29f5b24f7f47e4c7", "name": "Commented-code block (7 lines) in internal/transformer/testdata/macroonly/src/globals.d.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in internal/transformer/testdata/macroonly/src/globals.d.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-0eda79e00bacf09b", "name": "Commented-code block (10 lines) in scripts/install.test.js:7", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/install.test.js:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21975"}, "properties": {"repository": "uproot/rotor", "repoUrl": "https://github.com/uproot/rotor", "branch": "main"}, "results": [{"ruleId": "scanner-4137a64b0febbca1", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/util/expressionMightMutate.ts:14"}, "properties": {"repobilityId": "1d79d3c24a243054", "scanner": "scanner-primary", "fingerprint": "4137a64b0febbca1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-711326fce9397064", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/TSTransformer/nodes/expressions/transformElementAccessExpression.ts:32"}, "properties": {"repobilityId": "ed3b4bcf47e6d465", "scanner": "scanner-primary", "fingerprint": "711326fce9397064", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-5aca4dc29cf2bc1a", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 reference/roblox-ts/src/CLI/util/patchFs.ts:5"}, "properties": {"repobilityId": "09340c1c06d2394d", "scanner": "scanner-primary", "fingerprint": "5aca4dc29cf2bc1a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-04bcf0ae39b07b6d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 reference/luau-ast/src/LuauRenderer/render.ts:118"}, "properties": {"repobilityId": "a02b443a6d1d5e80", "scanner": "scanner-primary", "fingerprint": "04bcf0ae39b07b6d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38bfeb8948691390", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 reference/luau-ast/src/LuauAST/impl/typeGuards.ts:78"}, "properties": {"repobilityId": "fcef7edce731a502", "scanner": "scanner-primary", "fingerprint": "38bfeb8948691390", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-486ab48841c80ee3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.webworker.d.ts:14723"}, "properties": {"repobilityId": "615b42433b0ccc82", "scanner": "scanner-primary", "fingerprint": "486ab48841c80ee3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f1d995f4476ac74a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tsgo/bundled/libs/lib.decorators.d.ts:129"}, "properties": {"repobilityId": "e4f9d2f41e6f8b00", "scanner": "scanner-primary", "fingerprint": "f1d995f4476ac74a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-48f9b16f918f76d8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/install.test.js:44"}, "properties": {"repobilityId": "720c639b16a798dd", "scanner": "scanner-primary", "fingerprint": "48f9b16f918f76d8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed4ad74ac4c4c16b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sidecar/main.js:4"}, "properties": {"repobilityId": "33acc9e48aad3183", "scanner": "scanner-primary", "fingerprint": "ed4ad74ac4c4c16b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-347e72c82aee160e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/sidecar/test/sidecar.test.js:169"}, "properties": {"repobilityId": "a60a25c4fc8d0c36", "scanner": "scanner-primary", "fingerprint": "347e72c82aee160e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-82351a2dceaad1aa", "level": "warning", "message": {"text": "Dockerfile runs as root: reference/roblox-ts/.devcontainer/Dockerfile"}, "properties": {"repobilityId": "28c2f6b5dd0ca406", "scanner": "scanner-primary", "fingerprint": "82351a2dceaad1aa", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["security", "container"]}}, {"ruleId": "scanner-3986e163a4cd46a2", "level": "warning", "message": {"text": "Docker base image uses a mutable or implicit tag: node:latest"}, "properties": {"repobilityId": "774d5286a56fceed", "scanner": "scanner-primary", "fingerprint": "3986e163a4cd46a2", "layer": "hardware", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.devcontainer/Dockerfile"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-aa5acaa49eb8315b", "level": "note", "message": {"text": "Containers defined but no K8s/orchestration manifest found"}, "properties": {"repobilityId": "b230ea9b68736081", "scanner": "scanner-primary", "fingerprint": "aa5acaa49eb8315b", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["coverage", "deployment"]}}, {"ruleId": "scanner-9710c8d059e53154", "level": "none", "message": {"text": "No frontend routes/components detected"}, "properties": {"repobilityId": "44ca61485762e494", "scanner": "scanner-primary", "fingerprint": "9710c8d059e53154", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-3ce8a691573bdeae", "level": "error", "message": {"text": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env.studio"}, "properties": {"repobilityId": "df55bf8e035515fc", "scanner": "scanner-primary", "fingerprint": "3ce8a691573bdeae", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "internal/compile/testdata/env_model/.env.studio"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c823d83938e1171d", "level": "error", "message": {"text": "Runtime dotenv file present in repo: internal/compile/testdata/env_model/.env"}, "properties": {"repobilityId": "3ce6982cb8cfe82d", "scanner": "scanner-primary", "fingerprint": "c823d83938e1171d", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["secrets", "config", "env-file", "runtime-env"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "internal/compile/testdata/env_model/.env"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec612074a4aa6e1d", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in reference/roblox-ts/src/TSTransformer/util/assertNever.ts:1"}, "properties": {"repobilityId": "7f3f041d0ddae64a", "scanner": "scanner-primary", "fingerprint": "ec612074a4aa6e1d", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/src/TSTransformer/util/assertNever.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1506954df5ce0af0", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/install.test.js:28"}, "properties": {"repobilityId": "35a3774d5dd23ceb", "scanner": "scanner-primary", "fingerprint": "1506954df5ce0af0", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/install.test.js"}, "region": {"startLine": 28}}}]}, {"ruleId": "scanner-cdb41d451dfb3049", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a82d8e7207fd55ea", "scanner": "scanner-primary", "fingerprint": "cdb41d451dfb3049", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/UnitTests.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-cdb41d451dfb3049", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a82d8e7207fd55ea", "scanner": "scanner-primary", "fingerprint": "cdb41d451dfb3049", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/UnitTests.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-cdb41d451dfb3049", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b74e1da6a16d8552", "scanner": "scanner-primary", "fingerprint": "cdb41d451dfb3049", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/UnitTests.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-03fd3f7ddfb27215", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d7f6dd159234d821", "scanner": "scanner-primary", "fingerprint": "03fd3f7ddfb27215", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/Build.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-03fd3f7ddfb27215", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4b7180286d35865", "scanner": "scanner-primary", "fingerprint": "03fd3f7ddfb27215", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/Build.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-b5b47d61b9faedfc", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ab57b868116542d9", "scanner": "scanner-primary", "fingerprint": "b5b47d61b9faedfc", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/Publish.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-b5b47d61b9faedfc", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b5bf892ad9c524b4", "scanner": "scanner-primary", "fingerprint": "b5b47d61b9faedfc", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/Publish.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-e746dd5a0c537ec4", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b319f7daf05161ca", "scanner": "scanner-primary", "fingerprint": "e746dd5a0c537ec4", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/ESLint.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e746dd5a0c537ec4", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a2f687555ab07753", "scanner": "scanner-primary", "fingerprint": "e746dd5a0c537ec4", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/path-translator/.github/workflows/ESLint.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-4fd04c4729f806c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "27c94ce25f5660e1", "scanner": "scanner-primary", "fingerprint": "4fd04c4729f806c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/UnitTests.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-4fd04c4729f806c8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fb1a86eba3b8be02", "scanner": "scanner-primary", "fingerprint": "4fd04c4729f806c8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/UnitTests.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-4fd04c4729f806c8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4f06e1207396c91", "scanner": "scanner-primary", "fingerprint": "4fd04c4729f806c8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/UnitTests.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-4fd04c4729f806c8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "1ed78c13229a4226", "scanner": "scanner-primary", "fingerprint": "4fd04c4729f806c8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/UnitTests.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-4fd04c4729f806c8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "80b6311f6ae7d6e1", "scanner": "scanner-primary", "fingerprint": "4fd04c4729f806c8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/UnitTests.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-be18df82adb5a6ba", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e4f1676229d6d8ce", "scanner": "scanner-primary", "fingerprint": "be18df82adb5a6ba", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/Build.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-be18df82adb5a6ba", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "a39b601e711d0f52", "scanner": "scanner-primary", "fingerprint": "be18df82adb5a6ba", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/Build.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-e3f192d2dc633888", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "b4bf6a9bac72d2df", "scanner": "scanner-primary", "fingerprint": "e3f192d2dc633888", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/Publish.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-e3f192d2dc633888", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7bb33b1ad5c6f30b", "scanner": "scanner-primary", "fingerprint": "e3f192d2dc633888", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/Publish.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-40fa29db8878fd3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "db4a9e5c76ffd965", "scanner": "scanner-primary", "fingerprint": "40fa29db8878fd3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/ESLint.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-40fa29db8878fd3f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7183aa6965aec832", "scanner": "scanner-primary", "fingerprint": "40fa29db8878fd3f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/ESLint.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-79f4ceded6e06993", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f66cbce310687a0", "scanner": "scanner-primary", "fingerprint": "79f4ceded6e06993", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/TestTemplateProject.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-52e1310d78cb7925", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b42523bca1822a9", "scanner": "scanner-primary", "fingerprint": "52e1310d78cb7925", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/BuildPlayground.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-52e1310d78cb7925", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0b42523bca1822a9", "scanner": "scanner-primary", "fingerprint": "52e1310d78cb7925", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/BuildPlayground.yml"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-1766eea40d73538c", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c58d5fead6b4f02", "scanner": "scanner-primary", "fingerprint": "1766eea40d73538c", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/PublishNext.yml"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-1766eea40d73538c", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "86b42b6902eac204", "scanner": "scanner-primary", "fingerprint": "1766eea40d73538c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/roblox-ts/.github/workflows/PublishNext.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-ead31cc192175591", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fc58857753de113", "scanner": "scanner-primary", "fingerprint": "ead31cc192175591", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/UnitTests.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-ead31cc192175591", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fc58857753de113", "scanner": "scanner-primary", "fingerprint": "ead31cc192175591", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/UnitTests.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-ead31cc192175591", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5aaf191bada3c47f", "scanner": "scanner-primary", "fingerprint": "ead31cc192175591", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/UnitTests.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-e66b9b5ab5422f7e", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f96e09dae56493b2", "scanner": "scanner-primary", "fingerprint": "e66b9b5ab5422f7e", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/Build.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-e66b9b5ab5422f7e", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "5609c4e71ddf412f", "scanner": "scanner-primary", "fingerprint": "e66b9b5ab5422f7e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/Build.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-5d483f4b699dd5d8", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c4b00ad0ca2b5630", "scanner": "scanner-primary", "fingerprint": "5d483f4b699dd5d8", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/Publish.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-5d483f4b699dd5d8", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "251e7a70e331004d", "scanner": "scanner-primary", "fingerprint": "5d483f4b699dd5d8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/Publish.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-98248635a13a66dd", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "82f5eba726829e5e", "scanner": "scanner-primary", "fingerprint": "98248635a13a66dd", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/ESLint.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-98248635a13a66dd", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "7fff9023e6a23bd3", "scanner": "scanner-primary", "fingerprint": "98248635a13a66dd", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/rojo-resolver/.github/workflows/ESLint.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-ac14a06d34722a3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ff424fc2076e05a7", "scanner": "scanner-primary", "fingerprint": "ac14a06d34722a3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/UnitTests.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-ac14a06d34722a3f", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ff424fc2076e05a7", "scanner": "scanner-primary", "fingerprint": "ac14a06d34722a3f", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/UnitTests.yml"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-ac14a06d34722a3f", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "6cb06f77ff45bc6e", "scanner": "scanner-primary", "fingerprint": "ac14a06d34722a3f", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/UnitTests.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-4049b7574aa63f57", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "bcf64eb76ff329f9", "scanner": "scanner-primary", "fingerprint": "4049b7574aa63f57", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/Build.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-4049b7574aa63f57", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "cf0aa8d091271417", "scanner": "scanner-primary", "fingerprint": "4049b7574aa63f57", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/Build.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-d220919e55d8ed04", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "fe02166eae5f2a19", "scanner": "scanner-primary", "fingerprint": "d220919e55d8ed04", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/Publish.yml"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-d220919e55d8ed04", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "73c4afe562a2c553", "scanner": "scanner-primary", "fingerprint": "d220919e55d8ed04", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/Publish.yml"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-7a180219d183f972", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2c166f9b3208614d", "scanner": "scanner-primary", "fingerprint": "7a180219d183f972", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/ESLint.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-7a180219d183f972", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "068cf79900964362", "scanner": "scanner-primary", "fingerprint": "7a180219d183f972", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "reference/luau-ast/.github/workflows/ESLint.yml"}, "region": {"startLine": 18}}}]}, {"ruleId": "scanner-fa9b995646930c75", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f70c64c6c4e1cc59", "scanner": "scanner-primary", "fingerprint": "fa9b995646930c75", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-fa9b995646930c75", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "76cb292fbb139f24", "scanner": "scanner-primary", "fingerprint": "fa9b995646930c75", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-0fe2cc8022e468a5", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "511b516ef93e6937", "scanner": "scanner-primary", "fingerprint": "0fe2cc8022e468a5", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/npm-publish.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 21}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ae16880318b99912", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 57}}}]}, {"ruleId": "scanner-27924aa79fa4a517", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "e0c3a165eed1c507", "scanner": "scanner-primary", "fingerprint": "27924aa79fa4a517", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 60}}}]}, {"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": 17}}}]}, {"ruleId": "scanner-46c644c6227e4d4a", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "4db2bd54c70f0e96", "scanner": "scanner-primary", "fingerprint": "46c644c6227e4d4a", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/release.yml"}, "region": {"startLine": 41}}}]}, {"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-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-065f0b8963774209", "level": "note", "message": {"text": "Very large file: tsgo/compiler/program.go (2164 lines)"}, "properties": {"repobilityId": "6cce8f38934c0a57", "scanner": "scanner-primary", "fingerprint": "065f0b8963774209", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a13c317d42999901", "level": "note", "message": {"text": "Very large file: tsgo/ast/utilities.go (4549 lines)"}, "properties": {"repobilityId": "8036d29f1001ec8b", "scanner": "scanner-primary", "fingerprint": "a13c317d42999901", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b6c0d9e87b1fc0f9", "level": "note", "message": {"text": "Very large file: tsgo/ast/ast_generated.go (9884 lines)"}, "properties": {"repobilityId": "bf43a95cebc90f22", "scanner": "scanner-primary", "fingerprint": "b6c0d9e87b1fc0f9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-51f8628d1958091e", "level": "note", "message": {"text": "Very large file: tsgo/ast/ast.go (3002 lines)"}, "properties": {"repobilityId": "7fb099a3d47e7cdd", "scanner": "scanner-primary", "fingerprint": "51f8628d1958091e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b05686eee2dc3c96", "level": "note", "message": {"text": "Very large file: tsgo/module/resolver.go (2361 lines)"}, "properties": {"repobilityId": "9fd1cf46086e4796", "scanner": "scanner-primary", "fingerprint": "b05686eee2dc3c96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1dee43e09dc604d2", "level": "note", "message": {"text": "Very large file: tsgo/fourslash/fourslash.go (5718 lines)"}, "properties": {"repobilityId": "2b9584d66f413e11", "scanner": "scanner-primary", "fingerprint": "1dee43e09dc604d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9d0b3f277769f23a", "level": "note", "message": {"text": "Very large file: tsgo/fourslash/tests/util/util.go (1570 lines)"}, "properties": {"repobilityId": "052c68048bd5d8e5", "scanner": "scanner-primary", "fingerprint": "9d0b3f277769f23a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3863769ed0cee1f7", "level": "note", "message": {"text": "Very large file: tsgo/binder/binder.go (2805 lines)"}, "properties": {"repobilityId": "085a7ea5d9087b87", "scanner": "scanner-primary", "fingerprint": "3863769ed0cee1f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-add45d7690ed22a2", "level": "note", "message": {"text": "Very large file: tsgo/api/session.go (2216 lines)"}, "properties": {"repobilityId": "f4fe7d188c9d9214", "scanner": "scanner-primary", "fingerprint": "add45d7690ed22a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bc2d511c750aab8b", "level": "note", "message": {"text": "Very large file: tsgo/transformers/moduletransforms/commonjsmodule.go (2160 lines)"}, "properties": {"repobilityId": "25963dbff07f74ea", "scanner": "scanner-primary", "fingerprint": "bc2d511c750aab8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f130c4525ac64e38", "level": "note", "message": {"text": "Very large file: tsgo/transformers/declarations/transform.go (2406 lines)"}, "properties": {"repobilityId": "7a0e6aade2080c06", "scanner": "scanner-primary", "fingerprint": "f130c4525ac64e38", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1425fc54063b2d13", "level": "note", "message": {"text": "Very large file: tsgo/transformers/estransforms/classfields.go (3618 lines)"}, "properties": {"repobilityId": "bbd2bb5ff1514a9d", "scanner": "scanner-primary", "fingerprint": "1425fc54063b2d13", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2baab711c5cd4c2c", "level": "note", "message": {"text": "Very large file: tsgo/transformers/estransforms/esdecorator.go (2751 lines)"}, "properties": {"repobilityId": "e2e3e954e1ec8482", "scanner": "scanner-primary", "fingerprint": "2baab711c5cd4c2c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-48e3e7a1be349fe0", "level": "note", "message": {"text": "Very large file: tsgo/modulespecifiers/specifiers.go (1397 lines)"}, "properties": {"repobilityId": "d96597759bc14b95", "scanner": "scanner-primary", "fingerprint": "48e3e7a1be349fe0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4a16ff675f063c1d", "level": "note", "message": {"text": "Very large file: tsgo/bundled/libs/lib.webworker.d.ts (15606 lines)"}, "properties": {"repobilityId": "4783631667073164", "scanner": "scanner-primary", "fingerprint": "4a16ff675f063c1d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0183dfbb5e24a8c0", "level": "note", "message": {"text": "Very large file: tsgo/bundled/libs/lib.es5.d.ts (4599 lines)"}, "properties": {"repobilityId": "0b3bc8a2d09c89b7", "scanner": "scanner-primary", "fingerprint": "0183dfbb5e24a8c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8a373ef1babd67e8", "level": "note", "message": {"text": "Very large file: tsgo/printer/printer.go (6268 lines)"}, "properties": {"repobilityId": "39bf052eccd3988e", "scanner": "scanner-primary", "fingerprint": "8a373ef1babd67e8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9e708191ab670213", "level": "note", "message": {"text": "Very large file: tsgo/diagnostics/diagnostics_generated.go (8622 lines)"}, "properties": {"repobilityId": "839c2485370a7ec8", "scanner": "scanner-primary", "fingerprint": "9e708191ab670213", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-73554f922cf56613", "level": "note", "message": {"text": "Very large file: tsgo/scanner/scanner.go (2882 lines)"}, "properties": {"repobilityId": "87f39963a0d9f57c", "scanner": "scanner-primary", "fingerprint": "73554f922cf56613", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-36f37891919b6243", "level": "note", "message": {"text": "Very large file: tsgo/ls/signaturehelp.go (1416 lines)"}, "properties": {"repobilityId": "1d1cf253eca9d17e", "scanner": "scanner-primary", "fingerprint": "36f37891919b6243", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3e95d9a854d63285", "level": "note", "message": {"text": "Very large file: tsgo/ls/findallreferences.go (2551 lines)"}, "properties": {"repobilityId": "39ae3c2e4c23be5c", "scanner": "scanner-primary", "fingerprint": "3e95d9a854d63285", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-496e4903a605be99", "level": "note", "message": {"text": "Very large file: tsgo/ls/completions.go (6224 lines)"}, "properties": {"repobilityId": "002aa25b2ea5655c", "scanner": "scanner-primary", "fingerprint": "496e4903a605be99", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-674f75d2b1f4b8a7", "level": "note", "message": {"text": "Very large file: tsgo/ls/utilities.go (1404 lines)"}, "properties": {"repobilityId": "8347b7801ecb51c6", "scanner": "scanner-primary", "fingerprint": "674f75d2b1f4b8a7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f5e059d4d5ad35e0", "level": "note", "message": {"text": "Very large file: tsgo/ls/string_completions.go (2201 lines)"}, "properties": {"repobilityId": "0dbb408de221a133", "scanner": "scanner-primary", "fingerprint": "f5e059d4d5ad35e0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4993e19e8ad5473a", "level": "note", "message": {"text": "Very large file: tsgo/ls/codeactions_fixmissingtypeannotation.go (1426 lines)"}, "properties": {"repobilityId": "c37e75c275903f73", "scanner": "scanner-primary", "fingerprint": "4993e19e8ad5473a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-981db0b6a38f3dcd", "level": "note", "message": {"text": "Very large file: tsgo/ls/autoimport/fix.go (1314 lines)"}, "properties": {"repobilityId": "2a3f45deb59f8643", "scanner": "scanner-primary", "fingerprint": "981db0b6a38f3dcd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-50fa82f77afd18b5", "level": "note", "message": {"text": "Very large file: tsgo/ls/autoimport/registry.go (1838 lines)"}, "properties": {"repobilityId": "82719f9c3af3bc63", "scanner": "scanner-primary", "fingerprint": "50fa82f77afd18b5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-705c7b7a2071fd5e", "level": "note", "message": {"text": "Very large file: tsgo/checker/jsx.go (1479 lines)"}, "properties": {"repobilityId": "a727056a16192bd6", "scanner": "scanner-primary", "fingerprint": "705c7b7a2071fd5e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-565adcd3499bacfc", "level": "note", "message": {"text": "Very large file: tsgo/checker/relater.go (4985 lines)"}, "properties": {"repobilityId": "eaad748500b5eaf3", "scanner": "scanner-primary", "fingerprint": "565adcd3499bacfc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-beb7a5c4556badea", "level": "note", "message": {"text": "Very large file: tsgo/checker/types.go (1447 lines)"}, "properties": {"repobilityId": "0344d59539cd4c9a", "scanner": "scanner-primary", "fingerprint": "beb7a5c4556badea", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-41f871d99e47c132", "level": "note", "message": {"text": "Very large file: tsgo/checker/utilities.go (1829 lines)"}, "properties": {"repobilityId": "9350f48434d9643d", "scanner": "scanner-primary", "fingerprint": "41f871d99e47c132", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3fba61ea3bf0ccc9", "level": "note", "message": {"text": "Very large file: tsgo/checker/flow.go (2734 lines)"}, "properties": {"repobilityId": "d2505828a877e9ae", "scanner": "scanner-primary", "fingerprint": "3fba61ea3bf0ccc9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-654828530fb71057", "level": "note", "message": {"text": "Very large file: tsgo/checker/emitresolver.go (1292 lines)"}, "properties": {"repobilityId": "15c133a5eb96ea8d", "scanner": "scanner-primary", "fingerprint": "654828530fb71057", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ec9bf34fc3a2c1f6", "level": "note", "message": {"text": "Very large file: tsgo/checker/grammarchecks.go (2202 lines)"}, "properties": {"repobilityId": "9117fc663e973b6b", "scanner": "scanner-primary", "fingerprint": "ec9bf34fc3a2c1f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c2e53c99bff161ec", "level": "note", "message": {"text": "Very large file: tsgo/checker/nodebuilderimpl.go (3556 lines)"}, "properties": {"repobilityId": "13d80f923790fa34", "scanner": "scanner-primary", "fingerprint": "c2e53c99bff161ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5f5f2fd40459783c", "level": "note", "message": {"text": "Very large file: tsgo/checker/inference.go (1627 lines)"}, "properties": {"repobilityId": "6548fe445012d6fd", "scanner": "scanner-primary", "fingerprint": "5f5f2fd40459783c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-aa16a1e88e06cce0", "level": "note", "message": {"text": "Very large file: tsgo/tsoptions/tsconfigparsing.go (1822 lines)"}, "properties": {"repobilityId": "da7b322e1dcb2fe9", "scanner": "scanner-primary", "fingerprint": "aa16a1e88e06cce0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-790d9a49de0e160e", "level": "note", "message": {"text": "Very large file: tsgo/tsoptions/declscompiler.go (1264 lines)"}, "properties": {"repobilityId": "ec1e9afcfd096660", "scanner": "scanner-primary", "fingerprint": "790d9a49de0e160e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e05d8409d1abe478", "level": "note", "message": {"text": "Very large file: tsgo/lsp/server.go (1822 lines)"}, "properties": {"repobilityId": "e1f254b8e7ee5f15", "scanner": "scanner-primary", "fingerprint": "e05d8409d1abe478", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-82d47f94ea6a5322", "level": "note", "message": {"text": "Very large file: tsgo/parser/parser.go (6822 lines)"}, "properties": {"repobilityId": "61271af96f08d98a", "scanner": "scanner-primary", "fingerprint": "82d47f94ea6a5322", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ea68f27a47924e4f", "level": "note", "message": {"text": "Very large file: tsgo/project/session.go (1843 lines)"}, "properties": {"repobilityId": "d8b63f05824c95db", "scanner": "scanner-primary", "fingerprint": "ea68f27a47924e4f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-098ef62e6d3a5e7d", "level": "note", "message": {"text": "214 TODO/FIXME markers"}, "properties": {"repobilityId": "4b38c118003e07d2", "scanner": "scanner-primary", "fingerprint": "098ef62e6d3a5e7d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["maintenance"]}}, {"ruleId": "scanner-4640b472b0739d8e", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: testdata/transformers/project/package.json"}, "properties": {"repobilityId": "2d25e144d949ce72", "scanner": "scanner-primary", "fingerprint": "4640b472b0739d8e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "testdata/transformers/project/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "fc5b758e97a4e5d3", "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": "779e1f6d2f468f01", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a4c7004d5089665b", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "32093791e9af138c", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "6325224a4ee58080", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-9ace8e2858877ab2", "level": "none", "message": {"text": "Commented-code block (11 lines) in reference/roblox-ts/tests/src/tests/map.spec.ts:139"}, "properties": {"repobilityId": "cd422d75a920a7fe", "scanner": "scanner-primary", "fingerprint": "9ace8e2858877ab2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-40c701d9c2425c1c", "level": "none", "message": {"text": "Commented-code block (6 lines) in reference/roblox-ts/tests/src/tests/roact.spec.tsx:134"}, "properties": {"repobilityId": "c605dc5aba78082c", "scanner": "scanner-primary", "fingerprint": "40c701d9c2425c1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cf8553fa074a4c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in reference/roblox-ts/src/TSTransformer/nodes/statements/transformForStatement.ts:228"}, "properties": {"repobilityId": "439699daf07d80ad", "scanner": "scanner-primary", "fingerprint": "3cf8553fa074a4c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ae0b480babe17a99", "level": "none", "message": {"text": "Commented-code block (11 lines) in testdata/conformance/project/src/tests/map.spec.ts:139"}, "properties": {"repobilityId": "32506d27da1df7a2", "scanner": "scanner-primary", "fingerprint": "ae0b480babe17a99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-57e244da8d081f4d", "level": "none", "message": {"text": "Commented-code block (6 lines) in testdata/conformance/project/src/tests/roact.spec.tsx:134"}, "properties": {"repobilityId": "738e97245d51b436", "scanner": "scanner-primary", "fingerprint": "57e244da8d081f4d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8fabd9ca011754fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in testdata/diff/project/src/39_mixed3c.tsx:1"}, "properties": {"repobilityId": "49edd046b47238ac", "scanner": "scanner-primary", "fingerprint": "8fabd9ca011754fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc9add1873ef6a41", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 tsgo/bundled/libs/lib.webworker.d.ts:5205"}, "properties": {"repobilityId": "70a6eb16124f9264", "scanner": "scanner-primary", "fingerprint": "dc9add1873ef6a41", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-95053a1818f3bdd3", "level": "none", "message": {"text": "Commented-code block (5 lines) in internal/compile/testdata/asset_model/src/globals.d.ts:3"}, "properties": {"repobilityId": "23f10e095e3a919c", "scanner": "scanner-primary", "fingerprint": "95053a1818f3bdd3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6351df77f4ef92fe", "level": "none", "message": {"text": "Commented-code block (5 lines) in internal/compile/testdata/env_model/src/globals.d.ts:3"}, "properties": {"repobilityId": "960025b8bcd5957b", "scanner": "scanner-primary", "fingerprint": "6351df77f4ef92fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-469f074e9332a2b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in internal/transformer/testdata/jsx/src/jsx.d.ts:1"}, "properties": {"repobilityId": "a1b6fdfc0ff07596", "scanner": "scanner-primary", "fingerprint": "469f074e9332a2b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd10495eb682d4a9", "level": "none", "message": {"text": "Commented-code block (9 lines) in internal/transformer/testdata/typeprobe/src/refs.ts:1"}, "properties": {"repobilityId": "bc9882979140a96f", "scanner": "scanner-primary", "fingerprint": "fd10495eb682d4a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35ee877331624cac", "level": "none", "message": {"text": "Commented-code block (7 lines) in internal/transformer/testdata/casehoist/src/case.ts:1"}, "properties": {"repobilityId": "2bac6cbc846ef300", "scanner": "scanner-primary", "fingerprint": "35ee877331624cac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29f5b24f7f47e4c7", "level": "none", "message": {"text": "Commented-code block (7 lines) in internal/transformer/testdata/macroonly/src/globals.d.ts:1"}, "properties": {"repobilityId": "7e277f36cb77cad5", "scanner": "scanner-primary", "fingerprint": "29f5b24f7f47e4c7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0eda79e00bacf09b", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/install.test.js:7"}, "properties": {"repobilityId": "b882802bc96da523", "scanner": "scanner-primary", "fingerprint": "0eda79e00bacf09b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}