{"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-903493455af4e963", "name": "Possibly dead Python function: handler", "shortDescription": {"text": "Possibly dead Python function: handler"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0e78d59d97b6e54f", "name": "Possibly dead Python function: Process", "shortDescription": {"text": "Possibly dead Python function: Process"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9c3ca69cb77e774b", "name": "Possibly dead Python function: handler", "shortDescription": {"text": "Possibly dead Python function: handler"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e4a97cb3601900cd", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionListTelemetry.ts:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionListTelemetry.ts: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-c669c77ae5b9dbc7", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/longTaskTelemetry.ts:183", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/longTaskTelemetry.ts:183"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae0ac9cc8d6ec705", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/chatScrollTelemetry.ts:102", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/chatScrollTelemetry.ts:102"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e76068acfb3b9517", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/LongChatDebugPage.tsx:456", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/LongChatDebugPage.tsx:456"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ee6409f75cf46835", "name": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionEventStreamTelemetry.ts:96", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionEventStreamTelemetry.ts:96"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a5ecc802d8eec9b", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/App.tsx:10564", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/App.tsx:10564"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9ca3818ee1196d9c", "name": "Stray `console.log` in TS/JS \u2014 claude-runner/src/index.ts:18", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 claude-runner/src/index.ts:18"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-393ab35ed7d0f83c", "name": "Stray `console.log` in TS/JS \u2014 claude-runner/src/runner.ts:332", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 claude-runner/src/runner.ts:332"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a02feafb603655f", "name": "Stray `console.log` in TS/JS \u2014 codex-runner/src/index.ts:26", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex-runner/src/index.ts:26"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d061e37cbd19a1e1", "name": "Stray `console.log` in TS/JS \u2014 codex-runner/src/runner.ts:1350", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 codex-runner/src/runner.ts:1350"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8987d6d1c30c7202", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-efeae1827c6c9bc3", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d31b80bafc244313", "name": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3e9ac44bc8dc3408", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e1adc18d6939edf9", "name": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.49.1-noble", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.49.1-noble"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c371f5f6d80fc19c", "name": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3a6a4f18fd1e7a97", "name": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0004cccbbf00a393", "name": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine", "shortDescription": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine"}, "fullDescription": {"text": "Container tags can be retagged upstream. Pin production base images to a reviewed digest (`image@sha256:...`) when reproducibility and supply-chain integrity matter."}, "properties": {"scanner": "scanner-primary", "layer": "hardware", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fae7333ffc2fb71", "name": "Insecure pattern 'dangerous_innerhtml' in frontend/src/App.tsx:10564", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/App.tsx:10564"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-118b6d84cdd48e18", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/background-wake-turn-flow.html:682", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/background-wake-turn-flow.html:682"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-802eaf6d4fb832a6", "name": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/ask-user-question-turn-flow.html:537", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/ask-user-question-turn-flow.html:537"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4fa80d0273b757d9", "name": "Insecure pattern 'node_child_process' in scripts/check-tank-http-route-security.mjs:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-tank-http-route-security.mjs:3"}, "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-4d46ef1992a6b461", "name": "Insecure pattern 'node_child_process' in scripts/check-stop-request-migration.mjs:25", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-stop-request-migration.mjs:25"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5ea6e860c69c8ee4", "name": "Insecure pattern 'node_child_process' in scripts/check-session-readonly-rbac.mjs:22", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-session-readonly-rbac.mjs:22"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5a7532d41eed383a", "name": "Insecure pattern 'node_child_process' in scripts/check-session-pod-hot-swap-migration.mjs:34", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-session-pod-hot-swap-migration.mjs:34"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-042ca1ff0445ed88", "name": "Insecure pattern 'node_child_process' in scripts/check-context-window-table-migration.mjs:32", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-context-window-table-migration.mjs:32"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-71c83d0a99242073", "name": "Insecure pattern 'node_child_process' in scripts/check-claude-agent-authority.mjs:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/check-claude-agent-authority.mjs:13"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-129e5f869ca418c8", "name": "Insecure pattern 'node_child_process' in scripts/classify-tank-test-fidelity.mjs:4", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/classify-tank-test-fidelity.mjs:4"}, "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-ce1b9eb186789516", "name": "Insecure pattern 'node_child_process' in claude-runner/src/cliVersion.ts:17", "shortDescription": {"text": "Insecure pattern 'node_child_process' in claude-runner/src/cliVersion.ts:17"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7723daa8c4f04682", "name": "Insecure pattern 'node_child_process' in codex-runner/src/appServerTransport.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in codex-runner/src/appServerTransport.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-fc20d66155c02d35", "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-93bea773b1b09a43", "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-a54a3c96ee4670f2", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/github-script@v7 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-35492a7c2212e3c3", "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-2821464fc067500e", "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-180bdbf1b4831888", "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-cd4a8a0fcf4d548c", "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-50c16f9f4d884f88", "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-54aa27620d15a65e", "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-6ac805af90d7a80e", "name": "GitHub Action tracks a moving branch", "shortDescription": {"text": "GitHub Action tracks a moving branch"}, "fullDescription": {"text": "romaine-life/pipeline-templates/.github/workflows/tofu-plan-apply-template.yml@main can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "high", "confidence": 1.0}}, {"id": "scanner-4ddac0057c502d64", "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-6ba9bfab5f283202", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "azure/login@v2 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b769174c9fcf8ea8", "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-8656b712106ef0ac", "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-a060c19ada40510d", "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-24d541972cc1c4f0", "name": "Very large file: frontend/src/migrationPolicy.test.ts (1591 lines)", "shortDescription": {"text": "Very large file: frontend/src/migrationPolicy.test.ts (1591 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-5b747a7004f6b1d4", "name": "Very large file: frontend/src/App.tsx (26763 lines)", "shortDescription": {"text": "Very large file: frontend/src/App.tsx (26763 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-1019aececb9ade8c", "name": "Very large file: api-proxy/src/tank_api_proxy/server.py (1119 lines)", "shortDescription": {"text": "Very large file: api-proxy/src/tank_api_proxy/server.py (1119 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-4d7a8aa015b5ef4a", "name": "Very large file: backend-go/internal/pgstore/migrations.go (2276 lines)", "shortDescription": {"text": "Very large file: backend-go/internal/pgstore/migrations.go (2276 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-e4fcfc4387508d62", "name": "Very large file: backend-go/internal/store/session_events.go (1380 lines)", "shortDescription": {"text": "Very large file: backend-go/internal/store/session_events.go (1380 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-22bb51cf6d7a75df", "name": "Very large file: backend-go/internal/sessionmodel/sessionmodel.go (1485 lines)", "shortDescription": {"text": "Very large file: backend-go/internal/sessionmodel/sessionmodel.go (1485 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-32986466e1c8c4ed", "name": "Very large file: backend-go/cmd/tank-operator/control_actions.go (1749 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/control_actions.go (1749 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-0a5e3c54ec0b17dc", "name": "Very large file: backend-go/cmd/tank-operator/handlers_turns.go (1358 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/handlers_turns.go (1358 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-d632dc8a1a898b48", "name": "Very large file: backend-go/cmd/tank-operator/control_actions_test.go (1490 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/control_actions_test.go (1490 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-b2b0ca247b2eee76", "name": "Very large file: backend-go/cmd/tank-operator/observability.go (2947 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/observability.go (2947 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-325420a75ea2d5cb", "name": "Very large file: backend-go/cmd/tank-operator/transcript_projection_test.go (1913 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/transcript_projection_test.go (1913 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-3081af495a21448c", "name": "Very large file: backend-go/cmd/tank-operator/handlers_turns_test.go (1701 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/handlers_turns_test.go (1701 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-6803889229d8dc8a", "name": "Very large file: backend-go/cmd/tank-operator/transcript_projection.go (3068 lines)", "shortDescription": {"text": "Very large file: backend-go/cmd/tank-operator/transcript_projection.go (3068 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-8f6f6816b4cf8ad5", "name": "Very large file: scripts/check-stop-request-migration.mjs (1300 lines)", "shortDescription": {"text": "Very large file: scripts/check-stop-request-migration.mjs (1300 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-2de60a28891c54bc", "name": "Very large file: scripts/check-removed-chat-runtime.mjs (932 lines)", "shortDescription": {"text": "Very large file: scripts/check-removed-chat-runtime.mjs (932 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-35c9e538caf5ef6b", "name": "Very large file: claude-runner/src/runner.ts (3415 lines)", "shortDescription": {"text": "Very large file: claude-runner/src/runner.ts (3415 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-4decb86f8e3d6a1a", "name": "Very large file: claude-runner/src/runner.test.ts (2283 lines)", "shortDescription": {"text": "Very large file: claude-runner/src/runner.test.ts (2283 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-6fbef61eda743714", "name": "Very large file: codex-runner/src/runner.ts (1943 lines)", "shortDescription": {"text": "Very large file: codex-runner/src/runner.ts (1943 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-a7b157201e3853b7", "name": "Very large file: claude-container/mcp-auth-proxy/tests/test_server.py (1899 lines)", "shortDescription": {"text": "Very large file: claude-container/mcp-auth-proxy/tests/test_server.py (1899 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-e5705f73e970012f", "name": "Very large file: claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py (4816 lines)", "shortDescription": {"text": "Very large file: claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py (4816 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-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "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 78 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 357 placeholder/mock markers across 56 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e725d2ab884fbd49", "name": "Multiple root agent instruction files without precedence", "shortDescription": {"text": "Multiple root agent instruction files without precedence"}, "fullDescription": {"text": "The repo has multiple top-level AI-coder instruction files. Without precedence rules, different agents may follow different policies."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7e6fd553f59463b2", "name": "Commented-code block (6 lines) in frontend/vitest.config.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/vitest.config.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92465c9eedf8fee8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/auth.ts:54", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/auth.ts:54"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea1f592cfac3d7c0", "name": "Commented-code block (11 lines) in frontend/src/CopyButton.test.tsx:3", "shortDescription": {"text": "Commented-code block (11 lines) in frontend/src/CopyButton.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-753f3f2cf7f2ad57", "name": "Commented-code block (9 lines) in frontend/src/adminReferenceLinks.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/adminReferenceLinks.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-900c1577d48ba32a", "name": "Commented-code block (5 lines) in frontend/src/repos.test.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/repos.test.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f50a9ff440915815", "name": "Commented-code block (6 lines) in frontend/src/TurnViewButton.test.tsx:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/TurnViewButton.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ef4107ee2e0d44d", "name": "Commented-code block (9 lines) in frontend/src/ChatComposer.tsx:14", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/ChatComposer.tsx:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99a58d7fff7299ce", "name": "Commented-code block (5 lines) in frontend/src/StaticPageView.tsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/StaticPageView.tsx:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab0868e3e2bc0310", "name": "Commented-code block (8 lines) in frontend/src/breadcrumb.render.test.tsx:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/breadcrumb.render.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-accb0a314c79e24b", "name": "Commented-code block (7 lines) in frontend/src/homePreferences.ts:6", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/homePreferences.ts:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5652cedf9e3453e9", "name": "Commented-code block (5 lines) in frontend/src/transcriptThinkingPlacement.test.ts:14", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/transcriptThinkingPlacement.test.ts:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac00383e840342bd", "name": "Commented-code block (9 lines) in frontend/src/sessionListTelemetry.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/sessionListTelemetry.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-baff92e0fabcab8a", "name": "Commented-code block (6 lines) in frontend/src/longTaskTelemetry.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/longTaskTelemetry.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-b518cca36d698d72", "name": "Commented-code block (7 lines) in frontend/src/repos.ts:144", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/repos.ts:144"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06fd54966d7e89b0", "name": "Commented-code block (6 lines) in frontend/src/sessionStore.test.ts:249", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/sessionStore.test.ts:249"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39657527f233b7e4", "name": "Commented-code block (6 lines) in frontend/src/turnViewNavigation.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/turnViewNavigation.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-34026ebabafe51eb", "name": "Commented-code block (5 lines) in frontend/src/composerCss.test.ts:356", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/composerCss.test.ts:356"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85d60d87325bb8f7", "name": "Commented-code block (12 lines) in frontend/src/compactPager.render.test.tsx:3", "shortDescription": {"text": "Commented-code block (12 lines) in frontend/src/compactPager.render.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f52fd4671a3abede", "name": "Commented-code block (6 lines) in frontend/src/conversationProjection.ts:137", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/conversationProjection.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fdb42a9a3db0d174", "name": "Commented-code block (7 lines) in frontend/src/transcriptThinkingPlacement.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/transcriptThinkingPlacement.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-8c5a9d522ac1f409", "name": "Commented-code block (7 lines) in frontend/src/timeService.test.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/timeService.test.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00cc725ffc83060a", "name": "Commented-code block (5 lines) in frontend/src/transcriptMerge.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/transcriptMerge.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-dcb89a7b5032e1f7", "name": "Commented-code block (5 lines) in frontend/src/filesView.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/filesView.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-73be17c018c5050f", "name": "Commented-code block (9 lines) in frontend/src/LinkButton.test.tsx:3", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/LinkButton.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b0fca60d894ebb0", "name": "Commented-code block (5 lines) in frontend/src/conversationReducer.ts:46", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/conversationReducer.ts:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b1d88127a8d7936", "name": "Commented-code block (6 lines) in frontend/src/appRoutes.ts:28", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/appRoutes.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d49da3379f0ea7e1", "name": "Commented-code block (9 lines) in frontend/src/sessionActivity.ts:131", "shortDescription": {"text": "Commented-code block (9 lines) in frontend/src/sessionActivity.ts:131"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-977d045619c65afa", "name": "Commented-code block (7 lines) in frontend/src/mobileTopBar.render.test.tsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/mobileTopBar.render.test.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa4bfe6e84ce01f3", "name": "Commented-code block (8 lines) in frontend/src/turnActivityPager.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/turnActivityPager.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05095c57ed60e68f", "name": "Commented-code block (8 lines) in frontend/src/streamBackoff.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/streamBackoff.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-0c0cc8c61e397b0c", "name": "Commented-code block (5 lines) in frontend/src/sdkDurableStreamRegression.test.ts:136", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/sdkDurableStreamRegression.test.ts:136"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2532c908bbf9344f", "name": "Commented-code block (6 lines) in frontend/src/controlActions.ts:282", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/controlActions.ts:282"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5ad257d5e041e4bf", "name": "Commented-code block (6 lines) in frontend/src/sessionCostEstimate.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/sessionCostEstimate.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0603e3385940d7fa", "name": "Commented-code block (18 lines) in frontend/src/sessionStore.ts:8", "shortDescription": {"text": "Commented-code block (18 lines) in frontend/src/sessionStore.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2455cb22b5940230", "name": "Commented-code block (6 lines) in frontend/src/migrationPolicy.test.ts:120", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/migrationPolicy.test.ts:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-684b1e0fae6db120", "name": "Commented-code block (5 lines) in frontend/src/navigationMode.test.ts:62", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/navigationMode.test.ts:62"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfebfcce10182358", "name": "Commented-code block (7 lines) in frontend/src/main.tsx:44", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/main.tsx:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cec026f7cdd3a50d", "name": "Commented-code block (7 lines) in frontend/src/DesktopOnly.tsx:14", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/DesktopOnly.tsx:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-80e231cda13bd9e3", "name": "Commented-code block (8 lines) in frontend/src/timeService.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/timeService.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-51c2a863eec56ba1", "name": "Commented-code block (6 lines) in frontend/src/keyboardShortcuts.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/keyboardShortcuts.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-0015eaaea25125c9", "name": "Commented-code block (5 lines) in frontend/src/conversationProjection.test.ts:311", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/conversationProjection.test.ts:311"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0a9f44d0bd1a8bd", "name": "Commented-code block (6 lines) in frontend/src/MobileTopBar.tsx:25", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/MobileTopBar.tsx:25"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c708e2ccba636f1", "name": "Commented-code block (5 lines) in frontend/src/transcriptFocusSurface.test.ts:10", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/transcriptFocusSurface.test.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42e8280e6fc13a7d", "name": "Commented-code block (7 lines) in frontend/src/sessionEventStreamTelemetry.ts:153", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/sessionEventStreamTelemetry.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a05a69b64d821139", "name": "Commented-code block (7 lines) in frontend/src/sessionAvatars.tsx:24", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/sessionAvatars.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72130070ab3a282e", "name": "Commented-code block (7 lines) in frontend/src/transcriptRefreshIndicator.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/transcriptRefreshIndicator.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd3433594072bedc", "name": "Commented-code block (8 lines) in frontend/src/turnActivityCache.ts:37", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/turnActivityCache.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12ae65e1f95dd015", "name": "Commented-code block (8 lines) in frontend/src/App.tsx:429", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/App.tsx:429"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b294bd63998221ee", "name": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/App.tsx:15706", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/App.tsx:15706"}, "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-d5c5dfb0bc57a027", "name": "Commented-code block (5 lines) in frontend/src/navigationMode.ts:26", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/navigationMode.ts:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ecbabca7089a4147", "name": "Commented-code block (5 lines) in frontend/src/conversationReducer.test.ts:198", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/conversationReducer.test.ts:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b13a483fa54ac22", "name": "Commented-code block (7 lines) in frontend/src/transcriptRefreshShortcut.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/transcriptRefreshShortcut.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-a2209d9b2f1e424c", "name": "Commented-code block (5 lines) in frontend/src/breakpoints.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/breakpoints.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-1a80592b5f2a47a5", "name": "Commented-code block (5 lines) in frontend/src/sessionEventStreamTelemetry.test.ts:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/sessionEventStreamTelemetry.test.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a07fbc49627bf6cf", "name": "Commented-code block (5 lines) in frontend/src/mobileShell.test.ts:69", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/mobileShell.test.ts:69"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8e76628cfc8c4af2", "name": "Commented-code block (7 lines) in frontend/src/sessionActivity.test.ts:135", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/sessionActivity.test.ts:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e7cd38ebadc54a2", "name": "Commented-code block (7 lines) in frontend/src/adminAvatarCrop.ts:22", "shortDescription": {"text": "Commented-code block (7 lines) in frontend/src/adminAvatarCrop.ts:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b875ae23dc3ae907", "name": "Commented-code block (8 lines) in frontend/src/styleguide/question-heading.tsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/styleguide/question-heading.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-35f8ad7bc97d4631", "name": "Commented-code block (5 lines) in frontend/src/styleguide/mobile-shell.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/mobile-shell.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-c30a9ffc92c710c3", "name": "Commented-code block (5 lines) in frontend/src/styleguide/shared.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/shared.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-d56f9b009ae7896e", "name": "Commented-code block (5 lines) in frontend/src/styleguide/prompt-collapse-parity.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/prompt-collapse-parity.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc3c24d8c22e6592", "name": "Commented-code block (5 lines) in frontend/src/styleguide/avatars.tsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/avatars.tsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b09b73c7dbfb8dee", "name": "Commented-code block (8 lines) in frontend/src/components/RepoPicker.test.tsx:4", "shortDescription": {"text": "Commented-code block (8 lines) in frontend/src/components/RepoPicker.test.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1f27beefc872afa", "name": "Commented-code block (30 lines) in frontend/src/components/RepoPicker.tsx:9", "shortDescription": {"text": "Commented-code block (30 lines) in frontend/src/components/RepoPicker.tsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7774cc2b2b0a0c89", "name": "Commented-code block (6 lines) in frontend/src/components/ui/sheet.tsx:6", "shortDescription": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/sheet.tsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b85662443fa5584", "name": "Commented-code block (5 lines) in frontend/src/components/ai-elements/prompt-input.tsx:1214", "shortDescription": {"text": "Commented-code block (5 lines) in frontend/src/components/ai-elements/prompt-input.tsx:1214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d482b99190b63597", "name": "Commented-code block (6 lines) in api-proxy/tests/test_server.py:466", "shortDescription": {"text": "Commented-code block (6 lines) in api-proxy/tests/test_server.py:466"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-833a639590c0ca8f", "name": "Commented-code block (5 lines) in api-proxy/src/tank_api_proxy/metrics.py:297", "shortDescription": {"text": "Commented-code block (5 lines) in api-proxy/src/tank_api_proxy/metrics.py:297"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-78fd20714bdb7941", "name": "Commented-code block (6 lines) in api-proxy/src/tank_api_proxy/server.py:108", "shortDescription": {"text": "Commented-code block (6 lines) in api-proxy/src/tank_api_proxy/server.py:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-315a715a0ecbe8a9", "name": "Commented-code block (7 lines) in scripts/check-stop-request-migration.mjs:11", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/check-stop-request-migration.mjs:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-591d3b6b3813ea6c", "name": "Commented-code block (6 lines) in scripts/check-session-readonly-rbac.mjs:5", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/check-session-readonly-rbac.mjs:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cbbaca8a365f7cde", "name": "Commented-code block (5 lines) in scripts/check-session-pod-hot-swap-migration.mjs:17", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-session-pod-hot-swap-migration.mjs:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ceb7bc2f908307a4", "name": "Commented-code block (5 lines) in scripts/check-context-window-table-migration.mjs:5", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/check-context-window-table-migration.mjs:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4e7b288e1f6563e7", "name": "Commented-code block (7 lines) in scripts/classify-tank-test-fidelity.mjs:367", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/classify-tank-test-fidelity.mjs:367"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac30d7a80162a857", "name": "Commented-code block (8 lines) in scripts/check-removed-chat-runtime.mjs:60", "shortDescription": {"text": "Commented-code block (8 lines) in scripts/check-removed-chat-runtime.mjs:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c8c2c447a7e07dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-removed-chat-runtime.mjs:760", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-removed-chat-runtime.mjs:760"}, "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-fe94e176790cbb9f", "name": "Commented-code block (10 lines) in scripts/check-askuserquestion-migration.mjs:9", "shortDescription": {"text": "Commented-code block (10 lines) in scripts/check-askuserquestion-migration.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d698e8b32a282399", "name": "Commented-code block (10 lines) in claude-runner/src/cliVersion.ts:1", "shortDescription": {"text": "Commented-code block (10 lines) in claude-runner/src/cliVersion.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-cb0ba98713bc0db2", "name": "Commented-code block (5 lines) in claude-runner/src/sessionEvents.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionEvents.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-af7a97d3c1e15d14", "name": "Commented-code block (5 lines) in claude-runner/src/sessionBus.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionBus.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8d9f9832198cdfd", "name": "Commented-code block (5 lines) in claude-runner/src/runner.terminal-correctness.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/runner.terminal-correctness.test.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-8ecbb424352f705b", "name": "Commented-code block (8 lines) in claude-runner/src/sessionBus.test.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in claude-runner/src/sessionBus.test.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-21aa3ef5d5ba587d", "name": "Commented-code block (5 lines) in claude-runner/src/runner.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/runner.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-c12e5f18bdce1a1f", "name": "Commented-code block (17 lines) in claude-runner/src/metrics.ts:113", "shortDescription": {"text": "Commented-code block (17 lines) in claude-runner/src/metrics.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9d93d099d11b0c1f", "name": "Commented-code block (7 lines) in claude-runner/src/runner.test.ts:269", "shortDescription": {"text": "Commented-code block (7 lines) in claude-runner/src/runner.test.ts:269"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97f40974767576c8", "name": "Commented-code block (5 lines) in claude-runner/src/adapters/claude.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/adapters/claude.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-88542586db4113f0", "name": "Commented-code block (5 lines) in claude-runner/src/sessionbus/sessionBusSubjects.test.ts:18", "shortDescription": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionbus/sessionBusSubjects.test.ts:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-593d5084cd77b232", "name": "Commented-code block (5 lines) in codex-runner/src/sessionEvents.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/sessionEvents.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-722ef1d4dc8005e3", "name": "Commented-code block (7 lines) in codex-runner/src/appServerTransport.ts:44", "shortDescription": {"text": "Commented-code block (7 lines) in codex-runner/src/appServerTransport.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-493fb4c857b4ddf1", "name": "Commented-code block (5 lines) in codex-runner/src/sessionBus.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/sessionBus.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-258cf0d6d6bd841a", "name": "Commented-code block (5 lines) in codex-runner/src/runner.correctness.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/runner.correctness.test.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-4204f8d82f2a3a93", "name": "Commented-code block (6 lines) in codex-runner/src/runner.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in codex-runner/src/runner.ts:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-771bbd1234cd07b4", "name": "Commented-code block (8 lines) in codex-runner/src/metrics.ts:142", "shortDescription": {"text": "Commented-code block (8 lines) in codex-runner/src/metrics.ts:142"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d9373987da500645", "name": "Commented-code block (5 lines) in codex-runner/src/runner.test.ts:219", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/runner.test.ts:219"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93dd8905be46ce15", "name": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.ts:47", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.ts:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0afc71b8148e6db2", "name": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.test.ts:549", "shortDescription": {"text": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.test.ts:549"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02c7b745d353b320", "name": "Commented-code block (5 lines) in runner-shared/sessionBus.js:9", "shortDescription": {"text": "Commented-code block (5 lines) in runner-shared/sessionBus.js:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ac807ef88b7de2b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/sessionBus.js:247", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/sessionBus.js:247"}, "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-dcf36097b30c69a5", "name": "Commented-code block (7 lines) in runner-shared/sessionBus.d.ts:169", "shortDescription": {"text": "Commented-code block (7 lines) in runner-shared/sessionBus.d.ts:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82514f81e6a46d69", "name": "Commented-code block (6 lines) in runner-shared/conversation-builders.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in runner-shared/conversation-builders.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72b9a6c99cd9f2f9", "name": "Commented-code block (7 lines) in runner-shared/backgroundTaskWake.js:7", "shortDescription": {"text": "Commented-code block (7 lines) in runner-shared/backgroundTaskWake.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}}, {"id": "scanner-63cd3444e0ac4d8f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/backgroundTaskWake.js:22", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/backgroundTaskWake.js:22"}, "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-5ba4af1a17fcff0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/runtimeConfig.js:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/runtimeConfig.js:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea87f109482aaf43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/scheduledWakeup.js:15", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/scheduledWakeup.js:15"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8a4df6c95c514c79", "name": "Commented-code block (11 lines) in claude-container/mcp-auth-proxy/tests/test_server.py:1689", "shortDescription": {"text": "Commented-code block (11 lines) in claude-container/mcp-auth-proxy/tests/test_server.py:1689"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-095c01e289c34c97", "name": "Commented-code block (5 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/metrics.py:50", "shortDescription": {"text": "Commented-code block (5 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/metrics.py:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a96b2282af17fff", "name": "Commented-code block (9 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py:64", "shortDescription": {"text": "Commented-code block (9 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py:64"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c04133e54348533", "name": "Near-duplicate function bodies in 2 places", "shortDescription": {"text": "Near-duplicate function bodies in 2 places"}, "fullDescription": {"text": "Functions with the same first-5-line body hash:\napi-proxy/src/tank_api_proxy/metrics.py:handler, api-proxy/src/tank_api_proxy/metrics.py:handler\n\nThis is *the* AI-coder failure mode (4\u00d7 more duplication in vibe-coded repos \u2014 see https://jw.hn/ai-code-hygiene). Consolidate or document why they're separate."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18423"}, "properties": {"repository": "romaine-life/tank-operator", "repoUrl": "https://github.com/romaine-life/tank-operator", "branch": "main"}, "results": [{"ruleId": "scanner-903493455af4e963", "level": "note", "message": {"text": "Possibly dead Python function: handler"}, "properties": {"repobilityId": "bd219af3bd678eef", "scanner": "scanner-primary", "fingerprint": "903493455af4e963", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api-proxy/src/tank_api_proxy/metrics.py:271"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0e78d59d97b6e54f", "level": "note", "message": {"text": "Possibly dead Python function: Process"}, "properties": {"repobilityId": "f2e2790d53175585", "scanner": "scanner-primary", "fingerprint": "0e78d59d97b6e54f", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api-proxy/src/tank_api_proxy/server.py:392"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-9c3ca69cb77e774b", "level": "note", "message": {"text": "Possibly dead Python function: handler"}, "properties": {"repobilityId": "bd219af3bd678eef", "scanner": "scanner-primary", "fingerprint": "9c3ca69cb77e774b", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py:4357"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e4a97cb3601900cd", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionListTelemetry.ts:44"}, "properties": {"repobilityId": "b30fbe30f3fd1f18", "scanner": "scanner-primary", "fingerprint": "e4a97cb3601900cd", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c669c77ae5b9dbc7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/longTaskTelemetry.ts:183"}, "properties": {"repobilityId": "07fac763758b16a9", "scanner": "scanner-primary", "fingerprint": "c669c77ae5b9dbc7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ae0ac9cc8d6ec705", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/chatScrollTelemetry.ts:102"}, "properties": {"repobilityId": "77a5a23c86bd83c0", "scanner": "scanner-primary", "fingerprint": "ae0ac9cc8d6ec705", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e76068acfb3b9517", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/LongChatDebugPage.tsx:456"}, "properties": {"repobilityId": "2a7750b028f3abba", "scanner": "scanner-primary", "fingerprint": "e76068acfb3b9517", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ee6409f75cf46835", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 frontend/src/sessionEventStreamTelemetry.ts:96"}, "properties": {"repobilityId": "25069931c7f51806", "scanner": "scanner-primary", "fingerprint": "ee6409f75cf46835", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a5ecc802d8eec9b", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 frontend/src/App.tsx:10564"}, "properties": {"repobilityId": "cce2d427708f15ea", "scanner": "scanner-primary", "fingerprint": "9a5ecc802d8eec9b", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9ca3818ee1196d9c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 claude-runner/src/index.ts:18"}, "properties": {"repobilityId": "bcfb45f9b3a630d5", "scanner": "scanner-primary", "fingerprint": "9ca3818ee1196d9c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-393ab35ed7d0f83c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 claude-runner/src/runner.ts:332"}, "properties": {"repobilityId": "1f888ed9883a5a6d", "scanner": "scanner-primary", "fingerprint": "393ab35ed7d0f83c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3a02feafb603655f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex-runner/src/index.ts:26"}, "properties": {"repobilityId": "e6b7bcbe7b1075dc", "scanner": "scanner-primary", "fingerprint": "3a02feafb603655f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d061e37cbd19a1e1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 codex-runner/src/runner.ts:1350"}, "properties": {"repobilityId": "cd3bffaed23f9229", "scanner": "scanner-primary", "fingerprint": "d061e37cbd19a1e1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-8987d6d1c30c7202", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "a996d705d7d7b3c0", "scanner": "scanner-primary", "fingerprint": "8987d6d1c30c7202", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 2}}}]}, {"ruleId": "scanner-efeae1827c6c9bc3", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine"}, "properties": {"repobilityId": "dc0232dc97308f14", "scanner": "scanner-primary", "fingerprint": "efeae1827c6c9bc3", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-d31b80bafc244313", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: alpine:3.20"}, "properties": {"repobilityId": "0b84d5c294ff47f7", "scanner": "scanner-primary", "fingerprint": "d31b80bafc244313", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "Dockerfile"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-3e9ac44bc8dc3408", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "125e056de3f3ad31", "scanner": "scanner-primary", "fingerprint": "3e9ac44bc8dc3408", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api-proxy/Dockerfile"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3e9ac44bc8dc3408", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-slim"}, "properties": {"repobilityId": "c6b10a377ef78fef", "scanner": "scanner-primary", "fingerprint": "3e9ac44bc8dc3408", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "api-proxy/Dockerfile"}, "region": {"startLine": 108}}}]}, {"ruleId": "scanner-e1adc18d6939edf9", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: mcr.microsoft.com/playwright:v1.49.1-noble"}, "properties": {"repobilityId": "786d003c3b344757", "scanner": "scanner-primary", "fingerprint": "e1adc18d6939edf9", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "agent-container/Dockerfile"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-c371f5f6d80fc19c", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: golang:1.26-alpine"}, "properties": {"repobilityId": "95bb0819643ff5bb", "scanner": "scanner-primary", "fingerprint": "c371f5f6d80fc19c", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/Dockerfile"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-3a6a4f18fd1e7a97", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "674ef786e4bddc4a", "scanner": "scanner-primary", "fingerprint": "3a6a4f18fd1e7a97", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/Dockerfile"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-3a6a4f18fd1e7a97", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "281151d70f80e347", "scanner": "scanner-primary", "fingerprint": "3a6a4f18fd1e7a97", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/Dockerfile"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-3a6a4f18fd1e7a97", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: node:20-alpine"}, "properties": {"repobilityId": "79e379c72095b86f", "scanner": "scanner-primary", "fingerprint": "3a6a4f18fd1e7a97", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/Dockerfile"}, "region": {"startLine": 49}}}]}, {"ruleId": "scanner-0004cccbbf00a393", "level": "note", "message": {"text": "Docker base image is tag-pinned but not digest-pinned: python:3.12-alpine"}, "properties": {"repobilityId": "7e9ce1c914dc8519", "scanner": "scanner-primary", "fingerprint": "0004cccbbf00a393", "layer": "hardware", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "docker", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-container/mcp-auth-proxy/Dockerfile"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-7fae7333ffc2fb71", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in frontend/src/App.tsx:10564"}, "properties": {"repobilityId": "65512b81037c8655", "scanner": "scanner-primary", "fingerprint": "7fae7333ffc2fb71", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "frontend/src/App.tsx"}, "region": {"startLine": 10564}}}]}, {"ruleId": "scanner-118b6d84cdd48e18", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/background-wake-turn-flow.html:682"}, "properties": {"repobilityId": "f454f9bb4de874e1", "scanner": "scanner-primary", "fingerprint": "118b6d84cdd48e18", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/features/transcript/background-wake-turn-flow.html"}, "region": {"startLine": 682}}}]}, {"ruleId": "scanner-802eaf6d4fb832a6", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in docs/features/transcript/ask-user-question-turn-flow.html:537"}, "properties": {"repobilityId": "43c57b03f208679a", "scanner": "scanner-primary", "fingerprint": "802eaf6d4fb832a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "docs/features/transcript/ask-user-question-turn-flow.html"}, "region": {"startLine": 537}}}]}, {"ruleId": "scanner-4fa80d0273b757d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-tank-http-route-security.mjs:3"}, "properties": {"repobilityId": "1a96466746154c41", "scanner": "scanner-primary", "fingerprint": "4fa80d0273b757d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-tank-http-route-security.mjs"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-4d46ef1992a6b461", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-stop-request-migration.mjs:25"}, "properties": {"repobilityId": "41671b7e7cb2dc72", "scanner": "scanner-primary", "fingerprint": "4d46ef1992a6b461", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-stop-request-migration.mjs"}, "region": {"startLine": 25}}}]}, {"ruleId": "scanner-5ea6e860c69c8ee4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-session-readonly-rbac.mjs:22"}, "properties": {"repobilityId": "d072f2ff3ef945f2", "scanner": "scanner-primary", "fingerprint": "5ea6e860c69c8ee4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-session-readonly-rbac.mjs"}, "region": {"startLine": 22}}}]}, {"ruleId": "scanner-5a7532d41eed383a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-session-pod-hot-swap-migration.mjs:34"}, "properties": {"repobilityId": "9e7b4134fc60b670", "scanner": "scanner-primary", "fingerprint": "5a7532d41eed383a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-session-pod-hot-swap-migration.mjs"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-042ca1ff0445ed88", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-context-window-table-migration.mjs:32"}, "properties": {"repobilityId": "e709ec97a9107a43", "scanner": "scanner-primary", "fingerprint": "042ca1ff0445ed88", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-context-window-table-migration.mjs"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-71c83d0a99242073", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/check-claude-agent-authority.mjs:13"}, "properties": {"repobilityId": "f9df6e94a5de41b1", "scanner": "scanner-primary", "fingerprint": "71c83d0a99242073", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/check-claude-agent-authority.mjs"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-129e5f869ca418c8", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/classify-tank-test-fidelity.mjs:4"}, "properties": {"repobilityId": "238622c5da7a998b", "scanner": "scanner-primary", "fingerprint": "129e5f869ca418c8", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/classify-tank-test-fidelity.mjs"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-ce1b9eb186789516", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in claude-runner/src/cliVersion.ts:17"}, "properties": {"repobilityId": "e2c339c4fbb5f59a", "scanner": "scanner-primary", "fingerprint": "ce1b9eb186789516", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "claude-runner/src/cliVersion.ts"}, "region": {"startLine": 17}}}]}, {"ruleId": "scanner-7723daa8c4f04682", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in codex-runner/src/appServerTransport.ts:1"}, "properties": {"repobilityId": "6d1b7bba0a25bdbb", "scanner": "scanner-primary", "fingerprint": "7723daa8c4f04682", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "codex-runner/src/appServerTransport.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-fc20d66155c02d35", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "77cecd5496e788a5", "scanner": "scanner-primary", "fingerprint": "fc20d66155c02d35", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 86}}}]}, {"ruleId": "scanner-fc20d66155c02d35", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c30c340c486c9aaa", "scanner": "scanner-primary", "fingerprint": "fc20d66155c02d35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 123}}}]}, {"ruleId": "scanner-fc20d66155c02d35", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f48492f57e1888ef", "scanner": "scanner-primary", "fingerprint": "fc20d66155c02d35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 127}}}]}, {"ruleId": "scanner-fc20d66155c02d35", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "479b86dfa865e4da", "scanner": "scanner-primary", "fingerprint": "fc20d66155c02d35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 169}}}]}, {"ruleId": "scanner-fc20d66155c02d35", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "479b86dfa865e4da", "scanner": "scanner-primary", "fingerprint": "fc20d66155c02d35", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 185}}}]}, {"ruleId": "scanner-93bea773b1b09a43", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "19b69667b5c8294a", "scanner": "scanner-primary", "fingerprint": "93bea773b1b09a43", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/docker-build-check.yaml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a54a3c96ee4670f2", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "242da82a8ce6a6cf", "scanner": "scanner-primary", "fingerprint": "a54a3c96ee4670f2", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/pr-feature-contracts.yml"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-35492a7c2212e3c3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8154eb4580e6aaf2", "scanner": "scanner-primary", "fingerprint": "35492a7c2212e3c3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-container-build.yml"}, "region": {"startLine": 35}}}]}, {"ruleId": "scanner-35492a7c2212e3c3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "739372443860a032", "scanner": "scanner-primary", "fingerprint": "35492a7c2212e3c3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-container-build.yml"}, "region": {"startLine": 38}}}]}, {"ruleId": "scanner-35492a7c2212e3c3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "af136692054a1fdc", "scanner": "scanner-primary", "fingerprint": "35492a7c2212e3c3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-container-build.yml"}, "region": {"startLine": 48}}}]}, {"ruleId": "scanner-35492a7c2212e3c3", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "07c608bbbbee5561", "scanner": "scanner-primary", "fingerprint": "35492a7c2212e3c3", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-container-build.yml"}, "region": {"startLine": 81}}}]}, {"ruleId": "scanner-2821464fc067500e", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f8e1569a6240dc84", "scanner": "scanner-primary", "fingerprint": "2821464fc067500e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/agent-container-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21de1f86360b3f80", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2774b8eae471397c", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 82}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "740bb26c9ecd3f77", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "70223beb4c40e606", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 131}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "f5c0b162a42c0daa", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "21de1f86360b3f80", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 174}}}]}, {"ruleId": "scanner-180bdbf1b4831888", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c8993ee5ac805612", "scanner": "scanner-primary", "fingerprint": "180bdbf1b4831888", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 179}}}]}, {"ruleId": "scanner-cd4a8a0fcf4d548c", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "f8e8798a061a9d7f", "scanner": "scanner-primary", "fingerprint": "cd4a8a0fcf4d548c", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/session-images-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-50c16f9f4d884f88", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ceb87d23e938265d", "scanner": "scanner-primary", "fingerprint": "50c16f9f4d884f88", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mcp-auth-proxy-build.yml"}, "region": {"startLine": 39}}}]}, {"ruleId": "scanner-50c16f9f4d884f88", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "2dd84cd5f8a78487", "scanner": "scanner-primary", "fingerprint": "50c16f9f4d884f88", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mcp-auth-proxy-build.yml"}, "region": {"startLine": 67}}}]}, {"ruleId": "scanner-50c16f9f4d884f88", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "c6a8ace23b930a7d", "scanner": "scanner-primary", "fingerprint": "50c16f9f4d884f88", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mcp-auth-proxy-build.yml"}, "region": {"startLine": 77}}}]}, {"ruleId": "scanner-50c16f9f4d884f88", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8fcead10a60efd9d", "scanner": "scanner-primary", "fingerprint": "50c16f9f4d884f88", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mcp-auth-proxy-build.yml"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-54aa27620d15a65e", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "24559b5799fa6daa", "scanner": "scanner-primary", "fingerprint": "54aa27620d15a65e", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/mcp-auth-proxy-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ac805af90d7a80e", "level": "error", "message": {"text": "GitHub Action tracks a moving branch"}, "properties": {"repobilityId": "877caa1e2f721c9a", "scanner": "scanner-primary", "fingerprint": "6ac805af90d7a80e", "layer": "cicd", "severity": "high", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tofu.yml"}, "region": {"startLine": 34}}}]}, {"ruleId": "scanner-4ddac0057c502d64", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "990de9e13ca5a4d0", "scanner": "scanner-primary", "fingerprint": "4ddac0057c502d64", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/tofu.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "979cd45924845082", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-6ba9bfab5f283202", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3a255e942786f887", "scanner": "scanner-primary", "fingerprint": "6ba9bfab5f283202", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 78}}}]}, {"ruleId": "scanner-b769174c9fcf8ea8", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "e34b6cb9b56931d2", "scanner": "scanner-primary", "fingerprint": "b769174c9fcf8ea8", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8656b712106ef0ac", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9d179940d8e485d4", "scanner": "scanner-primary", "fingerprint": "8656b712106ef0ac", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-proxy-build.yml"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-8656b712106ef0ac", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "ad1447ae1448c349", "scanner": "scanner-primary", "fingerprint": "8656b712106ef0ac", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-proxy-build.yml"}, "region": {"startLine": 31}}}]}, {"ruleId": "scanner-8656b712106ef0ac", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "d5ab51813c88a008", "scanner": "scanner-primary", "fingerprint": "8656b712106ef0ac", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-proxy-build.yml"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-8656b712106ef0ac", "level": "warning", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "531743bf4c048309", "scanner": "scanner-primary", "fingerprint": "8656b712106ef0ac", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-proxy-build.yml"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-a060c19ada40510d", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "295f5986302e6bc4", "scanner": "scanner-primary", "fingerprint": "a060c19ada40510d", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/api-proxy-build.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24d541972cc1c4f0", "level": "note", "message": {"text": "Very large file: frontend/src/migrationPolicy.test.ts (1591 lines)"}, "properties": {"repobilityId": "09ac1cb83104829f", "scanner": "scanner-primary", "fingerprint": "24d541972cc1c4f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5b747a7004f6b1d4", "level": "note", "message": {"text": "Very large file: frontend/src/App.tsx (26763 lines)"}, "properties": {"repobilityId": "eae82fec6aab8d47", "scanner": "scanner-primary", "fingerprint": "5b747a7004f6b1d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1019aececb9ade8c", "level": "note", "message": {"text": "Very large file: api-proxy/src/tank_api_proxy/server.py (1119 lines)"}, "properties": {"repobilityId": "435931999694dd42", "scanner": "scanner-primary", "fingerprint": "1019aececb9ade8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4d7a8aa015b5ef4a", "level": "note", "message": {"text": "Very large file: backend-go/internal/pgstore/migrations.go (2276 lines)"}, "properties": {"repobilityId": "6b8e41cffe047800", "scanner": "scanner-primary", "fingerprint": "4d7a8aa015b5ef4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e4fcfc4387508d62", "level": "note", "message": {"text": "Very large file: backend-go/internal/store/session_events.go (1380 lines)"}, "properties": {"repobilityId": "7083ea08e418fec5", "scanner": "scanner-primary", "fingerprint": "e4fcfc4387508d62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-22bb51cf6d7a75df", "level": "note", "message": {"text": "Very large file: backend-go/internal/sessionmodel/sessionmodel.go (1485 lines)"}, "properties": {"repobilityId": "2f26f0c826f9fc60", "scanner": "scanner-primary", "fingerprint": "22bb51cf6d7a75df", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-32986466e1c8c4ed", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/control_actions.go (1749 lines)"}, "properties": {"repobilityId": "432a90e30a1223d9", "scanner": "scanner-primary", "fingerprint": "32986466e1c8c4ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a5e3c54ec0b17dc", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/handlers_turns.go (1358 lines)"}, "properties": {"repobilityId": "42be718037e5eeb3", "scanner": "scanner-primary", "fingerprint": "0a5e3c54ec0b17dc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d632dc8a1a898b48", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/control_actions_test.go (1490 lines)"}, "properties": {"repobilityId": "f3d24105235e1d16", "scanner": "scanner-primary", "fingerprint": "d632dc8a1a898b48", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b2b0ca247b2eee76", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/observability.go (2947 lines)"}, "properties": {"repobilityId": "8261d98522ccc200", "scanner": "scanner-primary", "fingerprint": "b2b0ca247b2eee76", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-325420a75ea2d5cb", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/transcript_projection_test.go (1913 lines)"}, "properties": {"repobilityId": "ea7e6594c58778a4", "scanner": "scanner-primary", "fingerprint": "325420a75ea2d5cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3081af495a21448c", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/handlers_turns_test.go (1701 lines)"}, "properties": {"repobilityId": "36a367db19c22ac6", "scanner": "scanner-primary", "fingerprint": "3081af495a21448c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6803889229d8dc8a", "level": "note", "message": {"text": "Very large file: backend-go/cmd/tank-operator/transcript_projection.go (3068 lines)"}, "properties": {"repobilityId": "aa41246e26c076f0", "scanner": "scanner-primary", "fingerprint": "6803889229d8dc8a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8f6f6816b4cf8ad5", "level": "note", "message": {"text": "Very large file: scripts/check-stop-request-migration.mjs (1300 lines)"}, "properties": {"repobilityId": "224394c4327ad854", "scanner": "scanner-primary", "fingerprint": "8f6f6816b4cf8ad5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2de60a28891c54bc", "level": "note", "message": {"text": "Very large file: scripts/check-removed-chat-runtime.mjs (932 lines)"}, "properties": {"repobilityId": "82692f10dccdea77", "scanner": "scanner-primary", "fingerprint": "2de60a28891c54bc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-35c9e538caf5ef6b", "level": "note", "message": {"text": "Very large file: claude-runner/src/runner.ts (3415 lines)"}, "properties": {"repobilityId": "06010199c82516b0", "scanner": "scanner-primary", "fingerprint": "35c9e538caf5ef6b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4decb86f8e3d6a1a", "level": "note", "message": {"text": "Very large file: claude-runner/src/runner.test.ts (2283 lines)"}, "properties": {"repobilityId": "f5f672226a3c8266", "scanner": "scanner-primary", "fingerprint": "4decb86f8e3d6a1a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6fbef61eda743714", "level": "note", "message": {"text": "Very large file: codex-runner/src/runner.ts (1943 lines)"}, "properties": {"repobilityId": "22b2cdc10acb2e08", "scanner": "scanner-primary", "fingerprint": "6fbef61eda743714", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a7b157201e3853b7", "level": "note", "message": {"text": "Very large file: claude-container/mcp-auth-proxy/tests/test_server.py (1899 lines)"}, "properties": {"repobilityId": "8d5affde0d1c3bb2", "scanner": "scanner-primary", "fingerprint": "a7b157201e3853b7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e5705f73e970012f", "level": "note", "message": {"text": "Very large file: claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py (4816 lines)"}, "properties": {"repobilityId": "2e2afa64695e3732", "scanner": "scanner-primary", "fingerprint": "e5705f73e970012f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "6d497777e7397999", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "23e3fda99a91e03e", "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": "c808128ca5abb456", "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": "6d61e301c895a7d5", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "266374dc9cc51045", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "ac8bd8a9f2d65840", "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": "33324d16a74e1183", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-e725d2ab884fbd49", "level": "note", "message": {"text": "Multiple root agent instruction files without precedence"}, "properties": {"repobilityId": "1953db6c89508d22", "scanner": "scanner-primary", "fingerprint": "e725d2ab884fbd49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["agent-instructions", "governance"]}}, {"ruleId": "scanner-7e6fd553f59463b2", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/vitest.config.ts:8"}, "properties": {"repobilityId": "d4590a975161ae76", "scanner": "scanner-primary", "fingerprint": "7e6fd553f59463b2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92465c9eedf8fee8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/auth.ts:54"}, "properties": {"repobilityId": "f266dd51ed700ec6", "scanner": "scanner-primary", "fingerprint": "92465c9eedf8fee8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea1f592cfac3d7c0", "level": "none", "message": {"text": "Commented-code block (11 lines) in frontend/src/CopyButton.test.tsx:3"}, "properties": {"repobilityId": "9b8d212631799239", "scanner": "scanner-primary", "fingerprint": "ea1f592cfac3d7c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-753f3f2cf7f2ad57", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/adminReferenceLinks.ts:3"}, "properties": {"repobilityId": "bad7465d86d00c49", "scanner": "scanner-primary", "fingerprint": "753f3f2cf7f2ad57", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-900c1577d48ba32a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/repos.test.ts:26"}, "properties": {"repobilityId": "12d2f136477b3014", "scanner": "scanner-primary", "fingerprint": "900c1577d48ba32a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f50a9ff440915815", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/TurnViewButton.test.tsx:3"}, "properties": {"repobilityId": "a0f0cd809c4610e9", "scanner": "scanner-primary", "fingerprint": "f50a9ff440915815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ef4107ee2e0d44d", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/ChatComposer.tsx:14"}, "properties": {"repobilityId": "b59004b0da810418", "scanner": "scanner-primary", "fingerprint": "2ef4107ee2e0d44d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-99a58d7fff7299ce", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/StaticPageView.tsx:42"}, "properties": {"repobilityId": "c8861540a6908b73", "scanner": "scanner-primary", "fingerprint": "99a58d7fff7299ce", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab0868e3e2bc0310", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/breadcrumb.render.test.tsx:3"}, "properties": {"repobilityId": "43a15bf6971c1f43", "scanner": "scanner-primary", "fingerprint": "ab0868e3e2bc0310", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-accb0a314c79e24b", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/homePreferences.ts:6"}, "properties": {"repobilityId": "d710214903436b72", "scanner": "scanner-primary", "fingerprint": "accb0a314c79e24b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5652cedf9e3453e9", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/transcriptThinkingPlacement.test.ts:14"}, "properties": {"repobilityId": "c2345aa22efdc21e", "scanner": "scanner-primary", "fingerprint": "5652cedf9e3453e9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac00383e840342bd", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/sessionListTelemetry.ts:1"}, "properties": {"repobilityId": "d1a673e0c1f01d37", "scanner": "scanner-primary", "fingerprint": "ac00383e840342bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baff92e0fabcab8a", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/longTaskTelemetry.ts:3"}, "properties": {"repobilityId": "8ea70ee4ff8573ba", "scanner": "scanner-primary", "fingerprint": "baff92e0fabcab8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b518cca36d698d72", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/repos.ts:144"}, "properties": {"repobilityId": "18ae3796ec38dacc", "scanner": "scanner-primary", "fingerprint": "b518cca36d698d72", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06fd54966d7e89b0", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/sessionStore.test.ts:249"}, "properties": {"repobilityId": "d6b2f5234cba6c48", "scanner": "scanner-primary", "fingerprint": "06fd54966d7e89b0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39657527f233b7e4", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/turnViewNavigation.ts:3"}, "properties": {"repobilityId": "8be1647996e7d1ab", "scanner": "scanner-primary", "fingerprint": "39657527f233b7e4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34026ebabafe51eb", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/composerCss.test.ts:356"}, "properties": {"repobilityId": "1b7fb64cf46eddc8", "scanner": "scanner-primary", "fingerprint": "34026ebabafe51eb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85d60d87325bb8f7", "level": "none", "message": {"text": "Commented-code block (12 lines) in frontend/src/compactPager.render.test.tsx:3"}, "properties": {"repobilityId": "c57ca3d41f46f583", "scanner": "scanner-primary", "fingerprint": "85d60d87325bb8f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f52fd4671a3abede", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/conversationProjection.ts:137"}, "properties": {"repobilityId": "81c85e68b08848b1", "scanner": "scanner-primary", "fingerprint": "f52fd4671a3abede", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fdb42a9a3db0d174", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/transcriptThinkingPlacement.ts:3"}, "properties": {"repobilityId": "123ffa15dee54052", "scanner": "scanner-primary", "fingerprint": "fdb42a9a3db0d174", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c5a9d522ac1f409", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/timeService.test.ts:10"}, "properties": {"repobilityId": "c86f491e19c1a41f", "scanner": "scanner-primary", "fingerprint": "8c5a9d522ac1f409", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00cc725ffc83060a", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/transcriptMerge.ts:1"}, "properties": {"repobilityId": "b63baa8c58fa125d", "scanner": "scanner-primary", "fingerprint": "00cc725ffc83060a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dcb89a7b5032e1f7", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/filesView.ts:1"}, "properties": {"repobilityId": "d0ccf665ef3b6d55", "scanner": "scanner-primary", "fingerprint": "dcb89a7b5032e1f7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-73be17c018c5050f", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/LinkButton.test.tsx:3"}, "properties": {"repobilityId": "72fb0f657e2b579e", "scanner": "scanner-primary", "fingerprint": "73be17c018c5050f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b0fca60d894ebb0", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/conversationReducer.ts:46"}, "properties": {"repobilityId": "a02a24de2aceded0", "scanner": "scanner-primary", "fingerprint": "3b0fca60d894ebb0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b1d88127a8d7936", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/appRoutes.ts:28"}, "properties": {"repobilityId": "f1858f95a74aef19", "scanner": "scanner-primary", "fingerprint": "5b1d88127a8d7936", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d49da3379f0ea7e1", "level": "none", "message": {"text": "Commented-code block (9 lines) in frontend/src/sessionActivity.ts:131"}, "properties": {"repobilityId": "81b12bb5d69dff80", "scanner": "scanner-primary", "fingerprint": "d49da3379f0ea7e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-977d045619c65afa", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/mobileTopBar.render.test.tsx:4"}, "properties": {"repobilityId": "b9a8ec2de8ab8752", "scanner": "scanner-primary", "fingerprint": "977d045619c65afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa4bfe6e84ce01f3", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/turnActivityPager.ts:8"}, "properties": {"repobilityId": "9fc5f5db48a9c949", "scanner": "scanner-primary", "fingerprint": "fa4bfe6e84ce01f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05095c57ed60e68f", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/streamBackoff.ts:3"}, "properties": {"repobilityId": "25091dad1ae6dcc8", "scanner": "scanner-primary", "fingerprint": "05095c57ed60e68f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0c0cc8c61e397b0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/sdkDurableStreamRegression.test.ts:136"}, "properties": {"repobilityId": "cf8bf617973348ef", "scanner": "scanner-primary", "fingerprint": "0c0cc8c61e397b0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2532c908bbf9344f", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/controlActions.ts:282"}, "properties": {"repobilityId": "e18f7b1f2bffbd05", "scanner": "scanner-primary", "fingerprint": "2532c908bbf9344f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5ad257d5e041e4bf", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/sessionCostEstimate.ts:208"}, "properties": {"repobilityId": "750575724ebe82e1", "scanner": "scanner-primary", "fingerprint": "5ad257d5e041e4bf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0603e3385940d7fa", "level": "none", "message": {"text": "Commented-code block (18 lines) in frontend/src/sessionStore.ts:8"}, "properties": {"repobilityId": "7122661c3fb001dc", "scanner": "scanner-primary", "fingerprint": "0603e3385940d7fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2455cb22b5940230", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/migrationPolicy.test.ts:120"}, "properties": {"repobilityId": "cb4a2fcec464fead", "scanner": "scanner-primary", "fingerprint": "2455cb22b5940230", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-684b1e0fae6db120", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/navigationMode.test.ts:62"}, "properties": {"repobilityId": "fd314b2c14be5fba", "scanner": "scanner-primary", "fingerprint": "684b1e0fae6db120", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfebfcce10182358", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/main.tsx:44"}, "properties": {"repobilityId": "11a608445e209cdf", "scanner": "scanner-primary", "fingerprint": "bfebfcce10182358", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cec026f7cdd3a50d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/DesktopOnly.tsx:14"}, "properties": {"repobilityId": "743032674ba1876e", "scanner": "scanner-primary", "fingerprint": "cec026f7cdd3a50d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-80e231cda13bd9e3", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/timeService.ts:3"}, "properties": {"repobilityId": "f275d8e54557e143", "scanner": "scanner-primary", "fingerprint": "80e231cda13bd9e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51c2a863eec56ba1", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/keyboardShortcuts.ts:1"}, "properties": {"repobilityId": "f8c5bfb0364dec60", "scanner": "scanner-primary", "fingerprint": "51c2a863eec56ba1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0015eaaea25125c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/conversationProjection.test.ts:311"}, "properties": {"repobilityId": "3cc1a8a79b5f466e", "scanner": "scanner-primary", "fingerprint": "0015eaaea25125c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0a9f44d0bd1a8bd", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/MobileTopBar.tsx:25"}, "properties": {"repobilityId": "11a138f40c4f41f6", "scanner": "scanner-primary", "fingerprint": "b0a9f44d0bd1a8bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c708e2ccba636f1", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/transcriptFocusSurface.test.ts:10"}, "properties": {"repobilityId": "717bf4972d5086bd", "scanner": "scanner-primary", "fingerprint": "1c708e2ccba636f1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42e8280e6fc13a7d", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/sessionEventStreamTelemetry.ts:153"}, "properties": {"repobilityId": "6bb7cadafab1ec13", "scanner": "scanner-primary", "fingerprint": "42e8280e6fc13a7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a05a69b64d821139", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/sessionAvatars.tsx:24"}, "properties": {"repobilityId": "7eb05adcbadebda0", "scanner": "scanner-primary", "fingerprint": "a05a69b64d821139", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72130070ab3a282e", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/transcriptRefreshIndicator.ts:4"}, "properties": {"repobilityId": "3a3c02c80ffc9448", "scanner": "scanner-primary", "fingerprint": "72130070ab3a282e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd3433594072bedc", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/turnActivityCache.ts:37"}, "properties": {"repobilityId": "e4952ab289a81dd7", "scanner": "scanner-primary", "fingerprint": "fd3433594072bedc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12ae65e1f95dd015", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/App.tsx:429"}, "properties": {"repobilityId": "e90f0a3a422eee6d", "scanner": "scanner-primary", "fingerprint": "12ae65e1f95dd015", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b294bd63998221ee", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 frontend/src/App.tsx:15706"}, "properties": {"repobilityId": "527122f09ad49961", "scanner": "scanner-primary", "fingerprint": "b294bd63998221ee", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d5c5dfb0bc57a027", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/navigationMode.ts:26"}, "properties": {"repobilityId": "02b548a7a72a21cb", "scanner": "scanner-primary", "fingerprint": "d5c5dfb0bc57a027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ecbabca7089a4147", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/conversationReducer.test.ts:198"}, "properties": {"repobilityId": "ff596a3a3de9f4cf", "scanner": "scanner-primary", "fingerprint": "ecbabca7089a4147", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b13a483fa54ac22", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/transcriptRefreshShortcut.ts:3"}, "properties": {"repobilityId": "5eb949e00da49bcc", "scanner": "scanner-primary", "fingerprint": "8b13a483fa54ac22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2209d9b2f1e424c", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/breakpoints.ts:3"}, "properties": {"repobilityId": "fe6e5789a20d1391", "scanner": "scanner-primary", "fingerprint": "a2209d9b2f1e424c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a80592b5f2a47a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/sessionEventStreamTelemetry.test.ts:5"}, "properties": {"repobilityId": "a2e93fd0cdfb19c6", "scanner": "scanner-primary", "fingerprint": "1a80592b5f2a47a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a07fbc49627bf6cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/mobileShell.test.ts:69"}, "properties": {"repobilityId": "66c06f792ba73b6b", "scanner": "scanner-primary", "fingerprint": "a07fbc49627bf6cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e76628cfc8c4af2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/sessionActivity.test.ts:135"}, "properties": {"repobilityId": "890d45ecc753aa3c", "scanner": "scanner-primary", "fingerprint": "8e76628cfc8c4af2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e7cd38ebadc54a2", "level": "none", "message": {"text": "Commented-code block (7 lines) in frontend/src/adminAvatarCrop.ts:22"}, "properties": {"repobilityId": "0265da8081e24470", "scanner": "scanner-primary", "fingerprint": "4e7cd38ebadc54a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b875ae23dc3ae907", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/styleguide/question-heading.tsx:1"}, "properties": {"repobilityId": "d602dd5c53d61ab0", "scanner": "scanner-primary", "fingerprint": "b875ae23dc3ae907", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35f8ad7bc97d4631", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/mobile-shell.tsx:1"}, "properties": {"repobilityId": "91b16877dbd5f27f", "scanner": "scanner-primary", "fingerprint": "35f8ad7bc97d4631", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c30a9ffc92c710c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/shared.tsx:1"}, "properties": {"repobilityId": "9f520af383503df5", "scanner": "scanner-primary", "fingerprint": "c30a9ffc92c710c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d56f9b009ae7896e", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/prompt-collapse-parity.tsx:5"}, "properties": {"repobilityId": "4b2ffea9d2e3f2f0", "scanner": "scanner-primary", "fingerprint": "d56f9b009ae7896e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc3c24d8c22e6592", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/styleguide/avatars.tsx:7"}, "properties": {"repobilityId": "34611e2bbc658ac1", "scanner": "scanner-primary", "fingerprint": "cc3c24d8c22e6592", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b09b73c7dbfb8dee", "level": "none", "message": {"text": "Commented-code block (8 lines) in frontend/src/components/RepoPicker.test.tsx:4"}, "properties": {"repobilityId": "861850efba86ab95", "scanner": "scanner-primary", "fingerprint": "b09b73c7dbfb8dee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1f27beefc872afa", "level": "none", "message": {"text": "Commented-code block (30 lines) in frontend/src/components/RepoPicker.tsx:9"}, "properties": {"repobilityId": "7cd48b2eb9b4923d", "scanner": "scanner-primary", "fingerprint": "e1f27beefc872afa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7774cc2b2b0a0c89", "level": "none", "message": {"text": "Commented-code block (6 lines) in frontend/src/components/ui/sheet.tsx:6"}, "properties": {"repobilityId": "c4a769649cd4fa8c", "scanner": "scanner-primary", "fingerprint": "7774cc2b2b0a0c89", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b85662443fa5584", "level": "none", "message": {"text": "Commented-code block (5 lines) in frontend/src/components/ai-elements/prompt-input.tsx:1214"}, "properties": {"repobilityId": "c5bfd01d9af76ca9", "scanner": "scanner-primary", "fingerprint": "8b85662443fa5584", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d482b99190b63597", "level": "none", "message": {"text": "Commented-code block (6 lines) in api-proxy/tests/test_server.py:466"}, "properties": {"repobilityId": "542291a149a4b3f6", "scanner": "scanner-primary", "fingerprint": "d482b99190b63597", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-833a639590c0ca8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in api-proxy/src/tank_api_proxy/metrics.py:297"}, "properties": {"repobilityId": "972392cb5210f54f", "scanner": "scanner-primary", "fingerprint": "833a639590c0ca8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-78fd20714bdb7941", "level": "none", "message": {"text": "Commented-code block (6 lines) in api-proxy/src/tank_api_proxy/server.py:108"}, "properties": {"repobilityId": "f487d17b323a1071", "scanner": "scanner-primary", "fingerprint": "78fd20714bdb7941", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-315a715a0ecbe8a9", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/check-stop-request-migration.mjs:11"}, "properties": {"repobilityId": "eafcbf6ff65f23d4", "scanner": "scanner-primary", "fingerprint": "315a715a0ecbe8a9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-591d3b6b3813ea6c", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/check-session-readonly-rbac.mjs:5"}, "properties": {"repobilityId": "93c698525b18ae22", "scanner": "scanner-primary", "fingerprint": "591d3b6b3813ea6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbbaca8a365f7cde", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-session-pod-hot-swap-migration.mjs:17"}, "properties": {"repobilityId": "25081dcdcc6b5a4a", "scanner": "scanner-primary", "fingerprint": "cbbaca8a365f7cde", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ceb7bc2f908307a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/check-context-window-table-migration.mjs:5"}, "properties": {"repobilityId": "62cf016b7daa7570", "scanner": "scanner-primary", "fingerprint": "ceb7bc2f908307a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4e7b288e1f6563e7", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/classify-tank-test-fidelity.mjs:367"}, "properties": {"repobilityId": "7744d65b1820ecb4", "scanner": "scanner-primary", "fingerprint": "4e7b288e1f6563e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac30d7a80162a857", "level": "none", "message": {"text": "Commented-code block (8 lines) in scripts/check-removed-chat-runtime.mjs:60"}, "properties": {"repobilityId": "95a7d0507896220a", "scanner": "scanner-primary", "fingerprint": "ac30d7a80162a857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c8c2c447a7e07dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/check-removed-chat-runtime.mjs:760"}, "properties": {"repobilityId": "2432b2edb57ae0c8", "scanner": "scanner-primary", "fingerprint": "6c8c2c447a7e07dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fe94e176790cbb9f", "level": "none", "message": {"text": "Commented-code block (10 lines) in scripts/check-askuserquestion-migration.mjs:9"}, "properties": {"repobilityId": "9b99695f486b5f2a", "scanner": "scanner-primary", "fingerprint": "fe94e176790cbb9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d698e8b32a282399", "level": "none", "message": {"text": "Commented-code block (10 lines) in claude-runner/src/cliVersion.ts:1"}, "properties": {"repobilityId": "a520589ed8363593", "scanner": "scanner-primary", "fingerprint": "d698e8b32a282399", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb0ba98713bc0db2", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionEvents.ts:1"}, "properties": {"repobilityId": "35b3b942c9e57f05", "scanner": "scanner-primary", "fingerprint": "cb0ba98713bc0db2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af7a97d3c1e15d14", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionBus.ts:32"}, "properties": {"repobilityId": "48a4a9358f3c2b81", "scanner": "scanner-primary", "fingerprint": "af7a97d3c1e15d14", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8d9f9832198cdfd", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/runner.terminal-correctness.test.ts:1"}, "properties": {"repobilityId": "67079ddc3d9356c3", "scanner": "scanner-primary", "fingerprint": "c8d9f9832198cdfd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8ecbb424352f705b", "level": "none", "message": {"text": "Commented-code block (8 lines) in claude-runner/src/sessionBus.test.ts:1"}, "properties": {"repobilityId": "226d7fd10b86fc89", "scanner": "scanner-primary", "fingerprint": "8ecbb424352f705b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-21aa3ef5d5ba587d", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/runner.ts:1"}, "properties": {"repobilityId": "d064d47f9077b32b", "scanner": "scanner-primary", "fingerprint": "21aa3ef5d5ba587d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c12e5f18bdce1a1f", "level": "none", "message": {"text": "Commented-code block (17 lines) in claude-runner/src/metrics.ts:113"}, "properties": {"repobilityId": "83276ac9d8c3acf8", "scanner": "scanner-primary", "fingerprint": "c12e5f18bdce1a1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d93d099d11b0c1f", "level": "none", "message": {"text": "Commented-code block (7 lines) in claude-runner/src/runner.test.ts:269"}, "properties": {"repobilityId": "ca0eecb27ddf1175", "scanner": "scanner-primary", "fingerprint": "9d93d099d11b0c1f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97f40974767576c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/adapters/claude.ts:59"}, "properties": {"repobilityId": "8a0235b1b90cd199", "scanner": "scanner-primary", "fingerprint": "97f40974767576c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-88542586db4113f0", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-runner/src/sessionbus/sessionBusSubjects.test.ts:18"}, "properties": {"repobilityId": "c031cc5da41ae46b", "scanner": "scanner-primary", "fingerprint": "88542586db4113f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-593d5084cd77b232", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/sessionEvents.ts:1"}, "properties": {"repobilityId": "e68b1882292fe95a", "scanner": "scanner-primary", "fingerprint": "593d5084cd77b232", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-722ef1d4dc8005e3", "level": "none", "message": {"text": "Commented-code block (7 lines) in codex-runner/src/appServerTransport.ts:44"}, "properties": {"repobilityId": "10dffa70ae976b59", "scanner": "scanner-primary", "fingerprint": "722ef1d4dc8005e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-493fb4c857b4ddf1", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/sessionBus.ts:32"}, "properties": {"repobilityId": "8e37f32935dd5319", "scanner": "scanner-primary", "fingerprint": "493fb4c857b4ddf1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-258cf0d6d6bd841a", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/runner.correctness.test.ts:1"}, "properties": {"repobilityId": "ed94ff7b7bba8637", "scanner": "scanner-primary", "fingerprint": "258cf0d6d6bd841a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4204f8d82f2a3a93", "level": "none", "message": {"text": "Commented-code block (6 lines) in codex-runner/src/runner.ts:5"}, "properties": {"repobilityId": "8fc2a574b4692d9b", "scanner": "scanner-primary", "fingerprint": "4204f8d82f2a3a93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-771bbd1234cd07b4", "level": "none", "message": {"text": "Commented-code block (8 lines) in codex-runner/src/metrics.ts:142"}, "properties": {"repobilityId": "7152aa3be07e9ec6", "scanner": "scanner-primary", "fingerprint": "771bbd1234cd07b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d9373987da500645", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/runner.test.ts:219"}, "properties": {"repobilityId": "dfb204fd4ab5d910", "scanner": "scanner-primary", "fingerprint": "d9373987da500645", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93dd8905be46ce15", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.ts:47"}, "properties": {"repobilityId": "374d0de3cbb4244a", "scanner": "scanner-primary", "fingerprint": "93dd8905be46ce15", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0afc71b8148e6db2", "level": "none", "message": {"text": "Commented-code block (5 lines) in codex-runner/src/adapters/codex.test.ts:549"}, "properties": {"repobilityId": "03476f2e76559ad8", "scanner": "scanner-primary", "fingerprint": "0afc71b8148e6db2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02c7b745d353b320", "level": "none", "message": {"text": "Commented-code block (5 lines) in runner-shared/sessionBus.js:9"}, "properties": {"repobilityId": "ebe3093d0417860e", "scanner": "scanner-primary", "fingerprint": "02c7b745d353b320", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ac807ef88b7de2b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/sessionBus.js:247"}, "properties": {"repobilityId": "d05eca336008ec05", "scanner": "scanner-primary", "fingerprint": "1ac807ef88b7de2b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-dcf36097b30c69a5", "level": "none", "message": {"text": "Commented-code block (7 lines) in runner-shared/sessionBus.d.ts:169"}, "properties": {"repobilityId": "456830b985bcf080", "scanner": "scanner-primary", "fingerprint": "dcf36097b30c69a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82514f81e6a46d69", "level": "none", "message": {"text": "Commented-code block (6 lines) in runner-shared/conversation-builders.js:1"}, "properties": {"repobilityId": "03cf2623f69abde7", "scanner": "scanner-primary", "fingerprint": "82514f81e6a46d69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72b9a6c99cd9f2f9", "level": "none", "message": {"text": "Commented-code block (7 lines) in runner-shared/backgroundTaskWake.js:7"}, "properties": {"repobilityId": "5aecab78550d401c", "scanner": "scanner-primary", "fingerprint": "72b9a6c99cd9f2f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63cd3444e0ac4d8f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/backgroundTaskWake.js:22"}, "properties": {"repobilityId": "512e4581b6952ede", "scanner": "scanner-primary", "fingerprint": "63cd3444e0ac4d8f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ba4af1a17fcff0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/runtimeConfig.js:15"}, "properties": {"repobilityId": "8e2041ee5b15121a", "scanner": "scanner-primary", "fingerprint": "5ba4af1a17fcff0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ea87f109482aaf43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 runner-shared/scheduledWakeup.js:15"}, "properties": {"repobilityId": "bc76ce9f9bedeed8", "scanner": "scanner-primary", "fingerprint": "ea87f109482aaf43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8a4df6c95c514c79", "level": "none", "message": {"text": "Commented-code block (11 lines) in claude-container/mcp-auth-proxy/tests/test_server.py:1689"}, "properties": {"repobilityId": "d8c88135aece4fbf", "scanner": "scanner-primary", "fingerprint": "8a4df6c95c514c79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-095c01e289c34c97", "level": "none", "message": {"text": "Commented-code block (5 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/metrics.py:50"}, "properties": {"repobilityId": "0a4c531fbfc28a16", "scanner": "scanner-primary", "fingerprint": "095c01e289c34c97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a96b2282af17fff", "level": "none", "message": {"text": "Commented-code block (9 lines) in claude-container/mcp-auth-proxy/src/mcp_auth_proxy/server.py:64"}, "properties": {"repobilityId": "5f8d979afc48f158", "scanner": "scanner-primary", "fingerprint": "0a96b2282af17fff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "c8a030fec3a32ffd", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "7f2bf94619a2c6d9", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}, {"ruleId": "scanner-2c04133e54348533", "level": "note", "message": {"text": "Near-duplicate function bodies in 2 places"}, "properties": {"repobilityId": "929f64859817e303", "scanner": "scanner-primary", "fingerprint": "2c04133e54348533", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "duplicate", "dry"]}}]}]}