{"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-64e8e70d8e9342a1", "name": "Stray `console.log` in TS/JS \u2014 packages/site-backend/src/bin.ts:83", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/site-backend/src/bin.ts:83"}, "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-726ffea10fc3c53b", "name": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/build-web.ts:28", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/build-web.ts:28"}, "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-45556d5479665704", "name": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/sync-web.ts:16", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/sync-web.ts:16"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1b3a39c4a003a106", "name": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/scripts/build-binary.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/scripts/build-binary.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e144a1f7b1036cc0", "name": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/src/bin.ts:520", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/src/bin.ts:520"}, "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-b1170766f9b77675", "name": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-docs-forbidden-terms.ts:47", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-docs-forbidden-terms.ts:47"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a211439576d9e33", "name": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-install-failure-smoke.ts:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-install-failure-smoke.ts:79"}, "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-c9780714d2d65cc2", "name": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-virtual-e2e.ts:68", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-virtual-e2e.ts:68"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e33e28b451c870c5", "name": "Stray `console.log` in TS/JS \u2014 scripts/frontend-smoke.ts:114", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/frontend-smoke.ts:114"}, "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-5460846b23338631", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-locales.ts:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-locales.ts:53"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-401528a740437cbc", "name": "Stray `console.log` in TS/JS \u2014 packaging/brand/rasterize.ts:52", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packaging/brand/rasterize.ts:52"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f982f6d896c80fba", "name": "Insecure pattern 'node_child_process' in packages/site-backend/src/update-notice.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/update-notice.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-a3da485933c30d06", "name": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-autostart.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-autostart.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-053687dfbe8f7b27", "name": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-update.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-update.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-61abe2d07ff5a555", "name": "Insecure pattern 'node_child_process' in packages/mobile-app/scripts/build-web.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/mobile-app/scripts/build-web.ts: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-356bfe10b0bf3d26", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/scripts/build-binary.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/scripts/build-binary.ts: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-213e1bbc44b41a96", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/git.ts:13", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/git.ts: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-5f4ea4b894705d0b", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/login-task.ts:9", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/login-task.ts:9"}, "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-de176b946b555d98", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/fs.ts:11", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/fs.ts:11"}, "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-3edfc4c7ecc8db62", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-update.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-update.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-ae517f011b54babb", "name": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-register.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-register.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-1c6022d3f509607f", "name": "Insecure pattern 'node_child_process' in packages/shared/src/version.ts:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/version.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-787537871fd9114d", "name": "Insecure pattern 'document_write' in packages/site-frontend/src/conversation-export.ts:114", "shortDescription": {"text": "Insecure pattern 'document_write' in packages/site-frontend/src/conversation-export.ts:114"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c70b97c88b0ce65b", "name": "Insecure pattern 'node_child_process' in scripts/selfhost-install-failure-smoke.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/selfhost-install-failure-smoke.ts: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-95dcf76d4f8d5419", "name": "Insecure pattern 'node_child_process' in scripts/selfhost-virtual-e2e.ts:3", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/selfhost-virtual-e2e.ts: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-492b22be75ac5db0", "name": "Very large file: packages/site-backend/src/app.ts (1762 lines)", "shortDescription": {"text": "Very large file: packages/site-backend/src/app.ts (1762 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9dc2405f5d3093a5", "name": "Very large file: packages/site-frontend/src/App.tsx (2309 lines)", "shortDescription": {"text": "Very large file: packages/site-frontend/src/App.tsx (2309 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-ff909a2761c3d712", "name": "Very large file: packages/site-frontend/src/components/ChatView.tsx (3990 lines)", "shortDescription": {"text": "Very large file: packages/site-frontend/src/components/ChatView.tsx (3990 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-4bd3e118396bbbbe", "name": "Very large file: packages/site-frontend/test/chat-view-devices-refresh.test.tsx (2410 lines)", "shortDescription": {"text": "Very large file: packages/site-frontend/test/chat-view-devices-refresh.test.tsx (2410 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-85edd30fee376cbc", "name": "Node manifest has dependencies but no lockfile: packages/site-backend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/site-backend/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53eac93f4b4fc865", "name": "Node manifest has dependencies but no lockfile: packages/pc-connector-cli/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/pc-connector-cli/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5bf1701056fafc8b", "name": "Node manifest has dependencies but no lockfile: packages/behavior-sdk/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/behavior-sdk/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-840a34aba12e4f62", "name": "Node manifest has dependencies but no lockfile: packages/mobile-app/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/mobile-app/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-faf08a6995bda972", "name": "Node manifest has dependencies but no lockfile: packages/behaviors/remote-claude/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/behaviors/remote-claude/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d0889b6e0ff2a3a4", "name": "Node manifest has dependencies but no lockfile: packages/behaviors/echo/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/behaviors/echo/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-28e92806c0db3cd2", "name": "Node manifest has dependencies but no lockfile: packages/core/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ed2f720b7f0e8e7", "name": "Node manifest has dependencies but no lockfile: packages/pc-connector-daemon/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/pc-connector-daemon/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d895a367c4054063", "name": "Node manifest has dependencies but no lockfile: packages/site-frontend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/site-frontend/package.json"}, "fullDescription": {"text": "`package.json` declares dependencies, but no same-directory npm/pnpm/yarn/bun lockfile was found. Generated projects without lockfiles are less reproducible and harder to secure-scan precisely."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 33 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 27 placeholder/mock markers across 11 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-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: ci, lockfile. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2cd7c52efa4ae0ac", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/src/app.ts:52", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/src/app.ts:52"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6f6154612469b98a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/full-chain.e2e.test.ts:2", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/full-chain.e2e.test.ts:2"}, "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-40c8acca4695bc53", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/announcement.test.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/announcement.test.ts:30"}, "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-af5d2eb7b3a0d668", "name": "Legacy-named symbol `dev_old` in packages/site-backend/test/device-registry.test.ts:134", "shortDescription": {"text": "Legacy-named symbol `dev_old` in packages/site-backend/test/device-registry.test.ts:134"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-49543ec26e8a8df3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/app.test.ts:115", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/app.test.ts:115"}, "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-45d55ac1c66f9e52", "name": "Commented-code block (5 lines) in packages/pc-connector-cli/src/cli.ts:290", "shortDescription": {"text": "Commented-code block (5 lines) in packages/pc-connector-cli/src/cli.ts:290"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2175b916024c36df", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-cli/src/client.ts:113", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-cli/src/client.ts:113"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2292afd11b596702", "name": "Commented-code block (5 lines) in packages/pc-connector-cli/src/bin.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in packages/pc-connector-cli/src/bin.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fd73e99038027896", "name": "Commented-code block (5 lines) in packages/behavior-sdk/src/ipc.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/ipc.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-a01ce1f84c18ccf2", "name": "Commented-code block (6 lines) in packages/behavior-sdk/src/in-process-host.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/behavior-sdk/src/in-process-host.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-1f967a6e1e879404", "name": "Commented-code block (7 lines) in packages/behavior-sdk/src/host.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/behavior-sdk/src/host.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-81233755d669dfdd", "name": "Commented-code block (5 lines) in packages/behavior-sdk/src/manifest-loader.ts:35", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/manifest-loader.ts:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-903f61738aa2ec4c", "name": "Commented-code block (5 lines) in packages/behavior-sdk/src/runtime.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/runtime.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-4dd791a33b52c795", "name": "Commented-code block (6 lines) in packages/behavior-sdk/test/spawn-argv.test.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/behavior-sdk/test/spawn-argv.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-cc354cfc5302d115", "name": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/index.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/index.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-d412f895a3f3592f", "name": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/session-paths.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/session-paths.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-97fe95db78013dd4", "name": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/claude-runner.ts:5", "shortDescription": {"text": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/claude-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-cf4f7179ad8545a5", "name": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/_stdin.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/_stdin.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-2fa4fe0462ee3b5a", "name": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/pretooluse.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/pretooluse.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-812e3196385e0452", "name": "Commented-code block (5 lines) in packages/pc-connector-daemon/scripts/build-binary.ts:24", "shortDescription": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/scripts/build-binary.ts: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-4c817d9a44d4aaa0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/device-identity.ts:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/device-identity.ts:140"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-31f28185faf89e87", "name": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/doctor.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/doctor.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-788aa66b947b71fd", "name": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/auth-token.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/auth-token.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-25640f920d138980", "name": "Commented-code block (10 lines) in packages/pc-connector-daemon/src/behavior-fetcher.ts:4", "shortDescription": {"text": "Commented-code block (10 lines) in packages/pc-connector-daemon/src/behavior-fetcher.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-c09faf779bf77a7e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/behavior-fetcher.ts:32", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/behavior-fetcher.ts:32"}, "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-bfbd3379e0e91169", "name": "Commented-code block (8 lines) in packages/pc-connector-daemon/src/chmod-best.ts:6", "shortDescription": {"text": "Commented-code block (8 lines) in packages/pc-connector-daemon/src/chmod-best.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-e63e882fae4e9e58", "name": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/git.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/git.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-df263b216e36d7fe", "name": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/approvals.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/approvals.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-831a52d238d21b18", "name": "Commented-code block (5 lines) in packages/pc-connector-daemon/src/site-ws-client.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/src/site-ws-client.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-792e080e1e82ffea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/site-ws-client.ts:688", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/site-ws-client.ts:688"}, "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-8ded46423ac705ab", "name": "Commented-code block (11 lines) in packages/pc-connector-daemon/src/daemon.ts:3", "shortDescription": {"text": "Commented-code block (11 lines) in packages/pc-connector-daemon/src/daemon.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-138e803a7b926249", "name": "Commented-code block (12 lines) in packages/pc-connector-daemon/src/bin.ts:15", "shortDescription": {"text": "Commented-code block (12 lines) in packages/pc-connector-daemon/src/bin.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c8b2dda8df24ce06", "name": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/behavior-registry.ts:118", "shortDescription": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/behavior-registry.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9cf0ac31a2f255a", "name": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/bin-behavior-host.e2e.test.ts:5", "shortDescription": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/bin-behavior-host.e2e.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-e7dc09a3450308ec", "name": "Legacy-named symbol `dev_old` in packages/pc-connector-daemon/test/self-register.test.ts:435", "shortDescription": {"text": "Legacy-named symbol `dev_old` in packages/pc-connector-daemon/test/self-register.test.ts:435"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a625dd4054efd4d6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/test/daemon.e2e.test.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/test/daemon.e2e.test.ts:123"}, "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-14f976cde0815351", "name": "Commented-code block (9 lines) in packages/pc-connector-daemon/test/chmod-best.test.ts:1", "shortDescription": {"text": "Commented-code block (9 lines) in packages/pc-connector-daemon/test/chmod-best.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-740d2598ed79a84b", "name": "Commented-code block (5 lines) in packages/pc-connector-daemon/test/behavior-registry-policy.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/test/behavior-registry-policy.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-44a5d7d09171906f", "name": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/site-ws-client.test.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/site-ws-client.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-87bfee08b7dd1010", "name": "Commented-code block (6 lines) in packages/shared/src/device-key.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in packages/shared/src/device-key.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-d6e3cb5f992299ac", "name": "Commented-code block (9 lines) in packages/shared/src/event.ts:3", "shortDescription": {"text": "Commented-code block (9 lines) in packages/shared/src/event.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-82788a76452785be", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-frontend/src/api.ts:337", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-frontend/src/api.ts:337"}, "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-e39b00334934c17c", "name": "Commented-code block (5 lines) in packages/site-frontend/src/components/ApprovalModal.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/ApprovalModal.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-e1bffc9cfb60803b", "name": "Commented-code block (7 lines) in packages/site-frontend/src/components/Attachments.tsx:3", "shortDescription": {"text": "Commented-code block (7 lines) in packages/site-frontend/src/components/Attachments.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-ef862e7b25c01ab1", "name": "Commented-code block (5 lines) in packages/site-frontend/src/components/Transcript.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/Transcript.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-4785c9cfd07333fa", "name": "Commented-code block (15 lines) in packages/site-frontend/src/components/Composer.tsx:3", "shortDescription": {"text": "Commented-code block (15 lines) in packages/site-frontend/src/components/Composer.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-7440bebf93252f73", "name": "Commented-code block (5 lines) in packages/site-frontend/src/components/ChatView.tsx:2044", "shortDescription": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/ChatView.tsx:2044"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f3c7e0d84ece5ff", "name": "Commented-code block (13 lines) in packages/site-frontend/src/claude/message-renderer.ts:5", "shortDescription": {"text": "Commented-code block (13 lines) in packages/site-frontend/src/claude/message-renderer.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-0df7954e26bd0964", "name": "Commented-code block (5 lines) in packages/site-frontend/src/claude/transcript-model.ts:6", "shortDescription": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/claude/transcript-model.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-62a3567a069c4aa0", "name": "Legacy-named symbol `apr_legacy` in packages/site-frontend/test/approval-modal.test.tsx:62", "shortDescription": {"text": "Legacy-named symbol `apr_legacy` in packages/site-frontend/test/approval-modal.test.tsx:62"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dc95a2d1d24f9eef", "name": "Commented-code block (5 lines) in packages/site-frontend/public/sw.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in packages/site-frontend/public/sw.js: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-01ba28d2c1a40a15", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/selfhost-virtual-e2e.ts:302", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/selfhost-virtual-e2e.ts:302"}, "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-526af44b904ea9ec", "name": "54 env vars used in code but missing from .env.example", "shortDescription": {"text": "54 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BUN_TARGET`, `CLAUDE_CODE_ACCOUNT_UUID`, `CLAUDE_CODE_OAUTH_TOKEN`, `CLAUDE_CODE_USER_EMAIL`, `CLAUDE_CONFIG_DIR`, `CLAUDE_PROJECTS_DIR`, `COMPUTERNAME`, `CR_CONNECTOR_APPROVALS` + 46 more. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-da8f7631a7df7107", "name": "Dangling fetch: GET https://api.anthropic.com/api/oauth/usage (packages/behaviors/remote-claude/src/index.ts:1056)", "shortDescription": {"text": "Dangling fetch: GET https://api.anthropic.com/api/oauth/usage (packages/behaviors/remote-claude/src/index.ts:1056)"}, "fullDescription": {"text": "`packages/behaviors/remote-claude/src/index.ts:1056` calls `GET https://api.anthropic.com/api/oauth/usage` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/https:/api.anthropic.com/api/oauth/usage`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-16d05759c3aef329", "name": "Unused endpoint: GET /api/announcement", "shortDescription": {"text": "Unused endpoint: GET /api/announcement"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/announcement` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b8073f7bf758f6d0", "name": "Unused endpoint: USE /api/*", "shortDescription": {"text": "Unused endpoint: USE /api/*"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `USE /api/*` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d30f4841f9488d47", "name": "Unused endpoint: GET /api/devices", "shortDescription": {"text": "Unused endpoint: GET /api/devices"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-86adb4b172ff4f90", "name": "Unused endpoint: GET /api/devices/update-queue", "shortDescription": {"text": "Unused endpoint: GET /api/devices/update-queue"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/update-queue` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f23642c05271458a", "name": "Unused endpoint: GET /api/self/register-other-pc-command", "shortDescription": {"text": "Unused endpoint: GET /api/self/register-other-pc-command"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/register-other-pc-command` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-85c1ea89243aca56", "name": "Unused endpoint: GET /api/self/remove-other-pc-command", "shortDescription": {"text": "Unused endpoint: GET /api/self/remove-other-pc-command"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/remove-other-pc-command` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-98eead134d375e0d", "name": "Unused endpoint: GET /api/self/doctor", "shortDescription": {"text": "Unused endpoint: GET /api/self/doctor"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/doctor` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a2aa32e628b40bc6", "name": "Unused endpoint: GET /api/self/autostart", "shortDescription": {"text": "Unused endpoint: GET /api/self/autostart"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/autostart` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-de01eeed79bfa691", "name": "Unused endpoint: PUT /api/self/autostart", "shortDescription": {"text": "Unused endpoint: PUT /api/self/autostart"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `PUT /api/self/autostart` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-91e3ceb058ca3dec", "name": "Unused endpoint: POST /api/self/update", "shortDescription": {"text": "Unused endpoint: POST /api/self/update"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/self/update` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-416632d7de872f60", "name": "Unused endpoint: GET /api/self/update/status", "shortDescription": {"text": "Unused endpoint: GET /api/self/update/status"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/update/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c2fe9f7faf01d8c6", "name": "Unused endpoint: GET /api/self/install-reports", "shortDescription": {"text": "Unused endpoint: GET /api/self/install-reports"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/self/install-reports` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-cb014893ac9712f6", "name": "Unused endpoint: POST /api/self/install-reports", "shortDescription": {"text": "Unused endpoint: POST /api/self/install-reports"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/self/install-reports` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-432c46309a25df73", "name": "Unused endpoint: POST /api/devices", "shortDescription": {"text": "Unused endpoint: POST /api/devices"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-156016c6c9b6ec39", "name": "Unused endpoint: PATCH /api/devices/:id", "shortDescription": {"text": "Unused endpoint: PATCH /api/devices/:id"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `PATCH /api/devices/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2d6cee4f78ebadbb", "name": "Unused endpoint: DELETE /api/devices", "shortDescription": {"text": "Unused endpoint: DELETE /api/devices"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `DELETE /api/devices` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-920bd44ec23dda3f", "name": "Unused endpoint: DELETE /api/devices/:id", "shortDescription": {"text": "Unused endpoint: DELETE /api/devices/:id"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `DELETE /api/devices/:id` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-64716fdd4914204f", "name": "Unused endpoint: GET /api/devices/:id/behaviors", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/behaviors"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/behaviors` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-25cf7e8a952cd1e1", "name": "Unused endpoint: POST /api/devices/:id/behaviors/load", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/behaviors/load"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/behaviors/load` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-06a910b32f0c1020", "name": "Unused endpoint: DELETE /api/devices/:id/behaviors/:instance", "shortDescription": {"text": "Unused endpoint: DELETE /api/devices/:id/behaviors/:instance"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `DELETE /api/devices/:id/behaviors/:instance` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-66facc05388fb0d0", "name": "Unused endpoint: POST /api/devices/:id/behaviors/:instance/request", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/behaviors/:instance/request"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/behaviors/:instance/request` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6687f41b7ddcc9c5", "name": "Unused endpoint: GET /api/devices/:id/events/spaces/:spaceId/stream", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/events/spaces/:spaceId/stream"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/events/spaces/:spaceId/stream` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7c6a5646f2d8f96e", "name": "Unused endpoint: GET /api/devices/:id/fs/list", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/fs/list"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/fs/list` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0a97ed0cb4587f2", "name": "Unused endpoint: POST /api/devices/:id/fs/mkdir", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/fs/mkdir"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/fs/mkdir` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a3aaf876a8b0183", "name": "Unused endpoint: GET /api/devices/:id/fs/roots", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/fs/roots"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/fs/roots` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0c1010e41f86a84e", "name": "Unused endpoint: GET /api/devices/:id/files/preview", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/files/preview"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/files/preview` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-6ecb0d9a47d9c552", "name": "Unused endpoint: GET /api/devices/:id/git/status", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/git/status"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/git/status` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b372392283395c5d", "name": "Unused endpoint: GET /api/devices/:id/instructions", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/instructions"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/instructions` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-10f036b0bdaeee58", "name": "Unused endpoint: PUT /api/devices/:id/instructions/:scope", "shortDescription": {"text": "Unused endpoint: PUT /api/devices/:id/instructions/:scope"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `PUT /api/devices/:id/instructions/:scope` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-76cc5d0ca6468661", "name": "Unused endpoint: DELETE /api/devices/:id/instructions/:scope", "shortDescription": {"text": "Unused endpoint: DELETE /api/devices/:id/instructions/:scope"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `DELETE /api/devices/:id/instructions/:scope` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-aa209976c1ec66ea", "name": "Unused endpoint: GET /api/devices/:id/diagnostics", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/diagnostics"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/diagnostics` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a4f89d5e304867d", "name": "Unused endpoint: POST /api/devices/:id/system/update", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/system/update"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/system/update` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2e2b374cd8812822", "name": "Unused endpoint: GET /api/devices/:id/doctor", "shortDescription": {"text": "Unused endpoint: GET /api/devices/:id/doctor"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `GET /api/devices/:id/doctor` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5e1235cf80715b25", "name": "Unused endpoint: POST /api/devices/:id/approvals/respond", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/approvals/respond"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/approvals/respond` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7ed53162a64766f1", "name": "Unused endpoint: POST /api/devices/:id/approvals/simulate", "shortDescription": {"text": "Unused endpoint: POST /api/devices/:id/approvals/simulate"}, "fullDescription": {"text": "`packages/site-backend/src/app.ts` declares `POST /api/devices/:id/approvals/simulate` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-99cf970d9eb296b2", "name": "Unused endpoint: USE /__deskrelay/local-site-token", "shortDescription": {"text": "Unused endpoint: USE /__deskrelay/local-site-token"}, "fullDescription": {"text": "`packages/site-frontend/vite.config.ts` declares `USE /__deskrelay/local-site-token` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b6b9ac1b2e022082", "name": "Unused endpoint: USE /__deskrelay/client-context", "shortDescription": {"text": "Unused endpoint: USE /__deskrelay/client-context"}, "fullDescription": {"text": "`packages/site-frontend/vite.config.ts` declares `USE /__deskrelay/client-context` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/25246"}, "properties": {"repository": "darkhtk/deskrelay", "repoUrl": "https://github.com/darkhtk/deskrelay", "branch": "main"}, "results": [{"ruleId": "scanner-64e8e70d8e9342a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/site-backend/src/bin.ts:83"}, "properties": {"repobilityId": "265409590dac94ae", "scanner": "scanner-primary", "fingerprint": "64e8e70d8e9342a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-726ffea10fc3c53b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/build-web.ts:28"}, "properties": {"repobilityId": "db3f5e4434d8a5d8", "scanner": "scanner-primary", "fingerprint": "726ffea10fc3c53b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-45556d5479665704", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/mobile-app/scripts/sync-web.ts:16"}, "properties": {"repobilityId": "0ba12f8e93dee9a0", "scanner": "scanner-primary", "fingerprint": "45556d5479665704", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1b3a39c4a003a106", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/scripts/build-binary.ts:40"}, "properties": {"repobilityId": "50320fc2620b72e7", "scanner": "scanner-primary", "fingerprint": "1b3a39c4a003a106", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e144a1f7b1036cc0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/pc-connector-daemon/src/bin.ts:520"}, "properties": {"repobilityId": "d630cd7c7abfed9e", "scanner": "scanner-primary", "fingerprint": "e144a1f7b1036cc0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1170766f9b77675", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-docs-forbidden-terms.ts:47"}, "properties": {"repobilityId": "5f9fc56435fe967d", "scanner": "scanner-primary", "fingerprint": "b1170766f9b77675", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a211439576d9e33", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-install-failure-smoke.ts:79"}, "properties": {"repobilityId": "edf2acf14456e349", "scanner": "scanner-primary", "fingerprint": "9a211439576d9e33", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c9780714d2d65cc2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/selfhost-virtual-e2e.ts:68"}, "properties": {"repobilityId": "503603beeb868fdb", "scanner": "scanner-primary", "fingerprint": "c9780714d2d65cc2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e33e28b451c870c5", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/frontend-smoke.ts:114"}, "properties": {"repobilityId": "215f4428cc9ef7de", "scanner": "scanner-primary", "fingerprint": "e33e28b451c870c5", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5460846b23338631", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-locales.ts:53"}, "properties": {"repobilityId": "6d506dc8fc6fedba", "scanner": "scanner-primary", "fingerprint": "5460846b23338631", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-401528a740437cbc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packaging/brand/rasterize.ts:52"}, "properties": {"repobilityId": "e97d737eeba467ba", "scanner": "scanner-primary", "fingerprint": "401528a740437cbc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f982f6d896c80fba", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/update-notice.ts:1"}, "properties": {"repobilityId": "c53f0b72f70110d4", "scanner": "scanner-primary", "fingerprint": "f982f6d896c80fba", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-backend/src/update-notice.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a3da485933c30d06", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-autostart.ts:1"}, "properties": {"repobilityId": "a7165369dea15f9a", "scanner": "scanner-primary", "fingerprint": "a3da485933c30d06", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-backend/src/self-server-autostart.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-053687dfbe8f7b27", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/site-backend/src/self-server-update.ts:1"}, "properties": {"repobilityId": "ceb921bcb1f3a0e8", "scanner": "scanner-primary", "fingerprint": "053687dfbe8f7b27", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-backend/src/self-server-update.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-61abe2d07ff5a555", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/mobile-app/scripts/build-web.ts:13"}, "properties": {"repobilityId": "1890c55bcf08e5aa", "scanner": "scanner-primary", "fingerprint": "61abe2d07ff5a555", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mobile-app/scripts/build-web.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-356bfe10b0bf3d26", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/scripts/build-binary.ts:13"}, "properties": {"repobilityId": "795eb04248ca55d1", "scanner": "scanner-primary", "fingerprint": "356bfe10b0bf3d26", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/scripts/build-binary.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-213e1bbc44b41a96", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/git.ts:13"}, "properties": {"repobilityId": "f01406b2e1ccb0ff", "scanner": "scanner-primary", "fingerprint": "213e1bbc44b41a96", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/src/git.ts"}, "region": {"startLine": 13}}}]}, {"ruleId": "scanner-5f4ea4b894705d0b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/login-task.ts:9"}, "properties": {"repobilityId": "15f743320066e235", "scanner": "scanner-primary", "fingerprint": "5f4ea4b894705d0b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/src/login-task.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-de176b946b555d98", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/fs.ts:11"}, "properties": {"repobilityId": "b944de3f6d086a10", "scanner": "scanner-primary", "fingerprint": "de176b946b555d98", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/src/fs.ts"}, "region": {"startLine": 11}}}]}, {"ruleId": "scanner-3edfc4c7ecc8db62", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-update.ts:1"}, "properties": {"repobilityId": "d293888c8650b62a", "scanner": "scanner-primary", "fingerprint": "3edfc4c7ecc8db62", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/src/self-update.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ae517f011b54babb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/pc-connector-daemon/src/self-register.ts:1"}, "properties": {"repobilityId": "235d83c55aebcee8", "scanner": "scanner-primary", "fingerprint": "ae517f011b54babb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/src/self-register.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1c6022d3f509607f", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/shared/src/version.ts:1"}, "properties": {"repobilityId": "dadeb275c0b6a601", "scanner": "scanner-primary", "fingerprint": "1c6022d3f509607f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared/src/version.ts"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-787537871fd9114d", "level": "note", "message": {"text": "Insecure pattern 'document_write' in packages/site-frontend/src/conversation-export.ts:114"}, "properties": {"repobilityId": "36dd90fceb001c7f", "scanner": "scanner-primary", "fingerprint": "787537871fd9114d", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-frontend/src/conversation-export.ts"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-c70b97c88b0ce65b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/selfhost-install-failure-smoke.ts:3"}, "properties": {"repobilityId": "6c797e51eb9350aa", "scanner": "scanner-primary", "fingerprint": "c70b97c88b0ce65b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/selfhost-install-failure-smoke.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-95dcf76d4f8d5419", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/selfhost-virtual-e2e.ts:3"}, "properties": {"repobilityId": "6a08113380072d67", "scanner": "scanner-primary", "fingerprint": "95dcf76d4f8d5419", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/selfhost-virtual-e2e.ts"}, "region": {"startLine": 3}}}]}, {"ruleId": "scanner-492b22be75ac5db0", "level": "note", "message": {"text": "Very large file: packages/site-backend/src/app.ts (1762 lines)"}, "properties": {"repobilityId": "fa94d26e7e1ec6ac", "scanner": "scanner-primary", "fingerprint": "492b22be75ac5db0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9dc2405f5d3093a5", "level": "note", "message": {"text": "Very large file: packages/site-frontend/src/App.tsx (2309 lines)"}, "properties": {"repobilityId": "e386b5b0e2b64835", "scanner": "scanner-primary", "fingerprint": "9dc2405f5d3093a5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ff909a2761c3d712", "level": "note", "message": {"text": "Very large file: packages/site-frontend/src/components/ChatView.tsx (3990 lines)"}, "properties": {"repobilityId": "fbe16ff7542205a3", "scanner": "scanner-primary", "fingerprint": "ff909a2761c3d712", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4bd3e118396bbbbe", "level": "note", "message": {"text": "Very large file: packages/site-frontend/test/chat-view-devices-refresh.test.tsx (2410 lines)"}, "properties": {"repobilityId": "89dc9c4fafc94e13", "scanner": "scanner-primary", "fingerprint": "4bd3e118396bbbbe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-85edd30fee376cbc", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/site-backend/package.json"}, "properties": {"repobilityId": "17a6037ef2ed58e7", "scanner": "scanner-primary", "fingerprint": "85edd30fee376cbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53eac93f4b4fc865", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/pc-connector-cli/package.json"}, "properties": {"repobilityId": "b2844fba90e034bf", "scanner": "scanner-primary", "fingerprint": "53eac93f4b4fc865", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-cli/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5bf1701056fafc8b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/behavior-sdk/package.json"}, "properties": {"repobilityId": "4a30c8ba491fe183", "scanner": "scanner-primary", "fingerprint": "5bf1701056fafc8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/behavior-sdk/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-840a34aba12e4f62", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/mobile-app/package.json"}, "properties": {"repobilityId": "7d1fa64bf04b7fe4", "scanner": "scanner-primary", "fingerprint": "840a34aba12e4f62", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/mobile-app/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-faf08a6995bda972", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/behaviors/remote-claude/package.json"}, "properties": {"repobilityId": "baec8a6411a1cc43", "scanner": "scanner-primary", "fingerprint": "faf08a6995bda972", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/behaviors/remote-claude/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0889b6e0ff2a3a4", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/behaviors/echo/package.json"}, "properties": {"repobilityId": "6cd7f674f941e01a", "scanner": "scanner-primary", "fingerprint": "d0889b6e0ff2a3a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/behaviors/echo/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-28e92806c0db3cd2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/core/package.json"}, "properties": {"repobilityId": "8640e46be7e3f9b2", "scanner": "scanner-primary", "fingerprint": "28e92806c0db3cd2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/core/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ed2f720b7f0e8e7", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/pc-connector-daemon/package.json"}, "properties": {"repobilityId": "43efa2d76f95349d", "scanner": "scanner-primary", "fingerprint": "0ed2f720b7f0e8e7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/pc-connector-daemon/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d895a367c4054063", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/site-frontend/package.json"}, "properties": {"repobilityId": "26709dff20cccf6a", "scanner": "scanner-primary", "fingerprint": "d895a367c4054063", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/site-frontend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "9cd8462e313ea6da", "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": "f1e376fdebb45037", "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": "1f94bd190f50a194", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "0c05255c47a425ca", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-2cd7c52efa4ae0ac", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/src/app.ts:52"}, "properties": {"repobilityId": "8a87bd4a4944d17d", "scanner": "scanner-primary", "fingerprint": "2cd7c52efa4ae0ac", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6f6154612469b98a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/full-chain.e2e.test.ts:2"}, "properties": {"repobilityId": "6a93d7e3179b7ea3", "scanner": "scanner-primary", "fingerprint": "6f6154612469b98a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-40c8acca4695bc53", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/announcement.test.ts:30"}, "properties": {"repobilityId": "398a5011b602c2d5", "scanner": "scanner-primary", "fingerprint": "40c8acca4695bc53", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-af5d2eb7b3a0d668", "level": "note", "message": {"text": "Legacy-named symbol `dev_old` in packages/site-backend/test/device-registry.test.ts:134"}, "properties": {"repobilityId": "b18e1864b22cd1dc", "scanner": "scanner-primary", "fingerprint": "af5d2eb7b3a0d668", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-49543ec26e8a8df3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-backend/test/app.test.ts:115"}, "properties": {"repobilityId": "c018318574c7e547", "scanner": "scanner-primary", "fingerprint": "49543ec26e8a8df3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-45d55ac1c66f9e52", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/pc-connector-cli/src/cli.ts:290"}, "properties": {"repobilityId": "36030b3a55cd666f", "scanner": "scanner-primary", "fingerprint": "45d55ac1c66f9e52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2175b916024c36df", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-cli/src/client.ts:113"}, "properties": {"repobilityId": "0663c51b077508aa", "scanner": "scanner-primary", "fingerprint": "2175b916024c36df", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2292afd11b596702", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/pc-connector-cli/src/bin.ts:12"}, "properties": {"repobilityId": "bd5fa2224865ebf1", "scanner": "scanner-primary", "fingerprint": "2292afd11b596702", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd73e99038027896", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/ipc.ts:4"}, "properties": {"repobilityId": "57bf92b1a01558cc", "scanner": "scanner-primary", "fingerprint": "fd73e99038027896", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a01ce1f84c18ccf2", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/behavior-sdk/src/in-process-host.ts:1"}, "properties": {"repobilityId": "ddb214b35b805d30", "scanner": "scanner-primary", "fingerprint": "a01ce1f84c18ccf2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1f967a6e1e879404", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/behavior-sdk/src/host.ts:3"}, "properties": {"repobilityId": "ed3510ce1319fc5f", "scanner": "scanner-primary", "fingerprint": "1f967a6e1e879404", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81233755d669dfdd", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/manifest-loader.ts:35"}, "properties": {"repobilityId": "dba4dcd1385895ff", "scanner": "scanner-primary", "fingerprint": "81233755d669dfdd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-903f61738aa2ec4c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behavior-sdk/src/runtime.ts:3"}, "properties": {"repobilityId": "88bf30d1240a6609", "scanner": "scanner-primary", "fingerprint": "903f61738aa2ec4c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4dd791a33b52c795", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/behavior-sdk/test/spawn-argv.test.ts:5"}, "properties": {"repobilityId": "a5f528cfa147f69e", "scanner": "scanner-primary", "fingerprint": "4dd791a33b52c795", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cc354cfc5302d115", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/index.ts:4"}, "properties": {"repobilityId": "4b19eb2c50bbf3b8", "scanner": "scanner-primary", "fingerprint": "cc354cfc5302d115", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d412f895a3f3592f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/session-paths.ts:1"}, "properties": {"repobilityId": "223c2af89bc13168", "scanner": "scanner-primary", "fingerprint": "d412f895a3f3592f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97fe95db78013dd4", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/behaviors/remote-claude/src/claude-runner.ts:5"}, "properties": {"repobilityId": "d29fda1cf5d79f72", "scanner": "scanner-primary", "fingerprint": "97fe95db78013dd4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf4f7179ad8545a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/_stdin.ts:1"}, "properties": {"repobilityId": "e08b0c8c64349aab", "scanner": "scanner-primary", "fingerprint": "cf4f7179ad8545a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fa4fe0462ee3b5a", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/behaviors/remote-claude/src/hooks/pretooluse.ts:4"}, "properties": {"repobilityId": "f9808aaefd0503b5", "scanner": "scanner-primary", "fingerprint": "2fa4fe0462ee3b5a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-812e3196385e0452", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/scripts/build-binary.ts:24"}, "properties": {"repobilityId": "2813b972735bb6e7", "scanner": "scanner-primary", "fingerprint": "812e3196385e0452", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4c817d9a44d4aaa0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/device-identity.ts:140"}, "properties": {"repobilityId": "d10f4030c0ce6908", "scanner": "scanner-primary", "fingerprint": "4c817d9a44d4aaa0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-31f28185faf89e87", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/doctor.ts:1"}, "properties": {"repobilityId": "fc94839cc880b6ba", "scanner": "scanner-primary", "fingerprint": "31f28185faf89e87", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-788aa66b947b71fd", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/auth-token.ts:4"}, "properties": {"repobilityId": "d57f1899b2737be0", "scanner": "scanner-primary", "fingerprint": "788aa66b947b71fd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-25640f920d138980", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/pc-connector-daemon/src/behavior-fetcher.ts:4"}, "properties": {"repobilityId": "2554ca9495ae1d5b", "scanner": "scanner-primary", "fingerprint": "25640f920d138980", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c09faf779bf77a7e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/behavior-fetcher.ts:32"}, "properties": {"repobilityId": "098517a181671930", "scanner": "scanner-primary", "fingerprint": "c09faf779bf77a7e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-bfbd3379e0e91169", "level": "none", "message": {"text": "Commented-code block (8 lines) in packages/pc-connector-daemon/src/chmod-best.ts:6"}, "properties": {"repobilityId": "85436d086cec0c28", "scanner": "scanner-primary", "fingerprint": "bfbd3379e0e91169", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e63e882fae4e9e58", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/git.ts:5"}, "properties": {"repobilityId": "7a8eddd03e28d2b5", "scanner": "scanner-primary", "fingerprint": "e63e882fae4e9e58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df263b216e36d7fe", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/pc-connector-daemon/src/approvals.ts:5"}, "properties": {"repobilityId": "82096462a811ea9f", "scanner": "scanner-primary", "fingerprint": "df263b216e36d7fe", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-831a52d238d21b18", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/src/site-ws-client.ts:6"}, "properties": {"repobilityId": "196345123ba677b1", "scanner": "scanner-primary", "fingerprint": "831a52d238d21b18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-792e080e1e82ffea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/src/site-ws-client.ts:688"}, "properties": {"repobilityId": "8d1452dcf360f0a1", "scanner": "scanner-primary", "fingerprint": "792e080e1e82ffea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ded46423ac705ab", "level": "none", "message": {"text": "Commented-code block (11 lines) in packages/pc-connector-daemon/src/daemon.ts:3"}, "properties": {"repobilityId": "b43509f2d4abe206", "scanner": "scanner-primary", "fingerprint": "8ded46423ac705ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-138e803a7b926249", "level": "none", "message": {"text": "Commented-code block (12 lines) in packages/pc-connector-daemon/src/bin.ts:15"}, "properties": {"repobilityId": "2958be67c7e3465e", "scanner": "scanner-primary", "fingerprint": "138e803a7b926249", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c8b2dda8df24ce06", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/src/behavior-registry.ts:118"}, "properties": {"repobilityId": "206257436879d1db", "scanner": "scanner-primary", "fingerprint": "c8b2dda8df24ce06", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9cf0ac31a2f255a", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/bin-behavior-host.e2e.test.ts:5"}, "properties": {"repobilityId": "0137ed5ec9c4c0c7", "scanner": "scanner-primary", "fingerprint": "a9cf0ac31a2f255a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e7dc09a3450308ec", "level": "note", "message": {"text": "Legacy-named symbol `dev_old` in packages/pc-connector-daemon/test/self-register.test.ts:435"}, "properties": {"repobilityId": "a4bfb839e15ca936", "scanner": "scanner-primary", "fingerprint": "e7dc09a3450308ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a625dd4054efd4d6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/pc-connector-daemon/test/daemon.e2e.test.ts:123"}, "properties": {"repobilityId": "f9639e3023a8f097", "scanner": "scanner-primary", "fingerprint": "a625dd4054efd4d6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-14f976cde0815351", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/pc-connector-daemon/test/chmod-best.test.ts:1"}, "properties": {"repobilityId": "6d261f0ec17bac54", "scanner": "scanner-primary", "fingerprint": "14f976cde0815351", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-740d2598ed79a84b", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/pc-connector-daemon/test/behavior-registry-policy.test.ts:1"}, "properties": {"repobilityId": "bdad2ebf97d545e1", "scanner": "scanner-primary", "fingerprint": "740d2598ed79a84b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-44a5d7d09171906f", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/pc-connector-daemon/test/site-ws-client.test.ts:1"}, "properties": {"repobilityId": "d1fcb88cea6b39a2", "scanner": "scanner-primary", "fingerprint": "44a5d7d09171906f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87bfee08b7dd1010", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/shared/src/device-key.ts:4"}, "properties": {"repobilityId": "e5fa3695c9708350", "scanner": "scanner-primary", "fingerprint": "87bfee08b7dd1010", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d6e3cb5f992299ac", "level": "none", "message": {"text": "Commented-code block (9 lines) in packages/shared/src/event.ts:3"}, "properties": {"repobilityId": "f4a2c418e56b2fa3", "scanner": "scanner-primary", "fingerprint": "d6e3cb5f992299ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82788a76452785be", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/site-frontend/src/api.ts:337"}, "properties": {"repobilityId": "64c516e9361617c9", "scanner": "scanner-primary", "fingerprint": "82788a76452785be", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e39b00334934c17c", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/ApprovalModal.tsx:1"}, "properties": {"repobilityId": "349395563cc2f2c5", "scanner": "scanner-primary", "fingerprint": "e39b00334934c17c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1bffc9cfb60803b", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/site-frontend/src/components/Attachments.tsx:3"}, "properties": {"repobilityId": "dd631d328cbe47db", "scanner": "scanner-primary", "fingerprint": "e1bffc9cfb60803b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ef862e7b25c01ab1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/Transcript.tsx:3"}, "properties": {"repobilityId": "57eadc82e3d8446f", "scanner": "scanner-primary", "fingerprint": "ef862e7b25c01ab1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4785c9cfd07333fa", "level": "none", "message": {"text": "Commented-code block (15 lines) in packages/site-frontend/src/components/Composer.tsx:3"}, "properties": {"repobilityId": "2d5e3687172f4528", "scanner": "scanner-primary", "fingerprint": "4785c9cfd07333fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7440bebf93252f73", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/components/ChatView.tsx:2044"}, "properties": {"repobilityId": "a30ce8f8b7dda720", "scanner": "scanner-primary", "fingerprint": "7440bebf93252f73", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f3c7e0d84ece5ff", "level": "none", "message": {"text": "Commented-code block (13 lines) in packages/site-frontend/src/claude/message-renderer.ts:5"}, "properties": {"repobilityId": "2a9a7966076203db", "scanner": "scanner-primary", "fingerprint": "9f3c7e0d84ece5ff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0df7954e26bd0964", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/site-frontend/src/claude/transcript-model.ts:6"}, "properties": {"repobilityId": "c9bf1bbeb216acab", "scanner": "scanner-primary", "fingerprint": "0df7954e26bd0964", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62a3567a069c4aa0", "level": "note", "message": {"text": "Legacy-named symbol `apr_legacy` in packages/site-frontend/test/approval-modal.test.tsx:62"}, "properties": {"repobilityId": "af701c8645e2915d", "scanner": "scanner-primary", "fingerprint": "62a3567a069c4aa0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dc95a2d1d24f9eef", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/site-frontend/public/sw.js:3"}, "properties": {"repobilityId": "d122760e2c764f6d", "scanner": "scanner-primary", "fingerprint": "dc95a2d1d24f9eef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01ba28d2c1a40a15", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/selfhost-virtual-e2e.ts:302"}, "properties": {"repobilityId": "726ff3790e86625f", "scanner": "scanner-primary", "fingerprint": "01ba28d2c1a40a15", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-526af44b904ea9ec", "level": "note", "message": {"text": "54 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "313b369fa3c8cca9", "scanner": "scanner-primary", "fingerprint": "526af44b904ea9ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-da8f7631a7df7107", "level": "error", "message": {"text": "Dangling fetch: GET https://api.anthropic.com/api/oauth/usage (packages/behaviors/remote-claude/src/index.ts:1056)"}, "properties": {"repobilityId": "e1ee2e9bc57fb4f2", "scanner": "scanner-primary", "fingerprint": "da8f7631a7df7107", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-16d05759c3aef329", "level": "note", "message": {"text": "Unused endpoint: GET /api/announcement"}, "properties": {"repobilityId": "749a12e25b8bad00", "scanner": "scanner-primary", "fingerprint": "16d05759c3aef329", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8073f7bf758f6d0", "level": "note", "message": {"text": "Unused endpoint: USE /api/*"}, "properties": {"repobilityId": "72a9dfe81038378a", "scanner": "scanner-primary", "fingerprint": "b8073f7bf758f6d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d30f4841f9488d47", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices"}, "properties": {"repobilityId": "c1f65d5889d8a87d", "scanner": "scanner-primary", "fingerprint": "d30f4841f9488d47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-86adb4b172ff4f90", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/update-queue"}, "properties": {"repobilityId": "30c60eb3f5606c0b", "scanner": "scanner-primary", "fingerprint": "86adb4b172ff4f90", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f23642c05271458a", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/register-other-pc-command"}, "properties": {"repobilityId": "c7af83aa02dc67d5", "scanner": "scanner-primary", "fingerprint": "f23642c05271458a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-85c1ea89243aca56", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/remove-other-pc-command"}, "properties": {"repobilityId": "68330cd4c62e338d", "scanner": "scanner-primary", "fingerprint": "85c1ea89243aca56", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-98eead134d375e0d", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/doctor"}, "properties": {"repobilityId": "150cd36aeac4120f", "scanner": "scanner-primary", "fingerprint": "98eead134d375e0d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a2aa32e628b40bc6", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/autostart"}, "properties": {"repobilityId": "56684e790d26faae", "scanner": "scanner-primary", "fingerprint": "a2aa32e628b40bc6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de01eeed79bfa691", "level": "note", "message": {"text": "Unused endpoint: PUT /api/self/autostart"}, "properties": {"repobilityId": "93dd01298cc8798a", "scanner": "scanner-primary", "fingerprint": "de01eeed79bfa691", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-91e3ceb058ca3dec", "level": "note", "message": {"text": "Unused endpoint: POST /api/self/update"}, "properties": {"repobilityId": "0a24d620565a21df", "scanner": "scanner-primary", "fingerprint": "91e3ceb058ca3dec", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-416632d7de872f60", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/update/status"}, "properties": {"repobilityId": "b6754c8c6d4b33aa", "scanner": "scanner-primary", "fingerprint": "416632d7de872f60", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c2fe9f7faf01d8c6", "level": "note", "message": {"text": "Unused endpoint: GET /api/self/install-reports"}, "properties": {"repobilityId": "ca24acf4de153e25", "scanner": "scanner-primary", "fingerprint": "c2fe9f7faf01d8c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-cb014893ac9712f6", "level": "note", "message": {"text": "Unused endpoint: POST /api/self/install-reports"}, "properties": {"repobilityId": "0681bb18b76770fc", "scanner": "scanner-primary", "fingerprint": "cb014893ac9712f6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-432c46309a25df73", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices"}, "properties": {"repobilityId": "cdaf58a864fee771", "scanner": "scanner-primary", "fingerprint": "432c46309a25df73", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-156016c6c9b6ec39", "level": "note", "message": {"text": "Unused endpoint: PATCH /api/devices/:id"}, "properties": {"repobilityId": "470547cd8116f3b1", "scanner": "scanner-primary", "fingerprint": "156016c6c9b6ec39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2d6cee4f78ebadbb", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/devices"}, "properties": {"repobilityId": "f276d59a853ef9e8", "scanner": "scanner-primary", "fingerprint": "2d6cee4f78ebadbb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-920bd44ec23dda3f", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/devices/:id"}, "properties": {"repobilityId": "d1857035c450395b", "scanner": "scanner-primary", "fingerprint": "920bd44ec23dda3f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-64716fdd4914204f", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/behaviors"}, "properties": {"repobilityId": "edcc4e7e307fd391", "scanner": "scanner-primary", "fingerprint": "64716fdd4914204f", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-25cf7e8a952cd1e1", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/behaviors/load"}, "properties": {"repobilityId": "39ddac040d5854b6", "scanner": "scanner-primary", "fingerprint": "25cf7e8a952cd1e1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-06a910b32f0c1020", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/devices/:id/behaviors/:instance"}, "properties": {"repobilityId": "e008dc9419c1418b", "scanner": "scanner-primary", "fingerprint": "06a910b32f0c1020", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-66facc05388fb0d0", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/behaviors/:instance/request"}, "properties": {"repobilityId": "c82b3ec64155e20f", "scanner": "scanner-primary", "fingerprint": "66facc05388fb0d0", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6687f41b7ddcc9c5", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/events/spaces/:spaceId/stream"}, "properties": {"repobilityId": "cb17f278365fd8d2", "scanner": "scanner-primary", "fingerprint": "6687f41b7ddcc9c5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7c6a5646f2d8f96e", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/fs/list"}, "properties": {"repobilityId": "9fa4d0cc2a967435", "scanner": "scanner-primary", "fingerprint": "7c6a5646f2d8f96e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c0a97ed0cb4587f2", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/fs/mkdir"}, "properties": {"repobilityId": "b1e292f21a429105", "scanner": "scanner-primary", "fingerprint": "c0a97ed0cb4587f2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a3aaf876a8b0183", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/fs/roots"}, "properties": {"repobilityId": "6413ca128a321f63", "scanner": "scanner-primary", "fingerprint": "0a3aaf876a8b0183", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0c1010e41f86a84e", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/files/preview"}, "properties": {"repobilityId": "4e33dcc393d8905f", "scanner": "scanner-primary", "fingerprint": "0c1010e41f86a84e", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-6ecb0d9a47d9c552", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/git/status"}, "properties": {"repobilityId": "52f45a3c6991ef0a", "scanner": "scanner-primary", "fingerprint": "6ecb0d9a47d9c552", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b372392283395c5d", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/instructions"}, "properties": {"repobilityId": "de979e75b3b0c90e", "scanner": "scanner-primary", "fingerprint": "b372392283395c5d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-10f036b0bdaeee58", "level": "note", "message": {"text": "Unused endpoint: PUT /api/devices/:id/instructions/:scope"}, "properties": {"repobilityId": "e44462fb153328cc", "scanner": "scanner-primary", "fingerprint": "10f036b0bdaeee58", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-76cc5d0ca6468661", "level": "note", "message": {"text": "Unused endpoint: DELETE /api/devices/:id/instructions/:scope"}, "properties": {"repobilityId": "4553abc867598d91", "scanner": "scanner-primary", "fingerprint": "76cc5d0ca6468661", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-aa209976c1ec66ea", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/diagnostics"}, "properties": {"repobilityId": "f29cefb7569fa49f", "scanner": "scanner-primary", "fingerprint": "aa209976c1ec66ea", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4a4f89d5e304867d", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/system/update"}, "properties": {"repobilityId": "2f95f687912818b6", "scanner": "scanner-primary", "fingerprint": "4a4f89d5e304867d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2e2b374cd8812822", "level": "note", "message": {"text": "Unused endpoint: GET /api/devices/:id/doctor"}, "properties": {"repobilityId": "a3f4d6dac2530cf2", "scanner": "scanner-primary", "fingerprint": "2e2b374cd8812822", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5e1235cf80715b25", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/approvals/respond"}, "properties": {"repobilityId": "8d591eb10d9a36a1", "scanner": "scanner-primary", "fingerprint": "5e1235cf80715b25", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-7ed53162a64766f1", "level": "note", "message": {"text": "Unused endpoint: POST /api/devices/:id/approvals/simulate"}, "properties": {"repobilityId": "0d83c74019a12e69", "scanner": "scanner-primary", "fingerprint": "7ed53162a64766f1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-99cf970d9eb296b2", "level": "note", "message": {"text": "Unused endpoint: USE /__deskrelay/local-site-token"}, "properties": {"repobilityId": "1a6cb9c6db030eb5", "scanner": "scanner-primary", "fingerprint": "99cf970d9eb296b2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b6b9ac1b2e022082", "level": "note", "message": {"text": "Unused endpoint: USE /__deskrelay/client-context"}, "properties": {"repobilityId": "cb4e32469a4208b7", "scanner": "scanner-primary", "fingerprint": "b6b9ac1b2e022082", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}