{"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-8ca4effe29df24f7", "name": "TODO/FIXME marker in shipping code \u2014 packages/eslint-config-axhy/test/lint-rules.fixture.ts:15", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 packages/eslint-config-axhy/test/lint-rules.fixture.ts:15"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eabc2f5c68ee75c9", "name": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/lock-seed.ts:78", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/lock-seed.ts:78"}, "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-aa67e21ca7fae678", "name": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/builder.ts:368", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/builder.ts:368"}, "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-44fb43dfd85bde13", "name": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/audit.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/audit.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7682d5c78c16595a", "name": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/test/diagnostic-rename.test.ts:71", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/test/diagnostic-rename.test.ts:71"}, "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-7ba577fee91e46ad", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-builder.ts:467", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-builder.ts:467"}, "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-0adee6809fcf6087", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-compact.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-compact.ts:175"}, "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-ed4c423a12f259e7", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/migrate-chunks-to-entries.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/migrate-chunks-to-entries.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d1e3580b191f1f50", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-lock-seed.ts:84", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-lock-seed.ts:84"}, "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-634efb2e58436fc3", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/session-audit.ts:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/session-audit.ts:188"}, "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-32f9eb338da868c7", "name": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/token-check.ts:335", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/token-check.ts:335"}, "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-20a933f81f551ab2", "name": "Stray `console.log` in TS/JS \u2014 tools/seed-data/src/index.ts:11", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/seed-data/src/index.ts:11"}, "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-9ecbd3dac3c2862b", "name": "Stray `console.log` in TS/JS \u2014 tools/master-plan-extractor/src/index.ts:14", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/master-plan-extractor/src/index.ts:14"}, "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-b8610d4f87c312a1", "name": "Stray `console.log` in TS/JS \u2014 tools/graph-builder/src/index.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/graph-builder/src/index.ts:13"}, "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-bb0d56afb6dcfe4b", "name": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/check.ts:103", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/check.ts:103"}, "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-fa26bc843b802b5a", "name": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/build.ts:185", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/build.ts:185"}, "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-642bff981d7910b6", "name": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/impact.ts:158", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/impact.ts:158"}, "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-bdd071919af1c077", "name": "Stray `console.log` in TS/JS \u2014 tools/voice-benchmark/src/index.ts:13", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 tools/voice-benchmark/src/index.ts:13"}, "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-b7c7c4aee3033306", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-real-phone-worker.ts:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-real-phone-worker.ts:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-53da9bb3ba06b82e", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-sandbox.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-sandbox.ts:81"}, "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-5c7b63fcdfab94e8", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-demo-today.ts:41", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-demo-today.ts:41"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-21298388bd974550", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/get-otp.ts:88", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/get-otp.ts:88"}, "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-01dcecc68a4f6805", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/hydrate-deferred-assignments.ts:30", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/hydrate-deferred-assignments.ts:30"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ecf2aa7bdfeb5313", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-qa-comprehensive.ts:188", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-qa-comprehensive.ts:188"}, "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-26b17eada2eea2e9", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/src/index.ts:15", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/index.ts:15"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-24d74d729fbee58a", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/src/dispatcher/index.ts:298", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/dispatcher/index.ts:298"}, "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-dd463c88d5ddce7c", "name": "Stray `console.log` in TS/JS \u2014 apps/backend/test/chat-adversarial-prompt-injection.test.ts:38", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/test/chat-adversarial-prompt-injection.test.ts:38"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-374c270c10199171", "name": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/capture-design-screens.ts:35", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/capture-design-screens.ts:35"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5decab85c2297626", "name": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/probe-design-html.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/probe-design-html.ts:10"}, "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-0d354086c95dd1b4", "name": "Insecure pattern 'new_function_used' in packages/ui-tokens/scripts/generate.mjs:32", "shortDescription": {"text": "Insecure pattern 'new_function_used' in packages/ui-tokens/scripts/generate.mjs:32"}, "fullDescription": {"text": "Found a known-risky pattern (new_function_used). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-13d4234e2346c832", "name": "Possible secret in packages/ai-tools/src/redaction.test.ts", "shortDescription": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-e44901f1010ca1a3", "name": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts", "shortDescription": {"text": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts"}, "fullDescription": {"text": "Detected pattern matching github_token. Rotate the credential and move to a secret manager."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "critical", "confidence": 1.0}}, {"id": "scanner-4b03a5a6ca9997d9", "name": "Insecure pattern 'node_child_process' in packages/ai-tools/src/session-audit.ts:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in packages/ai-tools/src/session-audit.ts:20"}, "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-d05679348f9c0ec4", "name": "Insecure pattern 'node_child_process' in scripts/artifact-sentinel.mjs:27", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/artifact-sentinel.mjs:27"}, "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-bd98e673f0f6145e", "name": "Insecure pattern 'cors_wildcard' in tools/screenshot-receiver.mjs:46", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in tools/screenshot-receiver.mjs:46"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-44b68e3e16eb603b", "name": "Insecure pattern 'node_child_process' in tools/connectedness/src/check.ts:23", "shortDescription": {"text": "Insecure pattern 'node_child_process' in tools/connectedness/src/check.ts:23"}, "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-bebfb899f193d76c", "name": "Insecure pattern 'node_child_process' in handoff/scripts/build-handoff-artifacts.mjs:30", "shortDescription": {"text": "Insecure pattern 'node_child_process' in handoff/scripts/build-handoff-artifacts.mjs:30"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-42a91a596672ef99", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-d4c40f9633c2055e", "name": "Very large file: docs/design/payroll-ui-v2/design-canvas.jsx (1437 lines)", "shortDescription": {"text": "Very large file: docs/design/payroll-ui-v2/design-canvas.jsx (1437 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-9064f88acbab46e5", "name": "Very large file: docs/design/payroll-ui-v2/worker-screens.jsx (2221 lines)", "shortDescription": {"text": "Very large file: docs/design/payroll-ui-v2/worker-screens.jsx (2221 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-3dab74fed9be91b2", "name": "Very large file: docs/design/worker-app-canon/project/design-canvas.jsx (1437 lines)", "shortDescription": {"text": "Very large file: docs/design/worker-app-canon/project/design-canvas.jsx (1437 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-2ab429ff04871833", "name": "Very large file: docs/design/worker-app-canon/project/worker-screens.jsx (2221 lines)", "shortDescription": {"text": "Very large file: docs/design/worker-app-canon/project/worker-screens.jsx (2221 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-3dcd24b6e2052a25", "name": "Very large file: apps/backend/src/routes/chat.ts (2110 lines)", "shortDescription": {"text": "Very large file: apps/backend/src/routes/chat.ts (2110 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-bfbbed6344cf64b6", "name": "Very large file: handoff/scripts/build-handoff-artifacts.mjs (1275 lines)", "shortDescription": {"text": "Very large file: handoff/scripts/build-handoff-artifacts.mjs (1275 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9faacba446b7c077", "name": "Node manifest has dependencies but no lockfile: packages/state-machines/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/state-machines/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-8539693a7da58727", "name": "Node manifest has dependencies but no lockfile: packages/business-rules/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/business-rules/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-89030a6f1c7a91d2", "name": "Node manifest has dependencies but no lockfile: packages/eslint-config-axhy/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/eslint-config-axhy/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-a75518362984bd9d", "name": "Node manifest has dependencies but no lockfile: packages/shared-schema/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/shared-schema/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-2a3f2fd288798142", "name": "Node manifest has dependencies but no lockfile: packages/ui-web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ui-web/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-8c92dfc9a15b9c07", "name": "Node manifest has dependencies but no lockfile: packages/ui-tokens/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ui-tokens/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-892d4f964c9036e2", "name": "Node manifest has dependencies but no lockfile: packages/api-client/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/api-client/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-5ba848f9dd4e0bff", "name": "Node manifest has dependencies but no lockfile: packages/knowledge-graph/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/knowledge-graph/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-2d10c379e1228364", "name": "Node manifest has dependencies but no lockfile: packages/ui-native/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ui-native/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-592524165b9fc40c", "name": "Node manifest has dependencies but no lockfile: packages/errors/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/errors/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-6b331dd3fa532fe1", "name": "Node manifest has dependencies but no lockfile: packages/jwt-public/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/jwt-public/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-1188dbf6c513dd0b", "name": "Node manifest has dependencies but no lockfile: packages/copy/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/copy/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-5bd94d09544860ad", "name": "Node manifest has dependencies but no lockfile: packages/ai-tools/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: packages/ai-tools/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-5f515b254c93bab0", "name": "Node manifest has dependencies but no lockfile: tools/seed-data/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/seed-data/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-c40107ff18861e95", "name": "Node manifest has dependencies but no lockfile: tools/master-plan-extractor/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/master-plan-extractor/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-26105b8778a45cf8", "name": "Node manifest has dependencies but no lockfile: tools/graph-builder/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/graph-builder/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-1d8fdf6d65e90d16", "name": "Node manifest has dependencies but no lockfile: tools/connectedness/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/connectedness/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-e87bb86d89edd761", "name": "Node manifest has dependencies but no lockfile: tools/voice-benchmark/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: tools/voice-benchmark/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-53a7af2536f80bd8", "name": "Node manifest has dependencies but no lockfile: apps/backend/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/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-f666328b45f4601a", "name": "Node manifest has dependencies but no lockfile: apps/admin-web/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/admin-web/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-d0c2205560692580", "name": "Node manifest has dependencies but no lockfile: apps/mobile/package.json", "shortDescription": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/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 384 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 160 placeholder/mock markers across 83 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, 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-fae36c5a45d956c1", "name": "Commented-code block (5 lines) in packages/shared-schema/src/zod/audit-payloads.ts:109", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared-schema/src/zod/audit-payloads.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7dfc55e1ac591c4", "name": "Commented-code block (5 lines) in packages/shared-schema/src/zod/supervisor-decision-kinds.ts:138", "shortDescription": {"text": "Commented-code block (5 lines) in packages/shared-schema/src/zod/supervisor-decision-kinds.ts:138"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bc0f538fd33ca5b4", "name": "Commented-code block (5 lines) in packages/knowledge-graph/src/builder.ts:242", "shortDescription": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/builder.ts:242"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7da4692b3dfa1040", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/builder.ts:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/builder.ts:138"}, "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-164faa0dd4d47619", "name": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-navigates-to.ts:126", "shortDescription": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-navigates-to.ts:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d3416b32ee60583f", "name": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-triggers.ts:91", "shortDescription": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-triggers.ts:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5932145eda326d13", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/extractors/edges-triggers.ts:4", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/extractors/edges-triggers.ts:4"}, "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-a896aae22cdd2f1c", "name": "Commented-code block (7 lines) in packages/ai-tools/src/impact-check-v2.ts:116", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai-tools/src/impact-check-v2.ts:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c135dcf326b26b37", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/impact-check-v2.ts:151", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/impact-check-v2.ts:151"}, "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-ee354a80d61b21c0", "name": "Commented-code block (5 lines) in packages/ai-tools/src/brain-builder.ts:500", "shortDescription": {"text": "Commented-code block (5 lines) in packages/ai-tools/src/brain-builder.ts:500"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6df3009a305043c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/brain-builder.ts:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/brain-builder.ts:116"}, "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-8ca2a6de0dc94c93", "name": "Commented-code block (10 lines) in packages/ai-tools/src/openai-tool-loop.ts:234", "shortDescription": {"text": "Commented-code block (10 lines) in packages/ai-tools/src/openai-tool-loop.ts:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9cbd43c547951e17", "name": "Commented-code block (6 lines) in packages/ai-tools/src/session-audit.ts:366", "shortDescription": {"text": "Commented-code block (6 lines) in packages/ai-tools/src/session-audit.ts:366"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bd3f685843c43dca", "name": "Commented-code block (7 lines) in packages/ai-tools/src/vector-knowledge.ts:92", "shortDescription": {"text": "Commented-code block (7 lines) in packages/ai-tools/src/vector-knowledge.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec9f84cf4f66e36e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/vector-knowledge.ts:130", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/vector-knowledge.ts:130"}, "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-fd92189381214929", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/embed-smoke-test.mjs:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/embed-smoke-test.mjs:43"}, "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-6d6efb1b819e259e", "name": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/decisions.jsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/decisions.jsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c1e54c1d115fb49", "name": "Commented-code block (5 lines) in docs/prototypes/supervisor-mobile-r6/project/src/activity.jsx:2", "shortDescription": {"text": "Commented-code block (5 lines) in docs/prototypes/supervisor-mobile-r6/project/src/activity.jsx:2"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5110ffa431b28c6c", "name": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/data.js:4", "shortDescription": {"text": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/data.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b0e1ec574b46dc7", "name": "Commented-code block (6 lines) in docs/design/payroll-ui-v2/design-canvas.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in docs/design/payroll-ui-v2/design-canvas.jsx: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-d7ff47d5cdbec0a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/payroll-ui-v2/design-canvas.jsx:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/payroll-ui-v2/design-canvas.jsx:116"}, "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-eb618c038cb69364", "name": "Commented-code block (7 lines) in docs/design/payroll-ui-v2/tweaks-panel.jsx:11", "shortDescription": {"text": "Commented-code block (7 lines) in docs/design/payroll-ui-v2/tweaks-panel.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2218d1f4dcfd96c", "name": "Commented-code block (8 lines) in docs/design/payroll-ui-v2/worker-screens.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in docs/design/payroll-ui-v2/worker-screens.jsx: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-55ea7c427fc4a31b", "name": "Commented-code block (6 lines) in docs/design/worker-app-canon/project/design-canvas.jsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in docs/design/worker-app-canon/project/design-canvas.jsx: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-fd449591a0ebaaba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/worker-app-canon/project/design-canvas.jsx:116", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/worker-app-canon/project/design-canvas.jsx:116"}, "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-cf0c60808d68a775", "name": "Commented-code block (7 lines) in docs/design/worker-app-canon/project/tweaks-panel.jsx:11", "shortDescription": {"text": "Commented-code block (7 lines) in docs/design/worker-app-canon/project/tweaks-panel.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be75938dc0770ddf", "name": "Commented-code block (8 lines) in docs/design/worker-app-canon/project/worker-screens.jsx:1", "shortDescription": {"text": "Commented-code block (8 lines) in docs/design/worker-app-canon/project/worker-screens.jsx: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-8d74127bacb20b66", "name": "Commented-code block (6 lines) in apps/backend/scripts/seed-real-phone-worker.ts:245", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/scripts/seed-real-phone-worker.ts:245"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-03da6e7497b7ce7d", "name": "Commented-code block (13 lines) in apps/backend/scripts/p1_5_bootstrap_seed_bindings.ts:332", "shortDescription": {"text": "Commented-code block (13 lines) in apps/backend/scripts/p1_5_bootstrap_seed_bindings.ts:332"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3409fbc4e167d0bd", "name": "Legacy-named symbol `daysOld` in apps/backend/scripts/sweep-turn-embeddings.ts:72", "shortDescription": {"text": "Legacy-named symbol `daysOld` in apps/backend/scripts/sweep-turn-embeddings.ts:72"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4a34525ffa620027", "name": "Commented-code block (5 lines) in apps/backend/src/server.ts:83", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/server.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1db2fb34de940825", "name": "Commented-code block (5 lines) in apps/backend/src/dispatcher/index.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/index.ts:107"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11f1d0af9f4d840f", "name": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/notifications.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/notifications.ts:34"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0588447c8257b0be", "name": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/ai.ts:181", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/ai.ts:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ad1d70e7a8ab380e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/dispatcher/handlers/ai.ts:302", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/dispatcher/handlers/ai.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-2454fe776682127b", "name": "Commented-code block (6 lines) in apps/backend/src/jobs/binding-expire-sweep.ts:243", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/jobs/binding-expire-sweep.ts:243"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3b7e478aa12049e", "name": "Commented-code block (5 lines) in apps/backend/src/jobs/reset-ai-spend.ts:81", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/jobs/reset-ai-spend.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39ec6c6bee127c0f", "name": "Commented-code block (12 lines) in apps/backend/src/middleware/tenant-context.ts:83", "shortDescription": {"text": "Commented-code block (12 lines) in apps/backend/src/middleware/tenant-context.ts:83"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5cb64230abd8d038", "name": "Commented-code block (5 lines) in apps/backend/src/lib/idempotency-key.ts:111", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/idempotency-key.ts:111"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92e263f597f7a8a1", "name": "Commented-code block (6 lines) in apps/backend/src/lib/notification-composer.ts:105", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/notification-composer.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2aee91f9e397aa3", "name": "Commented-code block (5 lines) in apps/backend/src/lib/turn-embedder.ts:116", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/turn-embedder.ts:116"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b808fd991ca69a37", "name": "Commented-code block (5 lines) in apps/backend/src/lib/semantic-context.ts:476", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/semantic-context.ts:476"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf82910b314b62fa", "name": "Commented-code block (8 lines) in apps/backend/src/lib/otp-store.ts:174", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/lib/otp-store.ts:174"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec7eeda0fd7fe067", "name": "Commented-code block (10 lines) in apps/backend/src/lib/effective-responsibility.ts:128", "shortDescription": {"text": "Commented-code block (10 lines) in apps/backend/src/lib/effective-responsibility.ts:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35bc025f6de1a49b", "name": "Commented-code block (7 lines) in apps/backend/src/lib/supervisor-decision-writer.ts:229", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/supervisor-decision-writer.ts:229"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d74309438dc96e5d", "name": "Commented-code block (7 lines) in apps/backend/src/lib/redis-keys.ts:21", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/redis-keys.ts:21"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-966c41bd5405bf3a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/r2-presign.ts:158", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/r2-presign.ts:158"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-912cd1ea0fc5a8da", "name": "Commented-code block (12 lines) in apps/backend/src/lib/site-supervisor-binding.ts:161", "shortDescription": {"text": "Commented-code block (12 lines) in apps/backend/src/lib/site-supervisor-binding.ts:161"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-636714a5422a4321", "name": "Commented-code block (10 lines) in apps/backend/src/lib/handoff-package-composer.ts:324", "shortDescription": {"text": "Commented-code block (10 lines) in apps/backend/src/lib/handoff-package-composer.ts:324"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e2574b3ed7d2fd2", "name": "Commented-code block (5 lines) in apps/backend/src/lib/handoff-package-writer.ts:148", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/handoff-package-writer.ts:148"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cb213288b09c048", "name": "Commented-code block (5 lines) in apps/backend/src/lib/chat-thread-service.ts:87", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/chat-thread-service.ts:87"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbc8a5c612eb0671", "name": "Commented-code block (5 lines) in apps/backend/src/lib/redis.ts:50", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/redis.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16d30e806356a328", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/whatsapp-otp.ts:110", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/whatsapp-otp.ts:110"}, "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-7f0d66417987dfc5", "name": "Commented-code block (5 lines) in apps/backend/src/lib/services/complaint-service.ts:102", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/complaint-service.ts:102"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4090249bf2115832", "name": "Commented-code block (5 lines) in apps/backend/src/lib/services/activity-reverse-service.ts:195", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/activity-reverse-service.ts:195"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-20af1a5dadb31b65", "name": "Commented-code block (5 lines) in apps/backend/src/lib/services/worker-today-service.ts:32", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/worker-today-service.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d823afcd1a5671a", "name": "Commented-code block (7 lines) in apps/backend/src/lib/services/worker-submit-service.ts:73", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/services/worker-submit-service.ts:73"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5408572af1cb307", "name": "Commented-code block (6 lines) in apps/backend/src/lib/services/anonymize-worker-service.ts:88", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/services/anonymize-worker-service.ts:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d5d699e15ca7fc55", "name": "Commented-code block (9 lines) in apps/backend/src/lib/services/refresh-token-store.ts:222", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/lib/services/refresh-token-store.ts:222"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2ea96cc0ecc87701", "name": "Commented-code block (6 lines) in apps/backend/src/lib/services/decisions-service.ts:247", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/services/decisions-service.ts:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-37efbab4f071656f", "name": "Commented-code block (5 lines) in apps/backend/src/lib/services/admin-membership-service.ts:95", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/admin-membership-service.ts:95"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf835079e4712686", "name": "Commented-code block (7 lines) in apps/backend/src/lib/services/replacement-invite-service.ts:320", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/services/replacement-invite-service.ts:320"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7640638aa8ad43ec", "name": "Commented-code block (5 lines) in apps/backend/src/lib/services/today-service.ts:230", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/today-service.ts:230"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c5633ed6c76fe9e0", "name": "Commented-code block (5 lines) in apps/backend/src/routes/complaints.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/complaints.ts:132"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2fad956899600347", "name": "Commented-code block (5 lines) in apps/backend/src/routes/chat.ts:303", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/chat.ts:303"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfeedaa182e9f285", "name": "Commented-code block (6 lines) in apps/backend/src/routes/supervisor-decisions.ts:68", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/supervisor-decisions.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76326c3d62c95330", "name": "Commented-code block (5 lines) in apps/backend/src/routes/worker-captures.ts:84", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/worker-captures.ts:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e699f5b71ee5e488", "name": "Commented-code block (6 lines) in apps/backend/src/routes/workers.ts:96", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/workers.ts:96"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f44c0219affd76ed", "name": "Commented-code block (7 lines) in apps/backend/src/routes/supervisor-today.ts:39", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/supervisor-today.ts:39"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d402e3a1a2a2a835", "name": "Commented-code block (8 lines) in apps/backend/src/routes/worker-history.ts:45", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/routes/worker-history.ts:45"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-89a22b5b54a7c023", "name": "Commented-code block (7 lines) in apps/backend/src/routes/swap-requests.ts:134", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/swap-requests.ts:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17406bd86a99ef9c", "name": "Commented-code block (5 lines) in apps/backend/src/routes/auth.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/auth.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-c5a29fd7986f627f", "name": "Commented-code block (7 lines) in apps/backend/src/routes/decisions.ts:81", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/decisions.ts:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8243bb339a7772e0", "name": "Commented-code block (5 lines) in apps/backend/src/routes/chat-transcribe.ts:214", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/chat-transcribe.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f56dce18727b6c90", "name": "Commented-code block (5 lines) in apps/backend/src/routes/admin-workers.ts:78", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/admin-workers.ts:78"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d53cde631a4db7c", "name": "Commented-code block (9 lines) in apps/backend/src/routes/leave-requests.ts:109", "shortDescription": {"text": "Commented-code block (9 lines) in apps/backend/src/routes/leave-requests.ts:109"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b9a81f943cb2ab7d", "name": "Commented-code block (6 lines) in apps/backend/src/routes/sites.ts:71", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/sites.ts:71"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-008216cfee344224", "name": "Commented-code block (7 lines) in apps/backend/src/routes/me.ts:43", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/me.ts:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9b045f8c6a81a580", "name": "Commented-code block (8 lines) in apps/backend/src/routes/worker-consent.ts:61", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/src/routes/worker-consent.ts:61"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-097199f136030bb3", "name": "Commented-code block (5 lines) in apps/backend/src/routes/assignments.ts:56", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/assignments.ts:56"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-373f862d091cbf9f", "name": "Commented-code block (6 lines) in apps/backend/test/swap-requests.test.ts:247", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/swap-requests.test.ts:247"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f39bdffc1d4daefc", "name": "Commented-code block (6 lines) in apps/backend/test/supervisor-today.test.ts:367", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/supervisor-today.test.ts:367"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7fe8c3ef28806b42", "name": "Commented-code block (5 lines) in apps/backend/test/hr-water-flow.test.ts:168", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/hr-water-flow.test.ts:168"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-822344276380bf4b", "name": "Commented-code block (8 lines) in apps/backend/test/leave-decision.test.ts:113", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/test/leave-decision.test.ts:113"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9713d4d77878a551", "name": "Commented-code block (5 lines) in apps/backend/test/chat-swap.test.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-swap.test.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e8de1fb2dfdefa9a", "name": "Commented-code block (5 lines) in apps/backend/test/chat-thread-three-window.test.ts:242", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-thread-three-window.test.ts:242"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-becd3d2d56d22bdb", "name": "Commented-code block (7 lines) in apps/backend/test/p1_5_bootstrap_seed.test.ts:763", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/test/p1_5_bootstrap_seed.test.ts:763"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3326856247df65f2", "name": "Legacy-named symbol `tooOld` in apps/backend/test/worker-history.test.ts:263", "shortDescription": {"text": "Legacy-named symbol `tooOld` in apps/backend/test/worker-history.test.ts:263"}, "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-32aca9a852dba311", "name": "Commented-code block (7 lines) in apps/backend/test/cleanup_sandbox_fixtures.test.ts:141", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/test/cleanup_sandbox_fixtures.test.ts:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fee3200b6bc63a75", "name": "Commented-code block (5 lines) in apps/backend/test/helpers.ts:272", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/helpers.ts:272"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6c9206249737a38a", "name": "Commented-code block (8 lines) in apps/backend/test/activity-reverse-regression.test.ts:341", "shortDescription": {"text": "Commented-code block (8 lines) in apps/backend/test/activity-reverse-regression.test.ts:341"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff99f6478a6b2d21", "name": "Commented-code block (6 lines) in apps/backend/test/water-flow-chat-supervisor-journey.test.ts:257", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/water-flow-chat-supervisor-journey.test.ts:257"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00b3b43443839eb3", "name": "Commented-code block (5 lines) in apps/backend/test/leave-requests-authorization-regression.test.ts:153", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/leave-requests-authorization-regression.test.ts:153"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af0395aea81b376c", "name": "Commented-code block (6 lines) in apps/backend/test/chat-apply-route-concurrency.test.ts:214", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/chat-apply-route-concurrency.test.ts:214"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4876967d67aed202", "name": "Commented-code block (5 lines) in apps/backend/test/binding-expire-sweep.test.ts:448", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/binding-expire-sweep.test.ts:448"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e832832e6ba2450d", "name": "Commented-code block (6 lines) in apps/backend/test/tenant-context-legacy-mode.test.ts:24", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/tenant-context-legacy-mode.test.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-152fd9dbbd36c674", "name": "Commented-code block (7 lines) in apps/backend/test/auth-flow.test.ts:112", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/test/auth-flow.test.ts:112"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-629f3bb46807e6c4", "name": "Commented-code block (5 lines) in apps/backend/test/chat-apply-atomicity.test.ts:169", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-apply-atomicity.test.ts:169"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daa6e1c06c693fe8", "name": "Commented-code block (6 lines) in apps/backend/test/supervisor-decisions-union-all.test.ts:50", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/supervisor-decisions-union-all.test.ts:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4432e532f3a5d890", "name": "Commented-code block (6 lines) in apps/backend/test/handoff-package-composer.test.ts:609", "shortDescription": {"text": "Commented-code block (6 lines) in apps/backend/test/handoff-package-composer.test.ts:609"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9570afac5920e55e", "name": "Commented-code block (5 lines) in apps/backend/test/cross-tenant-isolation.test.ts:105", "shortDescription": {"text": "Commented-code block (5 lines) in apps/backend/test/cross-tenant-isolation.test.ts:105"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4eded2ed683694e", "name": "Legacy-named symbol `userMsgOld` in apps/backend/test/semantic-context.test.ts:612", "shortDescription": {"text": "Legacy-named symbol `userMsgOld` in apps/backend/test/semantic-context.test.ts:612"}, "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-316898c38cfa2810", "name": "Commented-code block (7 lines) in apps/backend/test/chat-adversarial-prompt-injection.test.ts:137", "shortDescription": {"text": "Commented-code block (7 lines) in apps/backend/test/chat-adversarial-prompt-injection.test.ts:137"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1e2500cd92feff1d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/admin-web/app/login/page.tsx:140", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/admin-web/app/login/page.tsx: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-3ae0e7e5638323d2", "name": "Commented-code block (6 lines) in apps/admin-web/app/system/map/_components/ScreenDetail.tsx:108", "shortDescription": {"text": "Commented-code block (6 lines) in apps/admin-web/app/system/map/_components/ScreenDetail.tsx:108"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9806ee89cff22e94", "name": "Commented-code block (8 lines) in apps/admin-web/app/system/map/_components/Sidebar.tsx:106", "shortDescription": {"text": "Commented-code block (8 lines) in apps/admin-web/app/system/map/_components/Sidebar.tsx:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34496f9ed5fbd1f3", "name": "Commented-code block (5 lines) in apps/admin-web/lib/env.ts:59", "shortDescription": {"text": "Commented-code block (5 lines) in apps/admin-web/lib/env.ts:59"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-651582f321397938", "name": "Commented-code block (6 lines) in apps/mobile/metro.config.js:57", "shortDescription": {"text": "Commented-code block (6 lines) in apps/mobile/metro.config.js:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7973f0c9b294c66c", "name": "Commented-code block (6 lines) in apps/mobile/app.config.ts:32", "shortDescription": {"text": "Commented-code block (6 lines) in apps/mobile/app.config.ts:32"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eb146469e1958526", "name": "Commented-code block (5 lines) in apps/mobile/app/(worker)/capture/[visitId]/submit.tsx:181", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/app/(worker)/capture/[visitId]/submit.tsx:181"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c9d8fc77d7c8164", "name": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/chat.tsx:205", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/chat.tsx:205"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5d64cb637b20712", "name": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/today.tsx:80", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/today.tsx:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3d7fefa94a5eb5f0", "name": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/me.tsx:444", "shortDescription": {"text": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/me.tsx:444"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-45e7e2bd28aa98c0", "name": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/decisions.tsx:101", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/decisions.tsx:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f3c365c5af4eec7b", "name": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/replacement-picker.tsx:157", "shortDescription": {"text": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/replacement-picker.tsx:157"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b30a26868bcdccb1", "name": "Commented-code block (9 lines) in apps/mobile/components/Drawer.tsx:85", "shortDescription": {"text": "Commented-code block (9 lines) in apps/mobile/components/Drawer.tsx:85"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-12d3d726c9a4cbb2", "name": "Commented-code block (8 lines) in apps/mobile/components/worker/capture/PhasePhotoCapture.tsx:196", "shortDescription": {"text": "Commented-code block (8 lines) in apps/mobile/components/worker/capture/PhasePhotoCapture.tsx:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1670df60d873cc8f", "name": "Commented-code block (5 lines) in apps/mobile/lib/api.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/lib/api.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-edf828f3d833111a", "name": "Legacy-named symbol `axrt_old` in apps/mobile/lib/api.test.ts:74", "shortDescription": {"text": "Legacy-named symbol `axrt_old` in apps/mobile/lib/api.test.ts:74"}, "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-6ded87d12952fecb", "name": "Commented-code block (6 lines) in apps/mobile/lib/identity-lifecycle.test.ts:395", "shortDescription": {"text": "Commented-code block (6 lines) in apps/mobile/lib/identity-lifecycle.test.ts:395"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a21423c8d2008e2", "name": "Commented-code block (7 lines) in apps/mobile/lib/worker-today-helpers.ts:10", "shortDescription": {"text": "Commented-code block (7 lines) in apps/mobile/lib/worker-today-helpers.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00f65007ccef9c88", "name": "Commented-code block (5 lines) in apps/mobile/lib/api-routes.ts:70", "shortDescription": {"text": "Commented-code block (5 lines) in apps/mobile/lib/api-routes.ts:70"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51345d4bd8f7bcb1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/audio/transcribe.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/audio/transcribe.ts:9"}, "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-d01068a6f98b8375", "name": "Commented-code block (8 lines) in apps/mobile/lib/audio/use-voice-recorder.ts:97", "shortDescription": {"text": "Commented-code block (8 lines) in apps/mobile/lib/audio/use-voice-recorder.ts:97"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a9661ce24682f974", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/r2-put.ts:9", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/r2-put.ts:9"}, "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-27ba9c2603caeb0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/photo-upload.ts:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/photo-upload.ts:195"}, "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-26420c179824d543", "name": "49 env vars used in code but missing from .env.example", "shortDescription": {"text": "49 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `APP_VARIANT`, `AXHY_ARTIFACTS_DIR`, `AXHY_AUDIT_EMERGENCY`, `AXHY_CORS_ORIGINS`, `AXHY_DB_URL`, `AXHY_OTP_BYPASS`, `AXHY_OTP_MAX_VERIFY_ATTEMPTS`, `AXHY_OTP_PEPPER` + 41 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-4a7f58b818c57098", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (scripts/embed-smoke-test.mjs:43)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (scripts/embed-smoke-test.mjs:43)"}, "fullDescription": {"text": "`scripts/embed-smoke-test.mjs:43` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-d701794c3e27dab6", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/knowledge-graph/src/builder.ts:138)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/knowledge-graph/src/builder.ts:138)"}, "fullDescription": {"text": "`packages/knowledge-graph/src/builder.ts:138` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-b4e62007ab314f4f", "name": "Dangling fetch: GET /api/... (packages/knowledge-graph/src/extractors/edges-triggers.ts:5)", "shortDescription": {"text": "Dangling fetch: GET /api/... (packages/knowledge-graph/src/extractors/edges-triggers.ts:5)"}, "fullDescription": {"text": "`packages/knowledge-graph/src/extractors/edges-triggers.ts:5` calls `GET /api/...` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/...`\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-204eb94ae4cbd130", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/impact-check-v2.ts:151)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/impact-check-v2.ts:151)"}, "fullDescription": {"text": "`packages/ai-tools/src/impact-check-v2.ts:151` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-3ee80a8c9770c60e", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/brain-builder.ts:116)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/brain-builder.ts:116)"}, "fullDescription": {"text": "`packages/ai-tools/src/brain-builder.ts:116` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-88e2f70438f897dd", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/vector-knowledge.ts:130)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/vector-knowledge.ts:130)"}, "fullDescription": {"text": "`packages/ai-tools/src/vector-knowledge.ts:130` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-532cf471e3773c99", "name": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (apps/backend/src/dispatcher/handlers/ai.ts:302)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (apps/backend/src/dispatcher/handlers/ai.ts:302)"}, "fullDescription": {"text": "`apps/backend/src/dispatcher/handlers/ai.ts:302` calls `POST https://api.openai.com/v1/chat/completions` 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.openai.com/v1/chat/completions`\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-db28568fcf83a34a", "name": "Dangling fetch: POST https://api.openai.com/v1/embeddings (apps/backend/src/lib/openai-embeddings.ts:76)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (apps/backend/src/lib/openai-embeddings.ts:76)"}, "fullDescription": {"text": "`apps/backend/src/lib/openai-embeddings.ts:76` calls `POST https://api.openai.com/v1/embeddings` 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.openai.com/v1/embeddings`\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-97671eb5d20998b4", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:158)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:158)"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-transcribe.ts:158` calls `POST https://api.openai.com/v1/audio/transcriptions` 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.openai.com/v1/audio/transcriptions`\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-390279053f3a8267", "name": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:323)", "shortDescription": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:323)"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-transcribe.ts:323` calls `POST https://api.openai.com/v1/audio/transcriptions` 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.openai.com/v1/audio/transcriptions`\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-8bdf6920dcecb357", "name": "Dangling fetch: POST /api/auth/session (apps/admin-web/app/login/page.tsx:140)", "shortDescription": {"text": "Dangling fetch: POST /api/auth/session (apps/admin-web/app/login/page.tsx:140)"}, "fullDescription": {"text": "`apps/admin-web/app/login/page.tsx:140` calls `POST /api/auth/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/session`\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-c6da5c22744a6927", "name": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/owner/LogoutButton.tsx:22)", "shortDescription": {"text": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/owner/LogoutButton.tsx:22)"}, "fullDescription": {"text": "`apps/admin-web/app/owner/LogoutButton.tsx:22` calls `DELETE /api/auth/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/session`\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-15d67614c209ea1b", "name": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/hr/LogoutButton.tsx:24)", "shortDescription": {"text": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/hr/LogoutButton.tsx:24)"}, "fullDescription": {"text": "`apps/admin-web/app/hr/LogoutButton.tsx:24` calls `DELETE /api/auth/session` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/auth/session`\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-cb99a4b8a0d5c9fc", "name": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/map/page.tsx:39)", "shortDescription": {"text": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/map/page.tsx:39)"}, "fullDescription": {"text": "`apps/admin-web/app/system/map/page.tsx:39` calls `GET /api/graph` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/graph`\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-a665944cbce9c472", "name": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/graph/page.tsx:88)", "shortDescription": {"text": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/graph/page.tsx:88)"}, "fullDescription": {"text": "`apps/admin-web/app/system/graph/page.tsx:88` calls `GET /api/graph` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: fetch\nNormalized path used for matching: `/graph`\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-5b407e67c1061d4b", "name": "Unused endpoint: POST /path", "shortDescription": {"text": "Unused endpoint: POST /path"}, "fullDescription": {"text": "`packages/knowledge-graph/src/extractors/edges-reads-writes.ts` declares `POST /path` 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-c98f70f04e62d779", "name": "Unused endpoint: GET /complaints", "shortDescription": {"text": "Unused endpoint: GET /complaints"}, "fullDescription": {"text": "`apps/backend/src/routes/complaints.ts` declares `GET /complaints` 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-f1bcc209a8f507c6", "name": "Unused endpoint: POST /chat/messages", "shortDescription": {"text": "Unused endpoint: POST /chat/messages"}, "fullDescription": {"text": "`apps/backend/src/routes/chat.ts` declares `POST /chat/messages` 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-03880dc2dd09fbe4", "name": "Unused endpoint: POST /chat/apply", "shortDescription": {"text": "Unused endpoint: POST /chat/apply"}, "fullDescription": {"text": "`apps/backend/src/routes/chat.ts` declares `POST /chat/apply` 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-878e0ba3efcf53c4", "name": "Unused endpoint: POST /super-admin/memberships", "shortDescription": {"text": "Unused endpoint: POST /super-admin/memberships"}, "fullDescription": {"text": "`apps/backend/src/routes/super-admin-memberships.ts` declares `POST /super-admin/memberships` 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-de4dd2c33fb44f47", "name": "Unused endpoint: GET /supervisor/decisions", "shortDescription": {"text": "Unused endpoint: GET /supervisor/decisions"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-decisions.ts` declares `GET /supervisor/decisions` 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-ac4ed763cd0e9713", "name": "Unused endpoint: POST /decisions/:id/apply", "shortDescription": {"text": "Unused endpoint: POST /decisions/:id/apply"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-decisions.ts` declares `POST /decisions/:id/apply` 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-213486d34ff05d43", "name": "Unused endpoint: GET /supervisor/context", "shortDescription": {"text": "Unused endpoint: GET /supervisor/context"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-context.ts` declares `GET /supervisor/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}}, {"id": "scanner-3185b6f128084591", "name": "Unused endpoint: POST /worker/captures/upload-urls", "shortDescription": {"text": "Unused endpoint: POST /worker/captures/upload-urls"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-captures.ts` declares `POST /worker/captures/upload-urls` 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-c8cf81318c9b97dc", "name": "Unused endpoint: POST /worker/captures/upload", "shortDescription": {"text": "Unused endpoint: POST /worker/captures/upload"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-captures.ts` declares `POST /worker/captures/upload` 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-124c7fbfe4399d89", "name": "Unused endpoint: POST /supervisor/replacement-invites", "shortDescription": {"text": "Unused endpoint: POST /supervisor/replacement-invites"}, "fullDescription": {"text": "`apps/backend/src/routes/replacement-invites.ts` declares `POST /supervisor/replacement-invites` 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-50d6f3cf08565f67", "name": "Unused endpoint: GET /supervisor/replacement-invites", "shortDescription": {"text": "Unused endpoint: GET /supervisor/replacement-invites"}, "fullDescription": {"text": "`apps/backend/src/routes/replacement-invites.ts` declares `GET /supervisor/replacement-invites` 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-a17ca496ad09bc28", "name": "Unused endpoint: GET /supervisor/today", "shortDescription": {"text": "Unused endpoint: GET /supervisor/today"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-today.ts` declares `GET /supervisor/today` 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-0e88896629882c43", "name": "Unused endpoint: GET /admin/sites", "shortDescription": {"text": "Unused endpoint: GET /admin/sites"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-sites.ts` declares `GET /admin/sites` 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-ce72b12f3c7426b5", "name": "Unused endpoint: POST /admin/sites", "shortDescription": {"text": "Unused endpoint: POST /admin/sites"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-sites.ts` declares `POST /admin/sites` 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-67d4c921fc353dfb", "name": "Unused endpoint: GET /worker/history", "shortDescription": {"text": "Unused endpoint: GET /worker/history"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-history.ts` declares `GET /worker/history` 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-a51b26b3cb1ff5ee", "name": "Unused endpoint: GET /supervisor/summary", "shortDescription": {"text": "Unused endpoint: GET /supervisor/summary"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-summary.ts` declares `GET /supervisor/summary` 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-90649889b66603c9", "name": "Unused endpoint: POST /swap-requests", "shortDescription": {"text": "Unused endpoint: POST /swap-requests"}, "fullDescription": {"text": "`apps/backend/src/routes/swap-requests.ts` declares `POST /swap-requests` 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-8f2806065c783974", "name": "Unused endpoint: POST /chat/reload-context", "shortDescription": {"text": "Unused endpoint: POST /chat/reload-context"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-reload-context.ts` declares `POST /chat/reload-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}}, {"id": "scanner-8df9d0a42307ceb1", "name": "Unused endpoint: GET /chat/reload-context/state", "shortDescription": {"text": "Unused endpoint: GET /chat/reload-context/state"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-reload-context.ts` declares `GET /chat/reload-context/state` 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-bfbf7efb6929ddfc", "name": "Unused endpoint: POST /admin/memberships", "shortDescription": {"text": "Unused endpoint: POST /admin/memberships"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-memberships.ts` declares `POST /admin/memberships` 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-d6ea053401b1fb4d", "name": "Unused endpoint: GET /admin/memberships", "shortDescription": {"text": "Unused endpoint: GET /admin/memberships"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-memberships.ts` declares `GET /admin/memberships` 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-2a77854ef714f665", "name": "Unused endpoint: POST /auth/otp/request", "shortDescription": {"text": "Unused endpoint: POST /auth/otp/request"}, "fullDescription": {"text": "`apps/backend/src/routes/auth.ts` declares `POST /auth/otp/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-a6ce45686433a45b", "name": "Unused endpoint: POST /auth/otp/verify", "shortDescription": {"text": "Unused endpoint: POST /auth/otp/verify"}, "fullDescription": {"text": "`apps/backend/src/routes/auth.ts` declares `POST /auth/otp/verify` 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-306351319fc67778", "name": "Unused endpoint: POST /auth/sign-out", "shortDescription": {"text": "Unused endpoint: POST /auth/sign-out"}, "fullDescription": {"text": "`apps/backend/src/routes/auth.ts` declares `POST /auth/sign-out` 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-0700c7227a37bb2a", "name": "Unused endpoint: GET /admin/owner-summary", "shortDescription": {"text": "Unused endpoint: GET /admin/owner-summary"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-company.ts` declares `GET /admin/owner-summary` 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-35d51ab833a57d40", "name": "Unused endpoint: GET /decisions/proposed-for-me", "shortDescription": {"text": "Unused endpoint: GET /decisions/proposed-for-me"}, "fullDescription": {"text": "`apps/backend/src/routes/decisions.ts` declares `GET /decisions/proposed-for-me` 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-9789e7fdde289660", "name": "Unused endpoint: POST /decisions/:id/dismiss", "shortDescription": {"text": "Unused endpoint: POST /decisions/:id/dismiss"}, "fullDescription": {"text": "`apps/backend/src/routes/decisions.ts` declares `POST /decisions/:id/dismiss` 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-b8419d8d9791b843", "name": "Unused endpoint: GET /supervisor/living-doc", "shortDescription": {"text": "Unused endpoint: GET /supervisor/living-doc"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-living-doc.ts` declares `GET /supervisor/living-doc` 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-9057acad4db9d414", "name": "Unused endpoint: POST /chat/transcribe", "shortDescription": {"text": "Unused endpoint: POST /chat/transcribe"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-transcribe.ts` declares `POST /chat/transcribe` 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-4c3172c0036b3b11", "name": "Unused endpoint: POST /chat/transcribe-stream", "shortDescription": {"text": "Unused endpoint: POST /chat/transcribe-stream"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-transcribe.ts` declares `POST /chat/transcribe-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-b36892106ecdc9aa", "name": "Unused endpoint: POST /auth/refresh", "shortDescription": {"text": "Unused endpoint: POST /auth/refresh"}, "fullDescription": {"text": "`apps/backend/src/routes/auth-refresh.ts` declares `POST /auth/refresh` 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-949b7eebfc42dddb", "name": "Unused endpoint: GET /admin/workers", "shortDescription": {"text": "Unused endpoint: GET /admin/workers"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-workers.ts` declares `GET /admin/workers` 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-123c824383d0716d", "name": "Unused endpoint: POST /admin/workers", "shortDescription": {"text": "Unused endpoint: POST /admin/workers"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-workers.ts` declares `POST /admin/workers` 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-b79b023541d690ee", "name": "Unused endpoint: POST /admin/policy", "shortDescription": {"text": "Unused endpoint: POST /admin/policy"}, "fullDescription": {"text": "`apps/backend/src/routes/admin-policy.ts` declares `POST /admin/policy` 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-f29aade19ceaa61c", "name": "Unused endpoint: POST /leave-requests", "shortDescription": {"text": "Unused endpoint: POST /leave-requests"}, "fullDescription": {"text": "`apps/backend/src/routes/leave-requests.ts` declares `POST /leave-requests` 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-0701294795ef9045", "name": "Unused endpoint: GET /leave-requests", "shortDescription": {"text": "Unused endpoint: GET /leave-requests"}, "fullDescription": {"text": "`apps/backend/src/routes/leave-requests.ts` declares `GET /leave-requests` 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-80dbae2195fe259a", "name": "Unused endpoint: POST /calendar", "shortDescription": {"text": "Unused endpoint: POST /calendar"}, "fullDescription": {"text": "`apps/backend/src/routes/calendar.ts` declares `POST /calendar` 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-c6e0ce23f01b6514", "name": "Unused endpoint: GET /worker/today", "shortDescription": {"text": "Unused endpoint: GET /worker/today"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-today.ts` declares `GET /worker/today` 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-fd1dc91abf32142d", "name": "Unused endpoint: GET /me", "shortDescription": {"text": "Unused endpoint: GET /me"}, "fullDescription": {"text": "`apps/backend/src/routes/me.ts` declares `GET /me` 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-1d62cec842f4c3ad", "name": "Unused endpoint: PATCH /me/notification-prefs", "shortDescription": {"text": "Unused endpoint: PATCH /me/notification-prefs"}, "fullDescription": {"text": "`apps/backend/src/routes/me.ts` declares `PATCH /me/notification-prefs` 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-b1f35b2ef209f6da", "name": "Unused endpoint: GET /chat/history", "shortDescription": {"text": "Unused endpoint: GET /chat/history"}, "fullDescription": {"text": "`apps/backend/src/routes/chat-history.ts` declares `GET /chat/history` 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-07c33571b4491a87", "name": "Unused endpoint: POST /worker/consent", "shortDescription": {"text": "Unused endpoint: POST /worker/consent"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-consent.ts` declares `POST /worker/consent` 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-b8e597a70e865dfc", "name": "Unused endpoint: POST /super-admin/companies", "shortDescription": {"text": "Unused endpoint: POST /super-admin/companies"}, "fullDescription": {"text": "`apps/backend/src/routes/super-admin-companies.ts` declares `POST /super-admin/companies` 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-53c4c0323773185a", "name": "Unused endpoint: POST /assignments", "shortDescription": {"text": "Unused endpoint: POST /assignments"}, "fullDescription": {"text": "`apps/backend/src/routes/assignments.ts` declares `POST /assignments` 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-2398c4ba96f6dcd2", "name": "Unused endpoint: GET /worker/leave-requests", "shortDescription": {"text": "Unused endpoint: GET /worker/leave-requests"}, "fullDescription": {"text": "`apps/backend/src/routes/worker-leave.ts` declares `GET /worker/leave-requests` 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-277cc2b24901a44a", "name": "Unused endpoint: GET /supervisor/updates", "shortDescription": {"text": "Unused endpoint: GET /supervisor/updates"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-updates.ts` declares `GET /supervisor/updates` 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-51ece756e9be0b88", "name": "Unused endpoint: POST /supervisor/updates/:id/acknowledge", "shortDescription": {"text": "Unused endpoint: POST /supervisor/updates/:id/acknowledge"}, "fullDescription": {"text": "`apps/backend/src/routes/supervisor-updates.ts` declares `POST /supervisor/updates/:id/acknowledge` 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/24027"}, "properties": {"repository": "Akshaytho/axhy-v3", "repoUrl": "https://github.com/Akshaytho/axhy-v3", "branch": "main"}, "results": [{"ruleId": "scanner-8ca4effe29df24f7", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 packages/eslint-config-axhy/test/lint-rules.fixture.ts:15"}, "properties": {"repobilityId": "a97987b129fc01ec", "scanner": "scanner-primary", "fingerprint": "8ca4effe29df24f7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-eabc2f5c68ee75c9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/lock-seed.ts:78"}, "properties": {"repobilityId": "72b7f9f93468244c", "scanner": "scanner-primary", "fingerprint": "eabc2f5c68ee75c9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-aa67e21ca7fae678", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/builder.ts:368"}, "properties": {"repobilityId": "06963cd6bce4ab98", "scanner": "scanner-primary", "fingerprint": "aa67e21ca7fae678", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-44fb43dfd85bde13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/src/audit.ts:45"}, "properties": {"repobilityId": "4c3c4ad44bebb4d7", "scanner": "scanner-primary", "fingerprint": "44fb43dfd85bde13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7682d5c78c16595a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/knowledge-graph/test/diagnostic-rename.test.ts:71"}, "properties": {"repobilityId": "38318f876fe35df9", "scanner": "scanner-primary", "fingerprint": "7682d5c78c16595a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7ba577fee91e46ad", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-builder.ts:467"}, "properties": {"repobilityId": "73f86442a5435f50", "scanner": "scanner-primary", "fingerprint": "7ba577fee91e46ad", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0adee6809fcf6087", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-compact.ts:175"}, "properties": {"repobilityId": "29d7d0265c6e97b8", "scanner": "scanner-primary", "fingerprint": "0adee6809fcf6087", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ed4c423a12f259e7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/migrate-chunks-to-entries.ts:42"}, "properties": {"repobilityId": "119516037366743e", "scanner": "scanner-primary", "fingerprint": "ed4c423a12f259e7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d1e3580b191f1f50", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/brain-lock-seed.ts:84"}, "properties": {"repobilityId": "d42daf03f15a8d4f", "scanner": "scanner-primary", "fingerprint": "d1e3580b191f1f50", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-634efb2e58436fc3", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/session-audit.ts:188"}, "properties": {"repobilityId": "8c8ea119b8ed3583", "scanner": "scanner-primary", "fingerprint": "634efb2e58436fc3", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-32f9eb338da868c7", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 packages/ai-tools/src/token-check.ts:335"}, "properties": {"repobilityId": "851bfadefdbbe4a1", "scanner": "scanner-primary", "fingerprint": "32f9eb338da868c7", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-20a933f81f551ab2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/seed-data/src/index.ts:11"}, "properties": {"repobilityId": "4f01214281ab004c", "scanner": "scanner-primary", "fingerprint": "20a933f81f551ab2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9ecbd3dac3c2862b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/master-plan-extractor/src/index.ts:14"}, "properties": {"repobilityId": "71b6af04b91771fd", "scanner": "scanner-primary", "fingerprint": "9ecbd3dac3c2862b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8610d4f87c312a1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/graph-builder/src/index.ts:13"}, "properties": {"repobilityId": "a2d232778f0105d1", "scanner": "scanner-primary", "fingerprint": "b8610d4f87c312a1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bb0d56afb6dcfe4b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/check.ts:103"}, "properties": {"repobilityId": "353dfabe5eb5a940", "scanner": "scanner-primary", "fingerprint": "bb0d56afb6dcfe4b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fa26bc843b802b5a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/build.ts:185"}, "properties": {"repobilityId": "d56756baef441088", "scanner": "scanner-primary", "fingerprint": "fa26bc843b802b5a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-642bff981d7910b6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/connectedness/src/impact.ts:158"}, "properties": {"repobilityId": "60baef154230c421", "scanner": "scanner-primary", "fingerprint": "642bff981d7910b6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bdd071919af1c077", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 tools/voice-benchmark/src/index.ts:13"}, "properties": {"repobilityId": "7f1415f4d51ba310", "scanner": "scanner-primary", "fingerprint": "bdd071919af1c077", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b7c7c4aee3033306", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-real-phone-worker.ts:45"}, "properties": {"repobilityId": "733cd1d480db503e", "scanner": "scanner-primary", "fingerprint": "b7c7c4aee3033306", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-53da9bb3ba06b82e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-sandbox.ts:81"}, "properties": {"repobilityId": "4ff9ebb1bd9e51aa", "scanner": "scanner-primary", "fingerprint": "53da9bb3ba06b82e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5c7b63fcdfab94e8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-demo-today.ts:41"}, "properties": {"repobilityId": "8133f33ae4d8a7f0", "scanner": "scanner-primary", "fingerprint": "5c7b63fcdfab94e8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-21298388bd974550", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/get-otp.ts:88"}, "properties": {"repobilityId": "5ffb6a61d4eb98eb", "scanner": "scanner-primary", "fingerprint": "21298388bd974550", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-01dcecc68a4f6805", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/hydrate-deferred-assignments.ts:30"}, "properties": {"repobilityId": "ccf5e31d9a954c01", "scanner": "scanner-primary", "fingerprint": "01dcecc68a4f6805", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ecf2aa7bdfeb5313", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/scripts/seed-qa-comprehensive.ts:188"}, "properties": {"repobilityId": "870b90cb3a2504d4", "scanner": "scanner-primary", "fingerprint": "ecf2aa7bdfeb5313", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-26b17eada2eea2e9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/index.ts:15"}, "properties": {"repobilityId": "71ca2f20da7b1e52", "scanner": "scanner-primary", "fingerprint": "26b17eada2eea2e9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-24d74d729fbee58a", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/src/dispatcher/index.ts:298"}, "properties": {"repobilityId": "392b7ed8d5c52522", "scanner": "scanner-primary", "fingerprint": "24d74d729fbee58a", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dd463c88d5ddce7c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/backend/test/chat-adversarial-prompt-injection.test.ts:38"}, "properties": {"repobilityId": "8eeeb143f0093081", "scanner": "scanner-primary", "fingerprint": "dd463c88d5ddce7c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-374c270c10199171", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/capture-design-screens.ts:35"}, "properties": {"repobilityId": "0d852c3798981157", "scanner": "scanner-primary", "fingerprint": "374c270c10199171", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5decab85c2297626", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 apps/mobile/scripts/probe-design-html.ts:10"}, "properties": {"repobilityId": "80fd332f549baac4", "scanner": "scanner-primary", "fingerprint": "5decab85c2297626", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-0d354086c95dd1b4", "level": "error", "message": {"text": "Insecure pattern 'new_function_used' in packages/ui-tokens/scripts/generate.mjs:32"}, "properties": {"repobilityId": "f71dd29636b97d29", "scanner": "scanner-primary", "fingerprint": "0d354086c95dd1b4", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["owasp", "new_function_used"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui-tokens/scripts/generate.mjs"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "16cfc5b522ec037d", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 92}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "16cfc5b522ec037d", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "ccbbd0f289876fbc", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 64}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "ccbbd0f289876fbc", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 115}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "ccbbd0f289876fbc", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-13d4234e2346c832", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/redaction.test.ts"}, "properties": {"repobilityId": "ccbbd0f289876fbc", "scanner": "scanner-primary", "fingerprint": "13d4234e2346c832", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/redaction.test.ts"}, "region": {"startLine": 137}}}]}, {"ruleId": "scanner-e44901f1010ca1a3", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts"}, "properties": {"repobilityId": "5b7c1dfdc275c220", "scanner": "scanner-primary", "fingerprint": "e44901f1010ca1a3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/pipeline-integration.test.ts"}, "region": {"startLine": 51}}}]}, {"ruleId": "scanner-e44901f1010ca1a3", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts"}, "properties": {"repobilityId": "352972080f7cc955", "scanner": "scanner-primary", "fingerprint": "e44901f1010ca1a3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/pipeline-integration.test.ts"}, "region": {"startLine": 45}}}]}, {"ruleId": "scanner-e44901f1010ca1a3", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts"}, "properties": {"repobilityId": "352972080f7cc955", "scanner": "scanner-primary", "fingerprint": "e44901f1010ca1a3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/pipeline-integration.test.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-e44901f1010ca1a3", "level": "error", "message": {"text": "Possible secret in packages/ai-tools/src/pipeline-integration.test.ts"}, "properties": {"repobilityId": "352972080f7cc955", "scanner": "scanner-primary", "fingerprint": "e44901f1010ca1a3", "layer": "security", "severity": "critical", "confidence": 1.0, "tags": ["secrets"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/pipeline-integration.test.ts"}, "region": {"startLine": 238}}}]}, {"ruleId": "scanner-4b03a5a6ca9997d9", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in packages/ai-tools/src/session-audit.ts:20"}, "properties": {"repobilityId": "a1c26320580e671f", "scanner": "scanner-primary", "fingerprint": "4b03a5a6ca9997d9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/src/session-audit.ts"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-d05679348f9c0ec4", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/artifact-sentinel.mjs:27"}, "properties": {"repobilityId": "36af70621b1ea4e2", "scanner": "scanner-primary", "fingerprint": "d05679348f9c0ec4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/artifact-sentinel.mjs"}, "region": {"startLine": 27}}}]}, {"ruleId": "scanner-bd98e673f0f6145e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in tools/screenshot-receiver.mjs:46"}, "properties": {"repobilityId": "3bec3f1818fe80af", "scanner": "scanner-primary", "fingerprint": "bd98e673f0f6145e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/screenshot-receiver.mjs"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-44b68e3e16eb603b", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in tools/connectedness/src/check.ts:23"}, "properties": {"repobilityId": "96fc5c249530f484", "scanner": "scanner-primary", "fingerprint": "44b68e3e16eb603b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/connectedness/src/check.ts"}, "region": {"startLine": 23}}}]}, {"ruleId": "scanner-bebfb899f193d76c", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in handoff/scripts/build-handoff-artifacts.mjs:30"}, "properties": {"repobilityId": "1cdcd1d45501b7ac", "scanner": "scanner-primary", "fingerprint": "bebfb899f193d76c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "handoff/scripts/build-handoff-artifacts.mjs"}, "region": {"startLine": 30}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "b86179956da3a4a8", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-42a91a596672ef99", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "fb3ebbf66f02e6f3", "scanner": "scanner-primary", "fingerprint": "42a91a596672ef99", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared-schema/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d4c40f9633c2055e", "level": "note", "message": {"text": "Very large file: docs/design/payroll-ui-v2/design-canvas.jsx (1437 lines)"}, "properties": {"repobilityId": "c3751063b62570fb", "scanner": "scanner-primary", "fingerprint": "d4c40f9633c2055e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9064f88acbab46e5", "level": "note", "message": {"text": "Very large file: docs/design/payroll-ui-v2/worker-screens.jsx (2221 lines)"}, "properties": {"repobilityId": "3769af551067ed20", "scanner": "scanner-primary", "fingerprint": "9064f88acbab46e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3dab74fed9be91b2", "level": "note", "message": {"text": "Very large file: docs/design/worker-app-canon/project/design-canvas.jsx (1437 lines)"}, "properties": {"repobilityId": "14f0317809dccc57", "scanner": "scanner-primary", "fingerprint": "3dab74fed9be91b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-2ab429ff04871833", "level": "note", "message": {"text": "Very large file: docs/design/worker-app-canon/project/worker-screens.jsx (2221 lines)"}, "properties": {"repobilityId": "10978dce46b748b1", "scanner": "scanner-primary", "fingerprint": "2ab429ff04871833", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3dcd24b6e2052a25", "level": "note", "message": {"text": "Very large file: apps/backend/src/routes/chat.ts (2110 lines)"}, "properties": {"repobilityId": "fe889d4b6487346a", "scanner": "scanner-primary", "fingerprint": "3dcd24b6e2052a25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-bfbbed6344cf64b6", "level": "note", "message": {"text": "Very large file: handoff/scripts/build-handoff-artifacts.mjs (1275 lines)"}, "properties": {"repobilityId": "47d96a8b1f35f7a7", "scanner": "scanner-primary", "fingerprint": "bfbbed6344cf64b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "2b99d92ca06950ad", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-9faacba446b7c077", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/state-machines/package.json"}, "properties": {"repobilityId": "c74507465e0dc317", "scanner": "scanner-primary", "fingerprint": "9faacba446b7c077", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/state-machines/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8539693a7da58727", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/business-rules/package.json"}, "properties": {"repobilityId": "0bf271409f0ea54f", "scanner": "scanner-primary", "fingerprint": "8539693a7da58727", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/business-rules/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-89030a6f1c7a91d2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/eslint-config-axhy/package.json"}, "properties": {"repobilityId": "2f15914da1e9bd0a", "scanner": "scanner-primary", "fingerprint": "89030a6f1c7a91d2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/eslint-config-axhy/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a75518362984bd9d", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/shared-schema/package.json"}, "properties": {"repobilityId": "04a7f1c8b9af4df5", "scanner": "scanner-primary", "fingerprint": "a75518362984bd9d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/shared-schema/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2a3f2fd288798142", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ui-web/package.json"}, "properties": {"repobilityId": "ec66105fbf7b9c3e", "scanner": "scanner-primary", "fingerprint": "2a3f2fd288798142", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui-web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-8c92dfc9a15b9c07", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ui-tokens/package.json"}, "properties": {"repobilityId": "8d101b3a6ce65725", "scanner": "scanner-primary", "fingerprint": "8c92dfc9a15b9c07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui-tokens/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-892d4f964c9036e2", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/api-client/package.json"}, "properties": {"repobilityId": "e1c2e42c288c295a", "scanner": "scanner-primary", "fingerprint": "892d4f964c9036e2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/api-client/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5ba848f9dd4e0bff", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/knowledge-graph/package.json"}, "properties": {"repobilityId": "3cc0badfa1bc3215", "scanner": "scanner-primary", "fingerprint": "5ba848f9dd4e0bff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/knowledge-graph/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2d10c379e1228364", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ui-native/package.json"}, "properties": {"repobilityId": "f00498fe1b89885c", "scanner": "scanner-primary", "fingerprint": "2d10c379e1228364", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ui-native/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-592524165b9fc40c", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/errors/package.json"}, "properties": {"repobilityId": "6af0ef8d92d825b4", "scanner": "scanner-primary", "fingerprint": "592524165b9fc40c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/errors/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6b331dd3fa532fe1", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/jwt-public/package.json"}, "properties": {"repobilityId": "93debbcdd0a09d9f", "scanner": "scanner-primary", "fingerprint": "6b331dd3fa532fe1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/jwt-public/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1188dbf6c513dd0b", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/copy/package.json"}, "properties": {"repobilityId": "62af23820841a74e", "scanner": "scanner-primary", "fingerprint": "1188dbf6c513dd0b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/copy/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5bd94d09544860ad", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: packages/ai-tools/package.json"}, "properties": {"repobilityId": "61fd629b58f4b913", "scanner": "scanner-primary", "fingerprint": "5bd94d09544860ad", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "packages/ai-tools/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-5f515b254c93bab0", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/seed-data/package.json"}, "properties": {"repobilityId": "0134104acac7fcf8", "scanner": "scanner-primary", "fingerprint": "5f515b254c93bab0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/seed-data/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-c40107ff18861e95", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/master-plan-extractor/package.json"}, "properties": {"repobilityId": "bae1d516d5c19eb4", "scanner": "scanner-primary", "fingerprint": "c40107ff18861e95", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/master-plan-extractor/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-26105b8778a45cf8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/graph-builder/package.json"}, "properties": {"repobilityId": "ec85c0ff35d5df93", "scanner": "scanner-primary", "fingerprint": "26105b8778a45cf8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/graph-builder/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1d8fdf6d65e90d16", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/connectedness/package.json"}, "properties": {"repobilityId": "a0c938e9af45f4d1", "scanner": "scanner-primary", "fingerprint": "1d8fdf6d65e90d16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/connectedness/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e87bb86d89edd761", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: tools/voice-benchmark/package.json"}, "properties": {"repobilityId": "deb0e336435198da", "scanner": "scanner-primary", "fingerprint": "e87bb86d89edd761", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "tools/voice-benchmark/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-53a7af2536f80bd8", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/backend/package.json"}, "properties": {"repobilityId": "637f248c83215574", "scanner": "scanner-primary", "fingerprint": "53a7af2536f80bd8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/backend/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-f666328b45f4601a", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/admin-web/package.json"}, "properties": {"repobilityId": "a53cda93fe322fd6", "scanner": "scanner-primary", "fingerprint": "f666328b45f4601a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/admin-web/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d0c2205560692580", "level": "note", "message": {"text": "Node manifest has dependencies but no lockfile: apps/mobile/package.json"}, "properties": {"repobilityId": "b3dfed7bb3d70ed3", "scanner": "scanner-primary", "fingerprint": "d0c2205560692580", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["dependency", "lockfile", "reproducibility", "generated-repo-pattern"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "apps/mobile/package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "a48c98092f856ea5", "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": "80d545d47b5240fc", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "39909f8550364ab3", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "24eaf2461e69c875", "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": "6f2ba7731ab78c59", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-fae36c5a45d956c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared-schema/src/zod/audit-payloads.ts:109"}, "properties": {"repobilityId": "fab1509f50d2085b", "scanner": "scanner-primary", "fingerprint": "fae36c5a45d956c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7dfc55e1ac591c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/shared-schema/src/zod/supervisor-decision-kinds.ts:138"}, "properties": {"repobilityId": "3c062ea4c15e87aa", "scanner": "scanner-primary", "fingerprint": "f7dfc55e1ac591c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bc0f538fd33ca5b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/builder.ts:242"}, "properties": {"repobilityId": "1b5add4005f05dc1", "scanner": "scanner-primary", "fingerprint": "bc0f538fd33ca5b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7da4692b3dfa1040", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/builder.ts:138"}, "properties": {"repobilityId": "f6eb3c5fdb8eaa8b", "scanner": "scanner-primary", "fingerprint": "7da4692b3dfa1040", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-164faa0dd4d47619", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-navigates-to.ts:126"}, "properties": {"repobilityId": "d090194ac09d28e5", "scanner": "scanner-primary", "fingerprint": "164faa0dd4d47619", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3416b32ee60583f", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/knowledge-graph/src/extractors/edges-triggers.ts:91"}, "properties": {"repobilityId": "0016534ac27eaefb", "scanner": "scanner-primary", "fingerprint": "d3416b32ee60583f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5932145eda326d13", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/knowledge-graph/src/extractors/edges-triggers.ts:4"}, "properties": {"repobilityId": "d19d1919748d867f", "scanner": "scanner-primary", "fingerprint": "5932145eda326d13", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a896aae22cdd2f1c", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai-tools/src/impact-check-v2.ts:116"}, "properties": {"repobilityId": "5885572887b08123", "scanner": "scanner-primary", "fingerprint": "a896aae22cdd2f1c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c135dcf326b26b37", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/impact-check-v2.ts:151"}, "properties": {"repobilityId": "6b2f7f13f0b71a8f", "scanner": "scanner-primary", "fingerprint": "c135dcf326b26b37", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ee354a80d61b21c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in packages/ai-tools/src/brain-builder.ts:500"}, "properties": {"repobilityId": "1eb60d22ea79c018", "scanner": "scanner-primary", "fingerprint": "ee354a80d61b21c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6df3009a305043c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/brain-builder.ts:116"}, "properties": {"repobilityId": "f6eadc94bc4b1352", "scanner": "scanner-primary", "fingerprint": "e6df3009a305043c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8ca2a6de0dc94c93", "level": "none", "message": {"text": "Commented-code block (10 lines) in packages/ai-tools/src/openai-tool-loop.ts:234"}, "properties": {"repobilityId": "49bbf7228c0bd220", "scanner": "scanner-primary", "fingerprint": "8ca2a6de0dc94c93", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cbd43c547951e17", "level": "none", "message": {"text": "Commented-code block (6 lines) in packages/ai-tools/src/session-audit.ts:366"}, "properties": {"repobilityId": "7c36eeecfe68cc40", "scanner": "scanner-primary", "fingerprint": "9cbd43c547951e17", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bd3f685843c43dca", "level": "none", "message": {"text": "Commented-code block (7 lines) in packages/ai-tools/src/vector-knowledge.ts:92"}, "properties": {"repobilityId": "891b8ea58f6a6def", "scanner": "scanner-primary", "fingerprint": "bd3f685843c43dca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec9f84cf4f66e36e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 packages/ai-tools/src/vector-knowledge.ts:130"}, "properties": {"repobilityId": "b00efa5134e4bc87", "scanner": "scanner-primary", "fingerprint": "ec9f84cf4f66e36e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-fd92189381214929", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/embed-smoke-test.mjs:43"}, "properties": {"repobilityId": "5d0f908e30d034ee", "scanner": "scanner-primary", "fingerprint": "fd92189381214929", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d6efb1b819e259e", "level": "none", "message": {"text": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/decisions.jsx:7"}, "properties": {"repobilityId": "1e7a308dbf54652c", "scanner": "scanner-primary", "fingerprint": "6d6efb1b819e259e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c1e54c1d115fb49", "level": "none", "message": {"text": "Commented-code block (5 lines) in docs/prototypes/supervisor-mobile-r6/project/src/activity.jsx:2"}, "properties": {"repobilityId": "0b8f5b93b8067505", "scanner": "scanner-primary", "fingerprint": "2c1e54c1d115fb49", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5110ffa431b28c6c", "level": "none", "message": {"text": "Commented-code block (7 lines) in docs/prototypes/supervisor-mobile-r6/project/src/data.js:4"}, "properties": {"repobilityId": "d0b3f6f63ebe6e36", "scanner": "scanner-primary", "fingerprint": "5110ffa431b28c6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b0e1ec574b46dc7", "level": "none", "message": {"text": "Commented-code block (6 lines) in docs/design/payroll-ui-v2/design-canvas.jsx:1"}, "properties": {"repobilityId": "0210c4efcbacbbef", "scanner": "scanner-primary", "fingerprint": "6b0e1ec574b46dc7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d7ff47d5cdbec0a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/payroll-ui-v2/design-canvas.jsx:116"}, "properties": {"repobilityId": "daecb5059c2e71d6", "scanner": "scanner-primary", "fingerprint": "d7ff47d5cdbec0a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-eb618c038cb69364", "level": "none", "message": {"text": "Commented-code block (7 lines) in docs/design/payroll-ui-v2/tweaks-panel.jsx:11"}, "properties": {"repobilityId": "d9bba6433c5d0162", "scanner": "scanner-primary", "fingerprint": "eb618c038cb69364", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c2218d1f4dcfd96c", "level": "none", "message": {"text": "Commented-code block (8 lines) in docs/design/payroll-ui-v2/worker-screens.jsx:1"}, "properties": {"repobilityId": "5ec98e8d9f2ee2a8", "scanner": "scanner-primary", "fingerprint": "c2218d1f4dcfd96c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55ea7c427fc4a31b", "level": "none", "message": {"text": "Commented-code block (6 lines) in docs/design/worker-app-canon/project/design-canvas.jsx:1"}, "properties": {"repobilityId": "2cfbc65c04796de4", "scanner": "scanner-primary", "fingerprint": "55ea7c427fc4a31b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fd449591a0ebaaba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 docs/design/worker-app-canon/project/design-canvas.jsx:116"}, "properties": {"repobilityId": "09e23237363ee767", "scanner": "scanner-primary", "fingerprint": "fd449591a0ebaaba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf0c60808d68a775", "level": "none", "message": {"text": "Commented-code block (7 lines) in docs/design/worker-app-canon/project/tweaks-panel.jsx:11"}, "properties": {"repobilityId": "ddbd0124c73cbc33", "scanner": "scanner-primary", "fingerprint": "cf0c60808d68a775", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be75938dc0770ddf", "level": "none", "message": {"text": "Commented-code block (8 lines) in docs/design/worker-app-canon/project/worker-screens.jsx:1"}, "properties": {"repobilityId": "c7cd788a3a3664b4", "scanner": "scanner-primary", "fingerprint": "be75938dc0770ddf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d74127bacb20b66", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/scripts/seed-real-phone-worker.ts:245"}, "properties": {"repobilityId": "b32e65de42b6fbf3", "scanner": "scanner-primary", "fingerprint": "8d74127bacb20b66", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-03da6e7497b7ce7d", "level": "none", "message": {"text": "Commented-code block (13 lines) in apps/backend/scripts/p1_5_bootstrap_seed_bindings.ts:332"}, "properties": {"repobilityId": "ac63e91478aa6650", "scanner": "scanner-primary", "fingerprint": "03da6e7497b7ce7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3409fbc4e167d0bd", "level": "note", "message": {"text": "Legacy-named symbol `daysOld` in apps/backend/scripts/sweep-turn-embeddings.ts:72"}, "properties": {"repobilityId": "a867fdd989c08a8a", "scanner": "scanner-primary", "fingerprint": "3409fbc4e167d0bd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4a34525ffa620027", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/server.ts:83"}, "properties": {"repobilityId": "23598e716f3cea52", "scanner": "scanner-primary", "fingerprint": "4a34525ffa620027", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1db2fb34de940825", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/index.ts:107"}, "properties": {"repobilityId": "3e993788c778c017", "scanner": "scanner-primary", "fingerprint": "1db2fb34de940825", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11f1d0af9f4d840f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/notifications.ts:34"}, "properties": {"repobilityId": "e6017e53874f8f3e", "scanner": "scanner-primary", "fingerprint": "11f1d0af9f4d840f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0588447c8257b0be", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/dispatcher/handlers/ai.ts:181"}, "properties": {"repobilityId": "c37456d6f99b5198", "scanner": "scanner-primary", "fingerprint": "0588447c8257b0be", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad1d70e7a8ab380e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/dispatcher/handlers/ai.ts:302"}, "properties": {"repobilityId": "f11e11dd70e03eed", "scanner": "scanner-primary", "fingerprint": "ad1d70e7a8ab380e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2454fe776682127b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/jobs/binding-expire-sweep.ts:243"}, "properties": {"repobilityId": "28932559a833c101", "scanner": "scanner-primary", "fingerprint": "2454fe776682127b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3b7e478aa12049e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/jobs/reset-ai-spend.ts:81"}, "properties": {"repobilityId": "392dd8be4f83c755", "scanner": "scanner-primary", "fingerprint": "b3b7e478aa12049e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39ec6c6bee127c0f", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/backend/src/middleware/tenant-context.ts:83"}, "properties": {"repobilityId": "ea3035ff6b76d9c0", "scanner": "scanner-primary", "fingerprint": "39ec6c6bee127c0f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cb64230abd8d038", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/idempotency-key.ts:111"}, "properties": {"repobilityId": "9e10c51017f3c78d", "scanner": "scanner-primary", "fingerprint": "5cb64230abd8d038", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92e263f597f7a8a1", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/notification-composer.ts:105"}, "properties": {"repobilityId": "574e032e27956e51", "scanner": "scanner-primary", "fingerprint": "92e263f597f7a8a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2aee91f9e397aa3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/turn-embedder.ts:116"}, "properties": {"repobilityId": "dd4d545f5a178b9f", "scanner": "scanner-primary", "fingerprint": "f2aee91f9e397aa3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b808fd991ca69a37", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/semantic-context.ts:476"}, "properties": {"repobilityId": "251b302417c80f8d", "scanner": "scanner-primary", "fingerprint": "b808fd991ca69a37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf82910b314b62fa", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/lib/otp-store.ts:174"}, "properties": {"repobilityId": "a3046e981c59b487", "scanner": "scanner-primary", "fingerprint": "bf82910b314b62fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec7eeda0fd7fe067", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/backend/src/lib/effective-responsibility.ts:128"}, "properties": {"repobilityId": "4fb8b58e4da7f921", "scanner": "scanner-primary", "fingerprint": "ec7eeda0fd7fe067", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35bc025f6de1a49b", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/supervisor-decision-writer.ts:229"}, "properties": {"repobilityId": "e5f2d6d9866b7586", "scanner": "scanner-primary", "fingerprint": "35bc025f6de1a49b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d74309438dc96e5d", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/redis-keys.ts:21"}, "properties": {"repobilityId": "867be3ea0e794431", "scanner": "scanner-primary", "fingerprint": "d74309438dc96e5d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-966c41bd5405bf3a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/r2-presign.ts:158"}, "properties": {"repobilityId": "4a1e8f6430d17fdd", "scanner": "scanner-primary", "fingerprint": "966c41bd5405bf3a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-912cd1ea0fc5a8da", "level": "none", "message": {"text": "Commented-code block (12 lines) in apps/backend/src/lib/site-supervisor-binding.ts:161"}, "properties": {"repobilityId": "32ff16be1ff112ed", "scanner": "scanner-primary", "fingerprint": "912cd1ea0fc5a8da", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-636714a5422a4321", "level": "none", "message": {"text": "Commented-code block (10 lines) in apps/backend/src/lib/handoff-package-composer.ts:324"}, "properties": {"repobilityId": "682bcb1bb8463e6d", "scanner": "scanner-primary", "fingerprint": "636714a5422a4321", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e2574b3ed7d2fd2", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/handoff-package-writer.ts:148"}, "properties": {"repobilityId": "eec1b741a009971f", "scanner": "scanner-primary", "fingerprint": "1e2574b3ed7d2fd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7cb213288b09c048", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/chat-thread-service.ts:87"}, "properties": {"repobilityId": "f99070bf0c1efa3b", "scanner": "scanner-primary", "fingerprint": "7cb213288b09c048", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbc8a5c612eb0671", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/redis.ts:50"}, "properties": {"repobilityId": "cb88a75e09fb84ed", "scanner": "scanner-primary", "fingerprint": "bbc8a5c612eb0671", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16d30e806356a328", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/backend/src/lib/whatsapp-otp.ts:110"}, "properties": {"repobilityId": "9e90b04f30207cbd", "scanner": "scanner-primary", "fingerprint": "16d30e806356a328", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f0d66417987dfc5", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/complaint-service.ts:102"}, "properties": {"repobilityId": "57924a9ab588195f", "scanner": "scanner-primary", "fingerprint": "7f0d66417987dfc5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4090249bf2115832", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/activity-reverse-service.ts:195"}, "properties": {"repobilityId": "e39793ebaddcdde2", "scanner": "scanner-primary", "fingerprint": "4090249bf2115832", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-20af1a5dadb31b65", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/worker-today-service.ts:32"}, "properties": {"repobilityId": "b8c44bfd027e85c2", "scanner": "scanner-primary", "fingerprint": "20af1a5dadb31b65", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d823afcd1a5671a", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/services/worker-submit-service.ts:73"}, "properties": {"repobilityId": "4dde4aceb8379a12", "scanner": "scanner-primary", "fingerprint": "3d823afcd1a5671a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5408572af1cb307", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/services/anonymize-worker-service.ts:88"}, "properties": {"repobilityId": "b31b98c9caaefb70", "scanner": "scanner-primary", "fingerprint": "a5408572af1cb307", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d5d699e15ca7fc55", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/lib/services/refresh-token-store.ts:222"}, "properties": {"repobilityId": "d183e9890e68520f", "scanner": "scanner-primary", "fingerprint": "d5d699e15ca7fc55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2ea96cc0ecc87701", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/lib/services/decisions-service.ts:247"}, "properties": {"repobilityId": "e14a85ba80a09ab8", "scanner": "scanner-primary", "fingerprint": "2ea96cc0ecc87701", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-37efbab4f071656f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/admin-membership-service.ts:95"}, "properties": {"repobilityId": "0da71f3d7455675b", "scanner": "scanner-primary", "fingerprint": "37efbab4f071656f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cf835079e4712686", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/lib/services/replacement-invite-service.ts:320"}, "properties": {"repobilityId": "3bd3da86943b191b", "scanner": "scanner-primary", "fingerprint": "cf835079e4712686", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7640638aa8ad43ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/lib/services/today-service.ts:230"}, "properties": {"repobilityId": "eb0bab375fdb428a", "scanner": "scanner-primary", "fingerprint": "7640638aa8ad43ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5633ed6c76fe9e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/complaints.ts:132"}, "properties": {"repobilityId": "7811317246b6b0c1", "scanner": "scanner-primary", "fingerprint": "c5633ed6c76fe9e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2fad956899600347", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/chat.ts:303"}, "properties": {"repobilityId": "76b7848866966d38", "scanner": "scanner-primary", "fingerprint": "2fad956899600347", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dfeedaa182e9f285", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/supervisor-decisions.ts:68"}, "properties": {"repobilityId": "c2f8edc424ce64d8", "scanner": "scanner-primary", "fingerprint": "dfeedaa182e9f285", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76326c3d62c95330", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/worker-captures.ts:84"}, "properties": {"repobilityId": "9bb3c0d3096119fb", "scanner": "scanner-primary", "fingerprint": "76326c3d62c95330", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e699f5b71ee5e488", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/workers.ts:96"}, "properties": {"repobilityId": "73d679285a1fcf0a", "scanner": "scanner-primary", "fingerprint": "e699f5b71ee5e488", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f44c0219affd76ed", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/supervisor-today.ts:39"}, "properties": {"repobilityId": "69db705b6f5c3226", "scanner": "scanner-primary", "fingerprint": "f44c0219affd76ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d402e3a1a2a2a835", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/routes/worker-history.ts:45"}, "properties": {"repobilityId": "2567c586ea6d5a40", "scanner": "scanner-primary", "fingerprint": "d402e3a1a2a2a835", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-89a22b5b54a7c023", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/swap-requests.ts:134"}, "properties": {"repobilityId": "e00c9b1878e0d48a", "scanner": "scanner-primary", "fingerprint": "89a22b5b54a7c023", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17406bd86a99ef9c", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/auth.ts:1"}, "properties": {"repobilityId": "71081c6a4a50ed29", "scanner": "scanner-primary", "fingerprint": "17406bd86a99ef9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c5a29fd7986f627f", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/decisions.ts:81"}, "properties": {"repobilityId": "d1790b4dd141b9ae", "scanner": "scanner-primary", "fingerprint": "c5a29fd7986f627f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8243bb339a7772e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/chat-transcribe.ts:214"}, "properties": {"repobilityId": "f0b01b8321629ec0", "scanner": "scanner-primary", "fingerprint": "8243bb339a7772e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f56dce18727b6c90", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/admin-workers.ts:78"}, "properties": {"repobilityId": "e1ed9ee4aab56d7d", "scanner": "scanner-primary", "fingerprint": "f56dce18727b6c90", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d53cde631a4db7c", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/backend/src/routes/leave-requests.ts:109"}, "properties": {"repobilityId": "c93a9803d8fb836e", "scanner": "scanner-primary", "fingerprint": "1d53cde631a4db7c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b9a81f943cb2ab7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/src/routes/sites.ts:71"}, "properties": {"repobilityId": "c9a0225c6cf13c78", "scanner": "scanner-primary", "fingerprint": "b9a81f943cb2ab7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-008216cfee344224", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/src/routes/me.ts:43"}, "properties": {"repobilityId": "b7cc3ad0e72ec64f", "scanner": "scanner-primary", "fingerprint": "008216cfee344224", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9b045f8c6a81a580", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/src/routes/worker-consent.ts:61"}, "properties": {"repobilityId": "178dd1b9f3ee142e", "scanner": "scanner-primary", "fingerprint": "9b045f8c6a81a580", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-097199f136030bb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/src/routes/assignments.ts:56"}, "properties": {"repobilityId": "6293fd159dc187b6", "scanner": "scanner-primary", "fingerprint": "097199f136030bb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-373f862d091cbf9f", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/swap-requests.test.ts:247"}, "properties": {"repobilityId": "2b4f047e40350199", "scanner": "scanner-primary", "fingerprint": "373f862d091cbf9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f39bdffc1d4daefc", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/supervisor-today.test.ts:367"}, "properties": {"repobilityId": "8cef6a1c2d25d8ee", "scanner": "scanner-primary", "fingerprint": "f39bdffc1d4daefc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7fe8c3ef28806b42", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/hr-water-flow.test.ts:168"}, "properties": {"repobilityId": "47a9b62ca850f2fb", "scanner": "scanner-primary", "fingerprint": "7fe8c3ef28806b42", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-822344276380bf4b", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/test/leave-decision.test.ts:113"}, "properties": {"repobilityId": "fdaebc326e90f04c", "scanner": "scanner-primary", "fingerprint": "822344276380bf4b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9713d4d77878a551", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-swap.test.ts:114"}, "properties": {"repobilityId": "071c1178d4bd0bd5", "scanner": "scanner-primary", "fingerprint": "9713d4d77878a551", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e8de1fb2dfdefa9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-thread-three-window.test.ts:242"}, "properties": {"repobilityId": "4a49eee48bb9abb4", "scanner": "scanner-primary", "fingerprint": "e8de1fb2dfdefa9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-becd3d2d56d22bdb", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/test/p1_5_bootstrap_seed.test.ts:763"}, "properties": {"repobilityId": "b4755a0280d5baf8", "scanner": "scanner-primary", "fingerprint": "becd3d2d56d22bdb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3326856247df65f2", "level": "note", "message": {"text": "Legacy-named symbol `tooOld` in apps/backend/test/worker-history.test.ts:263"}, "properties": {"repobilityId": "dec815b6194a960f", "scanner": "scanner-primary", "fingerprint": "3326856247df65f2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-32aca9a852dba311", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/test/cleanup_sandbox_fixtures.test.ts:141"}, "properties": {"repobilityId": "39c10b3a6a9ce04a", "scanner": "scanner-primary", "fingerprint": "32aca9a852dba311", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fee3200b6bc63a75", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/helpers.ts:272"}, "properties": {"repobilityId": "eaac10b4f2ab0e23", "scanner": "scanner-primary", "fingerprint": "fee3200b6bc63a75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6c9206249737a38a", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/backend/test/activity-reverse-regression.test.ts:341"}, "properties": {"repobilityId": "3a432bc5df8b7389", "scanner": "scanner-primary", "fingerprint": "6c9206249737a38a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff99f6478a6b2d21", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/water-flow-chat-supervisor-journey.test.ts:257"}, "properties": {"repobilityId": "6b6a87ef71787cff", "scanner": "scanner-primary", "fingerprint": "ff99f6478a6b2d21", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b3b43443839eb3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/leave-requests-authorization-regression.test.ts:153"}, "properties": {"repobilityId": "bf23f3f851d120f4", "scanner": "scanner-primary", "fingerprint": "00b3b43443839eb3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af0395aea81b376c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/chat-apply-route-concurrency.test.ts:214"}, "properties": {"repobilityId": "fe098b1763082f02", "scanner": "scanner-primary", "fingerprint": "af0395aea81b376c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4876967d67aed202", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/binding-expire-sweep.test.ts:448"}, "properties": {"repobilityId": "d05b01370cd05e9c", "scanner": "scanner-primary", "fingerprint": "4876967d67aed202", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e832832e6ba2450d", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/tenant-context-legacy-mode.test.ts:24"}, "properties": {"repobilityId": "509409fc77f41812", "scanner": "scanner-primary", "fingerprint": "e832832e6ba2450d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-152fd9dbbd36c674", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/test/auth-flow.test.ts:112"}, "properties": {"repobilityId": "61a73bd08ecdd9a6", "scanner": "scanner-primary", "fingerprint": "152fd9dbbd36c674", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-629f3bb46807e6c4", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/chat-apply-atomicity.test.ts:169"}, "properties": {"repobilityId": "47ae06fb16c15890", "scanner": "scanner-primary", "fingerprint": "629f3bb46807e6c4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daa6e1c06c693fe8", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/supervisor-decisions-union-all.test.ts:50"}, "properties": {"repobilityId": "d627bf30d98655a5", "scanner": "scanner-primary", "fingerprint": "daa6e1c06c693fe8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4432e532f3a5d890", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/backend/test/handoff-package-composer.test.ts:609"}, "properties": {"repobilityId": "55a1dc9962c22c40", "scanner": "scanner-primary", "fingerprint": "4432e532f3a5d890", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9570afac5920e55e", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/backend/test/cross-tenant-isolation.test.ts:105"}, "properties": {"repobilityId": "c45c8a04908ced49", "scanner": "scanner-primary", "fingerprint": "9570afac5920e55e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e4eded2ed683694e", "level": "note", "message": {"text": "Legacy-named symbol `userMsgOld` in apps/backend/test/semantic-context.test.ts:612"}, "properties": {"repobilityId": "0ae4ba9d51256eed", "scanner": "scanner-primary", "fingerprint": "e4eded2ed683694e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-316898c38cfa2810", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/backend/test/chat-adversarial-prompt-injection.test.ts:137"}, "properties": {"repobilityId": "d1fc2eaaab6b8439", "scanner": "scanner-primary", "fingerprint": "316898c38cfa2810", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e2500cd92feff1d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/admin-web/app/login/page.tsx:140"}, "properties": {"repobilityId": "81a90f2ee0ccf95f", "scanner": "scanner-primary", "fingerprint": "1e2500cd92feff1d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3ae0e7e5638323d2", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/admin-web/app/system/map/_components/ScreenDetail.tsx:108"}, "properties": {"repobilityId": "7cc03a2b449e8875", "scanner": "scanner-primary", "fingerprint": "3ae0e7e5638323d2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9806ee89cff22e94", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/admin-web/app/system/map/_components/Sidebar.tsx:106"}, "properties": {"repobilityId": "f764c18bc172dee9", "scanner": "scanner-primary", "fingerprint": "9806ee89cff22e94", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34496f9ed5fbd1f3", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/admin-web/lib/env.ts:59"}, "properties": {"repobilityId": "f91906143fbece8f", "scanner": "scanner-primary", "fingerprint": "34496f9ed5fbd1f3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-651582f321397938", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/mobile/metro.config.js:57"}, "properties": {"repobilityId": "2d2cfa8aa6ebdc57", "scanner": "scanner-primary", "fingerprint": "651582f321397938", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7973f0c9b294c66c", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/mobile/app.config.ts:32"}, "properties": {"repobilityId": "329f4a6eaa294aa2", "scanner": "scanner-primary", "fingerprint": "7973f0c9b294c66c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eb146469e1958526", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/app/(worker)/capture/[visitId]/submit.tsx:181"}, "properties": {"repobilityId": "9bebed3f6dd7caad", "scanner": "scanner-primary", "fingerprint": "eb146469e1958526", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c9d8fc77d7c8164", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/chat.tsx:205"}, "properties": {"repobilityId": "8cdfe3de98add8d9", "scanner": "scanner-primary", "fingerprint": "8c9d8fc77d7c8164", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5d64cb637b20712", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/today.tsx:80"}, "properties": {"repobilityId": "89441ffa41f3bc05", "scanner": "scanner-primary", "fingerprint": "e5d64cb637b20712", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3d7fefa94a5eb5f0", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/me.tsx:444"}, "properties": {"repobilityId": "405b8c417103827d", "scanner": "scanner-primary", "fingerprint": "3d7fefa94a5eb5f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-45e7e2bd28aa98c0", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/app/(supervisor)/decisions.tsx:101"}, "properties": {"repobilityId": "f67c93e05bebe956", "scanner": "scanner-primary", "fingerprint": "45e7e2bd28aa98c0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f3c365c5af4eec7b", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/mobile/app/(supervisor)/replacement-picker.tsx:157"}, "properties": {"repobilityId": "8d3fb6451604effa", "scanner": "scanner-primary", "fingerprint": "f3c365c5af4eec7b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b30a26868bcdccb1", "level": "none", "message": {"text": "Commented-code block (9 lines) in apps/mobile/components/Drawer.tsx:85"}, "properties": {"repobilityId": "04af29342dd8c289", "scanner": "scanner-primary", "fingerprint": "b30a26868bcdccb1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-12d3d726c9a4cbb2", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/mobile/components/worker/capture/PhasePhotoCapture.tsx:196"}, "properties": {"repobilityId": "0804e39006690bfd", "scanner": "scanner-primary", "fingerprint": "12d3d726c9a4cbb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1670df60d873cc8f", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/lib/api.ts:92"}, "properties": {"repobilityId": "4de327834c2e4e05", "scanner": "scanner-primary", "fingerprint": "1670df60d873cc8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-edf828f3d833111a", "level": "note", "message": {"text": "Legacy-named symbol `axrt_old` in apps/mobile/lib/api.test.ts:74"}, "properties": {"repobilityId": "dc55108ae7973f51", "scanner": "scanner-primary", "fingerprint": "edf828f3d833111a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6ded87d12952fecb", "level": "none", "message": {"text": "Commented-code block (6 lines) in apps/mobile/lib/identity-lifecycle.test.ts:395"}, "properties": {"repobilityId": "3f976066d2b4d7d1", "scanner": "scanner-primary", "fingerprint": "6ded87d12952fecb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a21423c8d2008e2", "level": "none", "message": {"text": "Commented-code block (7 lines) in apps/mobile/lib/worker-today-helpers.ts:10"}, "properties": {"repobilityId": "c0ecaaee50c4c1ae", "scanner": "scanner-primary", "fingerprint": "5a21423c8d2008e2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00f65007ccef9c88", "level": "none", "message": {"text": "Commented-code block (5 lines) in apps/mobile/lib/api-routes.ts:70"}, "properties": {"repobilityId": "06b96d33072b17fc", "scanner": "scanner-primary", "fingerprint": "00f65007ccef9c88", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51345d4bd8f7bcb1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/audio/transcribe.ts:9"}, "properties": {"repobilityId": "c81f5f429f98c7d0", "scanner": "scanner-primary", "fingerprint": "51345d4bd8f7bcb1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d01068a6f98b8375", "level": "none", "message": {"text": "Commented-code block (8 lines) in apps/mobile/lib/audio/use-voice-recorder.ts:97"}, "properties": {"repobilityId": "280df5ad409e9d44", "scanner": "scanner-primary", "fingerprint": "d01068a6f98b8375", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a9661ce24682f974", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/r2-put.ts:9"}, "properties": {"repobilityId": "5ea08a6b1a3965c6", "scanner": "scanner-primary", "fingerprint": "a9661ce24682f974", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-27ba9c2603caeb0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 apps/mobile/lib/uploads/photo-upload.ts:195"}, "properties": {"repobilityId": "65a5959c38580669", "scanner": "scanner-primary", "fingerprint": "27ba9c2603caeb0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-26420c179824d543", "level": "note", "message": {"text": "49 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "804c38b408877986", "scanner": "scanner-primary", "fingerprint": "26420c179824d543", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-4a7f58b818c57098", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (scripts/embed-smoke-test.mjs:43)"}, "properties": {"repobilityId": "b66896992c37260b", "scanner": "scanner-primary", "fingerprint": "4a7f58b818c57098", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-d701794c3e27dab6", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/knowledge-graph/src/builder.ts:138)"}, "properties": {"repobilityId": "9082aab4f5ab5c01", "scanner": "scanner-primary", "fingerprint": "d701794c3e27dab6", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-b4e62007ab314f4f", "level": "error", "message": {"text": "Dangling fetch: GET /api/... (packages/knowledge-graph/src/extractors/edges-triggers.ts:5)"}, "properties": {"repobilityId": "f5e1e127a4fe8c5e", "scanner": "scanner-primary", "fingerprint": "b4e62007ab314f4f", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-204eb94ae4cbd130", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/impact-check-v2.ts:151)"}, "properties": {"repobilityId": "288fe691735fa66d", "scanner": "scanner-primary", "fingerprint": "204eb94ae4cbd130", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-3ee80a8c9770c60e", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/brain-builder.ts:116)"}, "properties": {"repobilityId": "6377dfefb6b1e4fb", "scanner": "scanner-primary", "fingerprint": "3ee80a8c9770c60e", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-88e2f70438f897dd", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (packages/ai-tools/src/vector-knowledge.ts:130)"}, "properties": {"repobilityId": "ca664eef314afe19", "scanner": "scanner-primary", "fingerprint": "88e2f70438f897dd", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-532cf471e3773c99", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/chat/completions (apps/backend/src/dispatcher/handlers/ai.ts:302)"}, "properties": {"repobilityId": "aab61dbd37f0e258", "scanner": "scanner-primary", "fingerprint": "532cf471e3773c99", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-db28568fcf83a34a", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/embeddings (apps/backend/src/lib/openai-embeddings.ts:76)"}, "properties": {"repobilityId": "07369c864d4302f4", "scanner": "scanner-primary", "fingerprint": "db28568fcf83a34a", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-97671eb5d20998b4", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:158)"}, "properties": {"repobilityId": "23522b3ac09fd97c", "scanner": "scanner-primary", "fingerprint": "97671eb5d20998b4", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-390279053f3a8267", "level": "error", "message": {"text": "Dangling fetch: POST https://api.openai.com/v1/audio/transcriptions (apps/backend/src/routes/chat-transcribe.ts:323)"}, "properties": {"repobilityId": "3cf0de8cd41363ba", "scanner": "scanner-primary", "fingerprint": "390279053f3a8267", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-8bdf6920dcecb357", "level": "error", "message": {"text": "Dangling fetch: POST /api/auth/session (apps/admin-web/app/login/page.tsx:140)"}, "properties": {"repobilityId": "ba2e3d77195586f6", "scanner": "scanner-primary", "fingerprint": "8bdf6920dcecb357", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-c6da5c22744a6927", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/owner/LogoutButton.tsx:22)"}, "properties": {"repobilityId": "fc8043885c85e780", "scanner": "scanner-primary", "fingerprint": "c6da5c22744a6927", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-15d67614c209ea1b", "level": "error", "message": {"text": "Dangling fetch: DELETE /api/auth/session (apps/admin-web/app/hr/LogoutButton.tsx:24)"}, "properties": {"repobilityId": "c5ea767b723b8b9e", "scanner": "scanner-primary", "fingerprint": "15d67614c209ea1b", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-cb99a4b8a0d5c9fc", "level": "error", "message": {"text": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/map/page.tsx:39)"}, "properties": {"repobilityId": "f8bf86e69c7c4cbf", "scanner": "scanner-primary", "fingerprint": "cb99a4b8a0d5c9fc", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-a665944cbce9c472", "level": "error", "message": {"text": "Dangling fetch: GET /api/graph (apps/admin-web/app/system/graph/page.tsx:88)"}, "properties": {"repobilityId": "159c36158794c1cb", "scanner": "scanner-primary", "fingerprint": "a665944cbce9c472", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "fetch"]}}, {"ruleId": "scanner-5b407e67c1061d4b", "level": "note", "message": {"text": "Unused endpoint: POST /path"}, "properties": {"repobilityId": "6041909b59c7c084", "scanner": "scanner-primary", "fingerprint": "5b407e67c1061d4b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c98f70f04e62d779", "level": "note", "message": {"text": "Unused endpoint: GET /complaints"}, "properties": {"repobilityId": "7ee878cd6df0a849", "scanner": "scanner-primary", "fingerprint": "c98f70f04e62d779", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f1bcc209a8f507c6", "level": "note", "message": {"text": "Unused endpoint: POST /chat/messages"}, "properties": {"repobilityId": "5492d3b5763078f3", "scanner": "scanner-primary", "fingerprint": "f1bcc209a8f507c6", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-03880dc2dd09fbe4", "level": "note", "message": {"text": "Unused endpoint: POST /chat/apply"}, "properties": {"repobilityId": "4a23b46ec2c56cf3", "scanner": "scanner-primary", "fingerprint": "03880dc2dd09fbe4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-878e0ba3efcf53c4", "level": "note", "message": {"text": "Unused endpoint: POST /super-admin/memberships"}, "properties": {"repobilityId": "a048c4319ac11f9d", "scanner": "scanner-primary", "fingerprint": "878e0ba3efcf53c4", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-de4dd2c33fb44f47", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/decisions"}, "properties": {"repobilityId": "57f584a8d220c735", "scanner": "scanner-primary", "fingerprint": "de4dd2c33fb44f47", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ac4ed763cd0e9713", "level": "note", "message": {"text": "Unused endpoint: POST /decisions/:id/apply"}, "properties": {"repobilityId": "decf69f8cac64e93", "scanner": "scanner-primary", "fingerprint": "ac4ed763cd0e9713", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-213486d34ff05d43", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/context"}, "properties": {"repobilityId": "31301c52e412b5fb", "scanner": "scanner-primary", "fingerprint": "213486d34ff05d43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3185b6f128084591", "level": "note", "message": {"text": "Unused endpoint: POST /worker/captures/upload-urls"}, "properties": {"repobilityId": "f3c48e5e245e99ca", "scanner": "scanner-primary", "fingerprint": "3185b6f128084591", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c8cf81318c9b97dc", "level": "note", "message": {"text": "Unused endpoint: POST /worker/captures/upload"}, "properties": {"repobilityId": "381de227e533ae89", "scanner": "scanner-primary", "fingerprint": "c8cf81318c9b97dc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-124c7fbfe4399d89", "level": "note", "message": {"text": "Unused endpoint: POST /supervisor/replacement-invites"}, "properties": {"repobilityId": "9468dbe4f67c42a0", "scanner": "scanner-primary", "fingerprint": "124c7fbfe4399d89", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-50d6f3cf08565f67", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/replacement-invites"}, "properties": {"repobilityId": "3936dfb62581f1b2", "scanner": "scanner-primary", "fingerprint": "50d6f3cf08565f67", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a17ca496ad09bc28", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/today"}, "properties": {"repobilityId": "ddfe389ba42cbf4c", "scanner": "scanner-primary", "fingerprint": "a17ca496ad09bc28", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0e88896629882c43", "level": "note", "message": {"text": "Unused endpoint: GET /admin/sites"}, "properties": {"repobilityId": "adffcef6fa62d252", "scanner": "scanner-primary", "fingerprint": "0e88896629882c43", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ce72b12f3c7426b5", "level": "note", "message": {"text": "Unused endpoint: POST /admin/sites"}, "properties": {"repobilityId": "6a84b06c53361fc9", "scanner": "scanner-primary", "fingerprint": "ce72b12f3c7426b5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-67d4c921fc353dfb", "level": "note", "message": {"text": "Unused endpoint: GET /worker/history"}, "properties": {"repobilityId": "0f00c7ca67633c87", "scanner": "scanner-primary", "fingerprint": "67d4c921fc353dfb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a51b26b3cb1ff5ee", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/summary"}, "properties": {"repobilityId": "16dee8f321cd4161", "scanner": "scanner-primary", "fingerprint": "a51b26b3cb1ff5ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-90649889b66603c9", "level": "note", "message": {"text": "Unused endpoint: POST /swap-requests"}, "properties": {"repobilityId": "c9844b919d3fffe3", "scanner": "scanner-primary", "fingerprint": "90649889b66603c9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8f2806065c783974", "level": "note", "message": {"text": "Unused endpoint: POST /chat/reload-context"}, "properties": {"repobilityId": "80a39a4155114937", "scanner": "scanner-primary", "fingerprint": "8f2806065c783974", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-8df9d0a42307ceb1", "level": "note", "message": {"text": "Unused endpoint: GET /chat/reload-context/state"}, "properties": {"repobilityId": "d3c2d9c1189331a2", "scanner": "scanner-primary", "fingerprint": "8df9d0a42307ceb1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bfbf7efb6929ddfc", "level": "note", "message": {"text": "Unused endpoint: POST /admin/memberships"}, "properties": {"repobilityId": "d4729a627d4d5e5a", "scanner": "scanner-primary", "fingerprint": "bfbf7efb6929ddfc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-d6ea053401b1fb4d", "level": "note", "message": {"text": "Unused endpoint: GET /admin/memberships"}, "properties": {"repobilityId": "1994613cef3c63bb", "scanner": "scanner-primary", "fingerprint": "d6ea053401b1fb4d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2a77854ef714f665", "level": "note", "message": {"text": "Unused endpoint: POST /auth/otp/request"}, "properties": {"repobilityId": "0d957bb2652e5a06", "scanner": "scanner-primary", "fingerprint": "2a77854ef714f665", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a6ce45686433a45b", "level": "note", "message": {"text": "Unused endpoint: POST /auth/otp/verify"}, "properties": {"repobilityId": "fac49bfe230eec36", "scanner": "scanner-primary", "fingerprint": "a6ce45686433a45b", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-306351319fc67778", "level": "note", "message": {"text": "Unused endpoint: POST /auth/sign-out"}, "properties": {"repobilityId": "f8bf8eed406cbb37", "scanner": "scanner-primary", "fingerprint": "306351319fc67778", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0700c7227a37bb2a", "level": "note", "message": {"text": "Unused endpoint: GET /admin/owner-summary"}, "properties": {"repobilityId": "958b83143dcfe79c", "scanner": "scanner-primary", "fingerprint": "0700c7227a37bb2a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-35d51ab833a57d40", "level": "note", "message": {"text": "Unused endpoint: GET /decisions/proposed-for-me"}, "properties": {"repobilityId": "c8182e4cfc78d2ab", "scanner": "scanner-primary", "fingerprint": "35d51ab833a57d40", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9789e7fdde289660", "level": "note", "message": {"text": "Unused endpoint: POST /decisions/:id/dismiss"}, "properties": {"repobilityId": "9d1c9d292bb5042d", "scanner": "scanner-primary", "fingerprint": "9789e7fdde289660", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8419d8d9791b843", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/living-doc"}, "properties": {"repobilityId": "f6822ffb7b15415f", "scanner": "scanner-primary", "fingerprint": "b8419d8d9791b843", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-9057acad4db9d414", "level": "note", "message": {"text": "Unused endpoint: POST /chat/transcribe"}, "properties": {"repobilityId": "b72bad548b4fdd6e", "scanner": "scanner-primary", "fingerprint": "9057acad4db9d414", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c3172c0036b3b11", "level": "note", "message": {"text": "Unused endpoint: POST /chat/transcribe-stream"}, "properties": {"repobilityId": "d6e63ddf9fead95f", "scanner": "scanner-primary", "fingerprint": "4c3172c0036b3b11", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b36892106ecdc9aa", "level": "note", "message": {"text": "Unused endpoint: POST /auth/refresh"}, "properties": {"repobilityId": "dbca4af02cc27179", "scanner": "scanner-primary", "fingerprint": "b36892106ecdc9aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-949b7eebfc42dddb", "level": "note", "message": {"text": "Unused endpoint: GET /admin/workers"}, "properties": {"repobilityId": "905943db5a97f378", "scanner": "scanner-primary", "fingerprint": "949b7eebfc42dddb", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-123c824383d0716d", "level": "note", "message": {"text": "Unused endpoint: POST /admin/workers"}, "properties": {"repobilityId": "fa0d7e7f97a416c9", "scanner": "scanner-primary", "fingerprint": "123c824383d0716d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b79b023541d690ee", "level": "note", "message": {"text": "Unused endpoint: POST /admin/policy"}, "properties": {"repobilityId": "cc8e83cfdca4f877", "scanner": "scanner-primary", "fingerprint": "b79b023541d690ee", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-f29aade19ceaa61c", "level": "note", "message": {"text": "Unused endpoint: POST /leave-requests"}, "properties": {"repobilityId": "d40edf499f6067f7", "scanner": "scanner-primary", "fingerprint": "f29aade19ceaa61c", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0701294795ef9045", "level": "note", "message": {"text": "Unused endpoint: GET /leave-requests"}, "properties": {"repobilityId": "fb16112d5029dfb3", "scanner": "scanner-primary", "fingerprint": "0701294795ef9045", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-80dbae2195fe259a", "level": "note", "message": {"text": "Unused endpoint: POST /calendar"}, "properties": {"repobilityId": "9b27106fad04e493", "scanner": "scanner-primary", "fingerprint": "80dbae2195fe259a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-c6e0ce23f01b6514", "level": "note", "message": {"text": "Unused endpoint: GET /worker/today"}, "properties": {"repobilityId": "58d776d48ca77d2e", "scanner": "scanner-primary", "fingerprint": "c6e0ce23f01b6514", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-fd1dc91abf32142d", "level": "note", "message": {"text": "Unused endpoint: GET /me"}, "properties": {"repobilityId": "a0678f5591cb6f62", "scanner": "scanner-primary", "fingerprint": "fd1dc91abf32142d", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1d62cec842f4c3ad", "level": "note", "message": {"text": "Unused endpoint: PATCH /me/notification-prefs"}, "properties": {"repobilityId": "3c147e7c3a490e6a", "scanner": "scanner-primary", "fingerprint": "1d62cec842f4c3ad", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b1f35b2ef209f6da", "level": "note", "message": {"text": "Unused endpoint: GET /chat/history"}, "properties": {"repobilityId": "e0bc053be6c711a6", "scanner": "scanner-primary", "fingerprint": "b1f35b2ef209f6da", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-07c33571b4491a87", "level": "note", "message": {"text": "Unused endpoint: POST /worker/consent"}, "properties": {"repobilityId": "775972e179b78159", "scanner": "scanner-primary", "fingerprint": "07c33571b4491a87", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-b8e597a70e865dfc", "level": "note", "message": {"text": "Unused endpoint: POST /super-admin/companies"}, "properties": {"repobilityId": "8135d7a28308f26f", "scanner": "scanner-primary", "fingerprint": "b8e597a70e865dfc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-53c4c0323773185a", "level": "note", "message": {"text": "Unused endpoint: POST /assignments"}, "properties": {"repobilityId": "1c05fe19586eb1e1", "scanner": "scanner-primary", "fingerprint": "53c4c0323773185a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-2398c4ba96f6dcd2", "level": "note", "message": {"text": "Unused endpoint: GET /worker/leave-requests"}, "properties": {"repobilityId": "03488ab1caf09c4d", "scanner": "scanner-primary", "fingerprint": "2398c4ba96f6dcd2", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-277cc2b24901a44a", "level": "note", "message": {"text": "Unused endpoint: GET /supervisor/updates"}, "properties": {"repobilityId": "58683c3f6a3be26f", "scanner": "scanner-primary", "fingerprint": "277cc2b24901a44a", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-51ece756e9be0b88", "level": "note", "message": {"text": "Unused endpoint: POST /supervisor/updates/:id/acknowledge"}, "properties": {"repobilityId": "ba0164894ba38660", "scanner": "scanner-primary", "fingerprint": "51ece756e9be0b88", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}