{"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-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2f87e3ac9efebeb", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-sfx.js:116", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sfx.js:116"}, "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-d21fde07391e75ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/generate-onboarding-audio.js:179", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-onboarding-audio.js:179"}, "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-07e6e8b65723def0", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-indb.js:189", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-indb.js:189"}, "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-606f09d350e3ed23", "name": "Stray `console.log` in TS/JS \u2014 scripts/build-food-db.js:225", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-food-db.js:225"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ea994b6e5e5b0683", "name": "Stray `console.log` in TS/JS \u2014 scripts/ai-proxy.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ai-proxy.js:105"}, "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-9b8646e839dc1441", "name": "Stray `console.log` in TS/JS \u2014 scripts/post-export-web.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/post-export-web.js:80"}, "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-15278b8f06eff71f", "name": "Stray `console.log` in TS/JS \u2014 scripts/copy-canvaskit.js:36", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/copy-canvaskit.js:36"}, "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-6d6c24ab912abb3b", "name": "Stray `console.log` in TS/JS \u2014 app/settings.tsx:157", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/settings.tsx:157"}, "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-7b59780395ca8f06", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/+html.tsx:41", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/+html.tsx:41"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d5ab35819a544a02", "name": "Stray `console.log` in TS/JS \u2014 app/(onboarding)/day1-routine.tsx:166", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/(onboarding)/day1-routine.tsx:166"}, "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-287af2456e305478", "name": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-today.jsx:67", "shortDescription": {"text": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-today.jsx:67"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb0a1192e9710625", "name": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-overlay.jsx:66", "shortDescription": {"text": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-overlay.jsx:66"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e56aeb42e49014f5", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/ai/__tests__/goalInjection.test.ts:6", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/ai/__tests__/goalInjection.test.ts:6"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-aa32f7b76770647f", "name": "Stray `console.log` in TS/JS \u2014 src/finance/store/useTransactionStore.ts:135", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/finance/store/useTransactionStore.ts:135"}, "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-30027ad3352cfb7f", "name": "Stray `console.log` in TS/JS \u2014 src/db/index.ts:56", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/db/index.ts:56"}, "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-b1860a98ec53c038", "name": "Stray `console.log` in TS/JS \u2014 e2e/voice-tools-live.spec.ts:99", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/voice-tools-live.spec.ts:99"}, "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-38c3c49f8314efb8", "name": "Stray `console.log` in TS/JS \u2014 e2e/create-test-user.ts:32", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 e2e/create-test-user.ts:32"}, "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-dac19255c8c3f419", "name": "Insecure pattern 'node_child_process' in scripts/ai-proxy.js:10", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/ai-proxy.js:10"}, "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-e716cd7cd3c4f85c", "name": "Insecure pattern 'cors_wildcard' in scripts/ai-proxy.js:74", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in scripts/ai-proxy.js:74"}, "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-3c68da6aff24b200", "name": "Insecure pattern 'dangerous_innerhtml' in app/+html.tsx:41", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/+html.tsx:41"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-06f81c6f512d301a", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/evalReports.test.ts:14", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/evalReports.test.ts:14"}, "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-3acf6b126b4251ff", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/telemetry.test.ts:9", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/telemetry.test.ts:9"}, "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-9dd0b30580f7a432", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/sync.test.ts:15", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/sync.test.ts:15"}, "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-275ca72044c187e6", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/googleToken.test.ts:4", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/googleToken.test.ts:4"}, "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-97ed80e199b93fed", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/config.test.ts:36", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/config.test.ts:36"}, "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-addb162aa2d1d70a", "name": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/feedback.test.ts:9", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/feedback.test.ts:9"}, "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-c47a8fd32abb997e", "name": "Insecure pattern 'weak_hash' in jest.mocks/expo-crypto.ts:9", "shortDescription": {"text": "Insecure pattern 'weak_hash' in jest.mocks/expo-crypto.ts:9"}, "fullDescription": {"text": "Found a known-risky pattern (weak_hash). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ba4c70e5f2e3f94f", "name": "Insecure pattern 'local_storage_auth_token' in e2e/cuj-staging.spec.ts:855", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/cuj-staging.spec.ts:855"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-96a32028bf9e694b", "name": "Insecure pattern 'local_storage_auth_token' in e2e/helpers.ts:163", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/helpers.ts:163"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-f4f083055c019b4e", "name": "Insecure pattern 'local_storage_auth_token' in e2e/seedTestUser.ts:63", "shortDescription": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/seedTestUser.ts:63"}, "fullDescription": {"text": "Found a known-risky pattern (local_storage_auth_token). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c467d854ae59f1ef", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/upload-artifact@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-dd345b009aed4c0d", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-65c9bd56493a81d3", "name": "GitHub Action is tag-pinned rather than SHA-pinned", "shortDescription": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "fullDescription": {"text": "actions/cache@v4 can move without a code change in this repo. Pin third-party actions to a reviewed 40-character commit SHA."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5a63726691694f31", "name": "Very large file: app/(tabs)/finance.tsx (1626 lines)", "shortDescription": {"text": "Very large file: app/(tabs)/finance.tsx (1626 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-e863eb22894fe3ce", "name": "Very large file: app/(tabs)/index.tsx (1878 lines)", "shortDescription": {"text": "Very large file: app/(tabs)/index.tsx (1878 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-591501834973c207", "name": "Very large file: src/screens/legacy/FinanceScreen.legacy.tsx (1593 lines)", "shortDescription": {"text": "Very large file: src/screens/legacy/FinanceScreen.legacy.tsx (1593 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-151a7c52cadc56ff", "name": "Very large file: e2e/cuj-staging.spec.ts (1193 lines)", "shortDescription": {"text": "Very large file: e2e/cuj-staging.spec.ts (1193 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 44 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 180 placeholder/mock markers across 80 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-ecb0d2c55ed6875d", "name": "Agent authority lacks a verifier contract: .claude/settings.local.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-73c1fbd3b656f2cb", "name": "Commented-code block (5 lines) in playwright.config.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in playwright.config.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-371d160003db7d32", "name": "Commented-code block (5 lines) in metro.config.js:17", "shortDescription": {"text": "Commented-code block (5 lines) in metro.config.js:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-75c6e8bb8418aafc", "name": "Commented-code block (6 lines) in jest.config.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in jest.config.js:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-808b855ee4b9ee16", "name": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-onboarding-audio.js:16", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-onboarding-audio.js:16"}, "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-716b389f54a7a81a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-onboarding-audio.js:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-onboarding-audio.js:90"}, "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-cb2343109787835b", "name": "Commented-code block (6 lines) in scripts/post-export-web.js:36", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/post-export-web.js:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a554550b2c85d254", "name": "Commented-code block (5 lines) in app/notifications-settings.tsx:86", "shortDescription": {"text": "Commented-code block (5 lines) in app/notifications-settings.tsx:86"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d704e02c9e0ed67", "name": "Legacy-named symbol `onboarding_v2` in app/welcome-intent.tsx:39", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in app/welcome-intent.tsx:39"}, "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-7bc7659f036cf132", "name": "Legacy-named symbol `onboarding_v2` in app/evening-reflect.tsx:71", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in app/evening-reflect.tsx:71"}, "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-5f10c308649aa7e5", "name": "Legacy-named symbol `install_prompt_v2` in app/_layout.tsx:64", "shortDescription": {"text": "Legacy-named symbol `install_prompt_v2` in app/_layout.tsx:64"}, "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-f7e7c8c61e85438e", "name": "Commented-code block (5 lines) in app/_layout.tsx:143", "shortDescription": {"text": "Commented-code block (5 lines) in app/_layout.tsx:143"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-749b1e26413ae3f1", "name": "Legacy-named symbol `discovery_confirm_v2` in app/(onboarding)/discovery-confirm.tsx:127", "shortDescription": {"text": "Legacy-named symbol `discovery_confirm_v2` in app/(onboarding)/discovery-confirm.tsx:127"}, "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-13ad661982ae24af", "name": "Commented-code block (7 lines) in app/(onboarding)/discovery-confirm.tsx:65", "shortDescription": {"text": "Commented-code block (7 lines) in app/(onboarding)/discovery-confirm.tsx:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d402f0609a203c8", "name": "Commented-code block (5 lines) in app/(onboarding)/day1-routine.tsx:152", "shortDescription": {"text": "Commented-code block (5 lines) in app/(onboarding)/day1-routine.tsx:152"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-251061a8ed4621a0", "name": "Legacy-named symbol `FinanceScreenLegacy` in app/(tabs)/finance.tsx:39", "shortDescription": {"text": "Legacy-named symbol `FinanceScreenLegacy` in app/(tabs)/finance.tsx:39"}, "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-ba18415531142eb8", "name": "Legacy-named symbol `today_answer_first_v1` in app/(tabs)/goals.tsx:503", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in app/(tabs)/goals.tsx:503"}, "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-96a81a17cf068a07", "name": "Legacy-named symbol `CareerScreenLegacy` in app/(tabs)/career.tsx:24", "shortDescription": {"text": "Legacy-named symbol `CareerScreenLegacy` in app/(tabs)/career.tsx:24"}, "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-1299e8df20a8ce6d", "name": "Legacy-named symbol `install_prompt_v2` in app/(tabs)/profile.tsx:201", "shortDescription": {"text": "Legacy-named symbol `install_prompt_v2` in app/(tabs)/profile.tsx:201"}, "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-51c0c747ce08b525", "name": "Legacy-named symbol `onboarding_v2` in app/(tabs)/index.tsx:142", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in app/(tabs)/index.tsx:142"}, "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-6027b471ddf1a5c5", "name": "Commented-code block (5 lines) in app/(tabs)/index.tsx:323", "shortDescription": {"text": "Commented-code block (5 lines) in app/(tabs)/index.tsx:323"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-29d1e05f5bdc5dcf", "name": "Legacy-named symbol `HealthScreenLegacy` in app/(tabs)/health.tsx:33", "shortDescription": {"text": "Legacy-named symbol `HealthScreenLegacy` in app/(tabs)/health.tsx:33"}, "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-435c0d27aad4622f", "name": "Legacy-named symbol `streak_protection_v1` in app/(tabs)/rewards.tsx:64", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in app/(tabs)/rewards.tsx:64"}, "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-2d293f1961ecac40", "name": "Commented-code block (8 lines) in app/(tabs)/rewards.tsx:95", "shortDescription": {"text": "Commented-code block (8 lines) in app/(tabs)/rewards.tsx: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-bca53ffa3c060a96", "name": "Legacy-named symbol `SocialScreenLegacy` in app/(tabs)/social.tsx:35", "shortDescription": {"text": "Legacy-named symbol `SocialScreenLegacy` in app/(tabs)/social.tsx:35"}, "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-f1227c86f7392df4", "name": "Legacy-named symbol `ExploreScreenLegacy` in app/(tabs)/explore.tsx:66", "shortDescription": {"text": "Legacy-named symbol `ExploreScreenLegacy` in app/(tabs)/explore.tsx:66"}, "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-225a08ef5213c4bb", "name": "Commented-code block (5 lines) in app/(tabs)/explore.tsx:247", "shortDescription": {"text": "Commented-code block (5 lines) in app/(tabs)/explore.tsx: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-d148c8c38b5ca025", "name": "Legacy-named symbol `module_hierarchy_v1` in app/(tabs)/__tests__/hierarchyGuards.test.ts:14", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in app/(tabs)/__tests__/hierarchyGuards.test.ts:14"}, "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-ea82c5c467f761d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/scripts/verify-avatar.mjs:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/scripts/verify-avatar.mjs:31"}, "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-9b28be261aaa176e", "name": "Commented-code block (6 lines) in workers/ai-proxy/src/claude.ts:208", "shortDescription": {"text": "Commented-code block (6 lines) in workers/ai-proxy/src/claude.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-84bc0710abce4c62", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/claude.ts:178", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/claude.ts:178"}, "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-6d64708659b41b06", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/gemini.ts:3", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/gemini.ts:3"}, "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-9bab2b2fdb03c672", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/avatar.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/avatar.ts:123"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b5fec9acaaa5c035", "name": "Commented-code block (6 lines) in workers/ai-proxy/src/__tests__/index.router.test.ts:319", "shortDescription": {"text": "Commented-code block (6 lines) in workers/ai-proxy/src/__tests__/index.router.test.ts:319"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf6526b140d7aa87", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/__tests__/index.router.test.ts:103", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/__tests__/index.router.test.ts:103"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-33b0f5e6c164d5e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/lib/supabase.ts:25", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/lib/supabase.ts:25"}, "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-49c0d3f6f4c38a43", "name": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/routes/googleToken.ts:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/routes/googleToken.ts:89"}, "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-95ef502677ddf39f", "name": "Legacy-named symbol `today_answer_first_v1` in workers/ai-proxy/src/routes/telemetry.ts:77", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in workers/ai-proxy/src/routes/telemetry.ts:77"}, "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-44e639d29b4e3a49", "name": "Legacy-named symbol `explore_v2` in workers/ai-proxy/src/routes/__tests__/config.test.ts:64", "shortDescription": {"text": "Legacy-named symbol `explore_v2` in workers/ai-proxy/src/routes/__tests__/config.test.ts:64"}, "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-f050b2c7f39175fa", "name": "Legacy-named symbol `onboarding_v2` in admin/app/(authed)/telemetry/page.tsx:114", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in admin/app/(authed)/telemetry/page.tsx:114"}, "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-32f54edd08816406", "name": "`fetch()` without try/.catch or AbortSignal \u2014 admin/lib/worker.ts:10", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 admin/lib/worker.ts:10"}, "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-6324837ce401d7db", "name": "Legacy-named symbol `eleven_multilingual_v2` in src/integrations/elevenlabs/client.ts:11", "shortDescription": {"text": "Legacy-named symbol `eleven_multilingual_v2` in src/integrations/elevenlabs/client.ts:11"}, "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-bf6d3d329c6d072a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleAuth/client.ts:14", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleAuth/client.ts:14"}, "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-2d8adf97567cab98", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleContacts/client.ts:57", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleContacts/client.ts:57"}, "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-4f7a2936e7768881", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleFit/client.ts:123", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleFit/client.ts:123"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-472b5e18168c6838", "name": "Commented-code block (6 lines) in src/integrations/supabase/session.ts:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/integrations/supabase/session.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-c6dce85275017382", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/youtube/client.ts:27", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/youtube/client.ts:27"}, "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-3458b1a7eb5e12a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleCalendar/client.ts:65", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleCalendar/client.ts:65"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ece5547927e9bd2c", "name": "Commented-code block (6 lines) in src/sync/compaction.ts:109", "shortDescription": {"text": "Commented-code block (6 lines) in src/sync/compaction.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-22fc53cff4e364bb", "name": "Commented-code block (6 lines) in src/sync/sink.ts:182", "shortDescription": {"text": "Commented-code block (6 lines) in src/sync/sink.ts:182"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f2d4ef910f9fad8c", "name": "Legacy-named symbol `streak_protection_v1` in src/sync/__tests__/resolve.test.ts:192", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/sync/__tests__/resolve.test.ts:192"}, "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-8445263a4c2294f6", "name": "Legacy-named symbol `companion_v1` in src/companion/types.ts:2", "shortDescription": {"text": "Legacy-named symbol `companion_v1` in src/companion/types.ts:2"}, "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-f5fb81624998151b", "name": "Legacy-named symbol `quests_v2` in src/ai/functions.ts:913", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/ai/functions.ts:913"}, "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-f9749e4f6cc59826", "name": "Commented-code block (8 lines) in src/ai/voiceClient.ts:8", "shortDescription": {"text": "Commented-code block (8 lines) in src/ai/voiceClient.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-05e4121f8934b8ec", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/billsContext.ts:7", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/billsContext.ts:7"}, "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-7f5cda8a353f2555", "name": "Commented-code block (8 lines) in src/ai/client.ts:28", "shortDescription": {"text": "Commented-code block (8 lines) in src/ai/client.ts:28"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-11a42d5e43320f7f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/client.ts:244", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/client.ts:244"}, "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-cfae337507dd50b3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/tracing.ts:159", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/tracing.ts:159"}, "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-c8db1d0878779ac8", "name": "Commented-code block (8 lines) in src/ai/__tests__/functions.parse.test.ts:10", "shortDescription": {"text": "Commented-code block (8 lines) in src/ai/__tests__/functions.parse.test.ts:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bbc5cbc2ecab62e0", "name": "Commented-code block (5 lines) in src/ai/__tests__/client.test.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai/__tests__/client.test.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f06215f000bdc80e", "name": "Commented-code block (5 lines) in src/ai/agent/planner.ts:200", "shortDescription": {"text": "Commented-code block (5 lines) in src/ai/agent/planner.ts:200"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-107032522f31dcae", "name": "Commented-code block (8 lines) in src/ai/agent/actionQueue.ts:37", "shortDescription": {"text": "Commented-code block (8 lines) in src/ai/agent/actionQueue.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e6fa9b687118af41", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/rag/embed.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/rag/embed.ts:38"}, "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-b6ac0caac697e826", "name": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchB.test.tsx:2", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchB.test.tsx:2"}, "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-3988dc7de710bb27", "name": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchC.test.tsx:2", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchC.test.tsx:2"}, "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-432ef01d0247509e", "name": "Legacy-named symbol `CareerScreenLegacy` in src/screens/legacy/CareerScreen.legacy.tsx:88", "shortDescription": {"text": "Legacy-named symbol `CareerScreenLegacy` in src/screens/legacy/CareerScreen.legacy.tsx:88"}, "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-e4dee15fe3a45909", "name": "Legacy-named symbol `FinanceScreenLegacy` in src/screens/legacy/FinanceScreen.legacy.tsx:123", "shortDescription": {"text": "Legacy-named symbol `FinanceScreenLegacy` in src/screens/legacy/FinanceScreen.legacy.tsx:123"}, "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-199673f3b4b938ec", "name": "Legacy-named symbol `HealthScreenLegacy` in src/screens/legacy/HealthScreen.legacy.tsx:82", "shortDescription": {"text": "Legacy-named symbol `HealthScreenLegacy` in src/screens/legacy/HealthScreen.legacy.tsx:82"}, "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-c1652f16489da766", "name": "Legacy-named symbol `SocialScreenLegacy` in src/screens/legacy/SocialScreen.legacy.tsx:35", "shortDescription": {"text": "Legacy-named symbol `SocialScreenLegacy` in src/screens/legacy/SocialScreen.legacy.tsx:35"}, "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-51290f01baddf7c0", "name": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/ExploreScreen.legacy.tsx:137", "shortDescription": {"text": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/ExploreScreen.legacy.tsx:137"}, "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-a4b61ba1b3e4157a", "name": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/__tests__/legacySnapshots.test.tsx:18", "shortDescription": {"text": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/__tests__/legacySnapshots.test.tsx:18"}, "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-197e02c78bcc043c", "name": "Legacy-named symbol `comeback_v1` in src/constants/notifications.ts:20", "shortDescription": {"text": "Legacy-named symbol `comeback_v1` in src/constants/notifications.ts:20"}, "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-1f433f0b3ca178c9", "name": "Legacy-named symbol `variable_rewards_v1` in src/constants/cosmetics.ts:2", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/constants/cosmetics.ts:2"}, "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-fb01495fd9da729a", "name": "Legacy-named symbol `quests_v2` in src/constants/gamification.ts:124", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/constants/gamification.ts:124"}, "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-2972f694d3eac5b5", "name": "Commented-code block (5 lines) in src/constants/gamification.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in src/constants/gamification.ts:57"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1222a5986711caa9", "name": "Legacy-named symbol `cold_start_v1` in src/constants/starterCopy.ts:2", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/constants/starterCopy.ts:2"}, "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-1262510fe57d328c", "name": "Legacy-named symbol `comeback_v1` in src/utils/retention.ts:79", "shortDescription": {"text": "Legacy-named symbol `comeback_v1` in src/utils/retention.ts:79"}, "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-6f04dd59939190ef", "name": "Commented-code block (5 lines) in src/utils/goalRoutine.ts:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/goalRoutine.ts:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8555a279c2808c69", "name": "Legacy-named symbol `streak_protection_v1` in src/utils/gamification.ts:7", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/utils/gamification.ts:7"}, "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-be6656372e56ff6c", "name": "Commented-code block (5 lines) in src/utils/signOut.ts:39", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/signOut.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-0d6c6877d4d2d58a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/feedback.ts:37", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/feedback.ts:37"}, "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-71b1836238de0a3e", "name": "Commented-code block (5 lines) in src/components/companion/CompanionFallback.tsx:22", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/companion/CompanionFallback.tsx:22"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a09697f250138842", "name": "Legacy-named symbol `companion_v1` in src/components/companion/CompanionAvatar.tsx:14", "shortDescription": {"text": "Legacy-named symbol `companion_v1` in src/components/companion/CompanionAvatar.tsx:14"}, "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-c7344d8c8d7d0690", "name": "Commented-code block (5 lines) in src/components/shared/VoiceCompanion.tsx:171", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/shared/VoiceCompanion.tsx:171"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bbe5d97f9bfb270", "name": "Legacy-named symbol `companion_v1` in src/components/shared/ComebackSheet.tsx:33", "shortDescription": {"text": "Legacy-named symbol `companion_v1` in src/components/shared/ComebackSheet.tsx:33"}, "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-1b8df1d5d31ef425", "name": "Legacy-named symbol `companion_v1` in src/components/shared/TodayHeader.tsx:55", "shortDescription": {"text": "Legacy-named symbol `companion_v1` in src/components/shared/TodayHeader.tsx:55"}, "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-8d5289bb622fcc98", "name": "Commented-code block (6 lines) in src/components/shared/InkCanvas.tsx:18", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/shared/InkCanvas.tsx:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2276bc386681a250", "name": "Legacy-named symbol `cold_start_v1` in src/components/shared/RadarMeaningCaption.tsx:8", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/RadarMeaningCaption.tsx:8"}, "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-bc3c4f0835b4dbd7", "name": "Legacy-named symbol `install_prompt_v2` in src/components/shared/InstallSheet.tsx:2", "shortDescription": {"text": "Legacy-named symbol `install_prompt_v2` in src/components/shared/InstallSheet.tsx:2"}, "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-a1480ec8c8f997e4", "name": "Legacy-named symbol `cold_start_v1` in src/components/shared/StarterLine.tsx:6", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/StarterLine.tsx:6"}, "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-33fb84d5f9be3158", "name": "Legacy-named symbol `cold_start_v1` in src/components/shared/__tests__/StarterLine.test.tsx:3", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/__tests__/StarterLine.test.tsx:3"}, "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-fe14df7d907dc57f", "name": "Commented-code block (6 lines) in src/components/shared/__tests__/RoutineBlock.test.tsx:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/shared/__tests__/RoutineBlock.test.tsx:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d42b981ffb6b9c8a", "name": "Commented-code block (5 lines) in src/components/ui/ConnectRow.tsx:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/ConnectRow.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c7bcfe79d56a915", "name": "Commented-code block (5 lines) in src/components/ui/ModuleHeader.tsx:20", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/ModuleHeader.tsx:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-22fb2203c0fbad55", "name": "Commented-code block (5 lines) in src/components/ui/AuroraGlow.tsx:18", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/ui/AuroraGlow.tsx:18"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5b9edf322ab336e", "name": "Commented-code block (6 lines) in src/components/ui/DomainGlyph.tsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ui/DomainGlyph.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9020605c1eb806c5", "name": "Commented-code block (5 lines) in src/components/modules/social/__tests__/ContactRow.test.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/modules/social/__tests__/ContactRow.test.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ab4c45598036fb31", "name": "Commented-code block (5 lines) in src/components/modules/polymath/SparkHeroCard.tsx:24", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/modules/polymath/SparkHeroCard.tsx:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2d0c8ff849f5d713", "name": "Commented-code block (5 lines) in src/components/modules/polymath/__tests__/InterestCard.test.tsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/modules/polymath/__tests__/InterestCard.test.tsx:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fe00a87426080d75", "name": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestOpenOverlay.tsx:32", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestOpenOverlay.tsx:32"}, "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-aa327a350b1f008c", "name": "Commented-code block (5 lines) in src/components/gamification/ChestOpenOverlay.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/gamification/ChestOpenOverlay.tsx: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-a985f8febcb118db", "name": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestCard.tsx:15", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestCard.tsx:15"}, "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-0762de69f87fcf5c", "name": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/StreakRecoveryCard.tsx:19", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/StreakRecoveryCard.tsx:19"}, "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-4ac086979e88978d", "name": "Commented-code block (5 lines) in src/components/gamification/StreakRecoveryCard.tsx:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/gamification/StreakRecoveryCard.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce70e1eab6004ed0", "name": "Commented-code block (6 lines) in src/components/gamification/RewardOrchestrator.tsx:48", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/gamification/RewardOrchestrator.tsx:48"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-273fc65e8e3d3acf", "name": "Legacy-named symbol `progress_map_v1` in src/components/gamification/ProgressPath.tsx:21", "shortDescription": {"text": "Legacy-named symbol `progress_map_v1` in src/components/gamification/ProgressPath.tsx:21"}, "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-47a15774783243f5", "name": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestCard.tsx:23", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestCard.tsx:23"}, "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-afad3ec42ef62020", "name": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/MilestoneOverlay.tsx:19", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/MilestoneOverlay.tsx:19"}, "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-42d72b81801b2a9f", "name": "Commented-code block (5 lines) in src/components/gamification/MilestoneOverlay.tsx:19", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/gamification/MilestoneOverlay.tsx:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-393cdad0edcea7d4", "name": "Legacy-named symbol `cold_start_v1` in src/components/gamification/StreakRow.tsx:29", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/components/gamification/StreakRow.tsx:29"}, "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-ee786ddeb8366236", "name": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestDetailSheet.tsx:28", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestDetailSheet.tsx:28"}, "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-b4d863b7d72ab097", "name": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/FreezeBank.tsx:14", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/FreezeBank.tsx:14"}, "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-6b01fe99edc9737e", "name": "Commented-code block (5 lines) in src/components/gamification/FreezeBank.tsx:21", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/gamification/FreezeBank.tsx: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-460e09886ae2e0a6", "name": "Legacy-named symbol `cold_start_v1` in src/components/gamification/FirstWinCard.tsx:15", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/components/gamification/FirstWinCard.tsx:15"}, "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-729662dffdda28cf", "name": "Legacy-named symbol `quests_v2` in src/components/gamification/__tests__/QuestCard.test.tsx:45", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/__tests__/QuestCard.test.tsx:45"}, "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-8a8b545a634fd13b", "name": "Commented-code block (5 lines) in src/theme/domainIcons.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/theme/domainIcons.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-2d3726c3e78bfbb2", "name": "Commented-code block (5 lines) in src/theme/elevation.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/theme/elevation.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-065d21b009444539", "name": "Commented-code block (8 lines) in src/theme/colors.ts:3", "shortDescription": {"text": "Commented-code block (8 lines) in src/theme/colors.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a73f5d4549bf17ac", "name": "Commented-code block (5 lines) in src/theme/surfaces.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/theme/surfaces.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6bdfafeb62bc4ecb", "name": "Commented-code block (5 lines) in src/theme/__tests__/colorTokenCompliance.test.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/theme/__tests__/colorTokenCompliance.test.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-342914d46bb538ad", "name": "Commented-code block (5 lines) in src/theme/__tests__/domainIcons.test.ts:53", "shortDescription": {"text": "Commented-code block (5 lines) in src/theme/__tests__/domainIcons.test.ts:53"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1279305f12c34a33", "name": "Commented-code block (7 lines) in src/theme/__tests__/atmosphereTintCompliance.test.ts:37", "shortDescription": {"text": "Commented-code block (7 lines) in src/theme/__tests__/atmosphereTintCompliance.test.ts:37"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0ded4f70088cf5ef", "name": "Commented-code block (10 lines) in src/theme/__tests__/capsLabelCompliance.test.ts:72", "shortDescription": {"text": "Commented-code block (10 lines) in src/theme/__tests__/capsLabelCompliance.test.ts:72"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-beb81cce4d94552f", "name": "Commented-code block (7 lines) in src/finance/insights.ts:107", "shortDescription": {"text": "Commented-code block (7 lines) in src/finance/insights.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-8e345f62384393cf", "name": "Legacy-named symbol `lifeos_upi_migration_v1` in src/finance/store/useTransactionStore.ts:33", "shortDescription": {"text": "Legacy-named symbol `lifeos_upi_migration_v1` in src/finance/store/useTransactionStore.ts:33"}, "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-a6b435a1d1dca97b", "name": "Legacy-named symbol `lifeos_money_review_v1` in src/finance/store/useMoneyReviewStore.ts:35", "shortDescription": {"text": "Legacy-named symbol `lifeos_money_review_v1` in src/finance/store/useMoneyReviewStore.ts:35"}, "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-dd061a1d0719c2a6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/finance/gmail/fetcher.ts:38", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/finance/gmail/fetcher.ts:38"}, "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-a448e3dcc573f942", "name": "Legacy-named symbol `comeback_v1` in src/hooks/useComeback.ts:11", "shortDescription": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/useComeback.ts:11"}, "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-5862b29625ba33a4", "name": "Commented-code block (5 lines) in src/hooks/useOnboardingNarration.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/hooks/useOnboardingNarration.ts: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-c73d572b2c2ea1f0", "name": "Legacy-named symbol `install_prompt_v2` in src/hooks/useAddToHomeScreen.ts:12", "shortDescription": {"text": "Legacy-named symbol `install_prompt_v2` in src/hooks/useAddToHomeScreen.ts:12"}, "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-cff434c1c41d9262", "name": "Legacy-named symbol `comeback_v1` in src/hooks/useNotifications.ts:167", "shortDescription": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/useNotifications.ts:167"}, "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-3de39d9a5e193202", "name": "Commented-code block (6 lines) in src/hooks/useVoice.ts:190", "shortDescription": {"text": "Commented-code block (6 lines) in src/hooks/useVoice.ts:190"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b7ff47e90b85da5", "name": "Legacy-named symbol `quests_v2` in src/hooks/useDailyQuests.ts:2", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/hooks/useDailyQuests.ts:2"}, "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-85cda37d43e69376", "name": "Legacy-named symbol `lifeos_daily_briefing_v1` in src/hooks/useDailyBriefing.ts:42", "shortDescription": {"text": "Legacy-named symbol `lifeos_daily_briefing_v1` in src/hooks/useDailyBriefing.ts:42"}, "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-10026653179e07c6", "name": "Legacy-named symbol `comeback_v1` in src/hooks/__tests__/useComeback.test.tsx:26", "shortDescription": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/__tests__/useComeback.test.tsx:26"}, "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-ad48e184219f009e", "name": "Legacy-named symbol `install_prompt_v2` in src/hooks/__tests__/useAddToHomeScreen.test.tsx:2", "shortDescription": {"text": "Legacy-named symbol `install_prompt_v2` in src/hooks/__tests__/useAddToHomeScreen.test.tsx:2"}, "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-3eb2e3d7923238ce", "name": "Legacy-named symbol `variable_rewards_v1` in src/gamification/chestGrants.ts:7", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/chestGrants.ts:7"}, "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-8cc17693c5e97a82", "name": "Legacy-named symbol `streak_protection_v1` in src/gamification/streakEngine.ts:5", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/gamification/streakEngine.ts:5"}, "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-701c6f6d6f26db31", "name": "Legacy-named symbol `quests_v2` in src/gamification/questEngine.ts:5", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/gamification/questEngine.ts:5"}, "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-91aa5cb0311dfe56", "name": "Legacy-named symbol `variable_rewards_v1` in src/gamification/lootTable.ts:6", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/lootTable.ts:6"}, "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-ac74019995d9cc28", "name": "Legacy-named symbol `cold_start_v1` in src/gamification/__tests__/questEngine.test.ts:76", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/gamification/__tests__/questEngine.test.ts:76"}, "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-1a17c6f6f0b8cf96", "name": "Legacy-named symbol `variable_rewards_v1` in src/gamification/__tests__/chestGrants.test.ts:15", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/__tests__/chestGrants.test.ts:15"}, "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-7be484d61ac2a698", "name": "Legacy-named symbol `streak_protection_v1` in src/db/schema.ts:187", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/db/schema.ts:187"}, "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-756edf47d52d2d52", "name": "Commented-code block (5 lines) in src/db/schema.ts:198", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/schema.ts:198"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d1b3492e0c80c415", "name": "Legacy-named symbol `quests_v2` in src/db/index.ts:451", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/db/index.ts:451"}, "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-d3daa9ece57d2088", "name": "Commented-code block (5 lines) in src/db/index.ts:552", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/index.ts:552"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2477e97fc1a74125", "name": "Commented-code block (5 lines) in src/db/__tests__/social.test.ts:99", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/__tests__/social.test.ts:99"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72d0c3c07ed3f09b", "name": "Commented-code block (6 lines) in src/db/webStorage/users.ts:15", "shortDescription": {"text": "Commented-code block (6 lines) in src/db/webStorage/users.ts:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-618dba4b7e796cee", "name": "Legacy-named symbol `streak_protection_v1` in src/db/webStorage/gamification.ts:14", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/db/webStorage/gamification.ts:14"}, "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-ed93115303e7c44a", "name": "Commented-code block (5 lines) in src/db/webStorage/gamification.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/webStorage/gamification.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6811ccb3747f17c7", "name": "Legacy-named symbol `lifeos_quests_v2` in src/db/webStorage/_keys.ts:36", "shortDescription": {"text": "Legacy-named symbol `lifeos_quests_v2` in src/db/webStorage/_keys.ts:36"}, "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-4d7035dcbe3462f4", "name": "Commented-code block (5 lines) in src/db/queries/health.ts:104", "shortDescription": {"text": "Commented-code block (5 lines) in src/db/queries/health.ts:104"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c3c11d350ef25cd", "name": "Legacy-named symbol `cold_start_v1` in src/db/queries/quests.ts:27", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/db/queries/quests.ts:27"}, "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-a74e3ce938e2e0a4", "name": "Legacy-named symbol `lifeos_quests_v1` in src/store/useGameStore.ts:38", "shortDescription": {"text": "Legacy-named symbol `lifeos_quests_v1` in src/store/useGameStore.ts:38"}, "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-5e8076bd7d2365ee", "name": "Commented-code block (5 lines) in src/store/useGameStore.ts:226", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/useGameStore.ts:226"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-90f4a57de79a43ef", "name": "Legacy-named symbol `streak_protection_v1` in src/store/useRewardQueueStore.ts:13", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/store/useRewardQueueStore.ts:13"}, "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-3364a0cbf3b84560", "name": "Commented-code block (5 lines) in src/store/useRewardQueueStore.ts:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/useRewardQueueStore.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-06e455138fea46fe", "name": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/useHeroSnoozeStore.ts:46", "shortDescription": {"text": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/useHeroSnoozeStore.ts:46"}, "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-357dc8f8b95ad1cb", "name": "Legacy-named symbol `lifeos_variant_overrides_v1` in src/store/useVariantStore.ts:39", "shortDescription": {"text": "Legacy-named symbol `lifeos_variant_overrides_v1` in src/store/useVariantStore.ts:39"}, "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-761a57ad992bfaee", "name": "Legacy-named symbol `onboarding_v2` in src/store/useFlagStore.ts:20", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in src/store/useFlagStore.ts:20"}, "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-e29ed71c80114378", "name": "Commented-code block (7 lines) in src/store/useFlagStore.ts:45", "shortDescription": {"text": "Commented-code block (7 lines) in src/store/useFlagStore.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-224c51a3070d5d86", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/useFlagStore.ts:148", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/useFlagStore.ts:148"}, "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-5007fbc2f7464a5d", "name": "Legacy-named symbol `lifeos_telemetry_pref_v1` in src/store/useTelemetryStore.ts:29", "shortDescription": {"text": "Legacy-named symbol `lifeos_telemetry_pref_v1` in src/store/useTelemetryStore.ts:29"}, "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-e0dd812bb9dc200b", "name": "Legacy-named symbol `lifeos_xp_history_v1` in src/store/useXpHistoryStore.ts:90", "shortDescription": {"text": "Legacy-named symbol `lifeos_xp_history_v1` in src/store/useXpHistoryStore.ts:90"}, "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-cab3efc3be8b5209", "name": "Legacy-named symbol `lifeos_domain_history_v1` in src/store/useDomainHistoryStore.ts:125", "shortDescription": {"text": "Legacy-named symbol `lifeos_domain_history_v1` in src/store/useDomainHistoryStore.ts:125"}, "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-20077495a422e53f", "name": "Legacy-named symbol `variable_rewards_v1` in src/store/useChestStore.ts:15", "shortDescription": {"text": "Legacy-named symbol `variable_rewards_v1` in src/store/useChestStore.ts:15"}, "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-9031278abe35e3d4", "name": "Legacy-named symbol `quests_v2` in src/store/useQuestStore.ts:25", "shortDescription": {"text": "Legacy-named symbol `quests_v2` in src/store/useQuestStore.ts:25"}, "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-fd7d315ace42b279", "name": "Commented-code block (5 lines) in src/store/useQuestStore.ts:118", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/useQuestStore.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9ccd8d88809a5d7e", "name": "Legacy-named symbol `lifeos_behaviour_suggestions_v1` in src/store/useBehaviourSuggestionsStore.ts:18", "shortDescription": {"text": "Legacy-named symbol `lifeos_behaviour_suggestions_v1` in src/store/useBehaviourSuggestionsStore.ts:18"}, "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-97da7f9e21813cc6", "name": "Legacy-named symbol `lifeos_fit_sync_v1` in src/store/useFitSyncStore.ts:47", "shortDescription": {"text": "Legacy-named symbol `lifeos_fit_sync_v1` in src/store/useFitSyncStore.ts:47"}, "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-b915b73d659e5a51", "name": "Legacy-named symbol `lifeos_polymath_suggestions_v1` in src/store/usePolymathStore.ts:18", "shortDescription": {"text": "Legacy-named symbol `lifeos_polymath_suggestions_v1` in src/store/usePolymathStore.ts:18"}, "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-7c70f293f6e02e50", "name": "Legacy-named symbol `lifeos_annual_review_v1` in src/store/useAnnualReviewStore.ts:34", "shortDescription": {"text": "Legacy-named symbol `lifeos_annual_review_v1` in src/store/useAnnualReviewStore.ts:34"}, "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-7059e5c7436e7c18", "name": "Legacy-named symbol `lifeos_preferences_v1` in src/store/usePreferencesStore.ts:28", "shortDescription": {"text": "Legacy-named symbol `lifeos_preferences_v1` in src/store/usePreferencesStore.ts:28"}, "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-bc939577d1ff314b", "name": "Legacy-named symbol `companion_v1` in src/store/useCompanionStore.ts:17", "shortDescription": {"text": "Legacy-named symbol `companion_v1` in src/store/useCompanionStore.ts:17"}, "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-bcb1b66699a8c94e", "name": "Legacy-named symbol `lifeos_trajectory_v1` in src/store/useTrajectoryStore.ts:32", "shortDescription": {"text": "Legacy-named symbol `lifeos_trajectory_v1` in src/store/useTrajectoryStore.ts:32"}, "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-07a7b63dfda5c9d6", "name": "Legacy-named symbol `lifeos_prompts_v1` in src/store/usePromptStore.ts:66", "shortDescription": {"text": "Legacy-named symbol `lifeos_prompts_v1` in src/store/usePromptStore.ts:66"}, "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-6d734529ef687a50", "name": "Legacy-named symbol `streak_protection_v1` in src/store/__tests__/useGameStore.streaks.test.ts:47", "shortDescription": {"text": "Legacy-named symbol `streak_protection_v1` in src/store/__tests__/useGameStore.streaks.test.ts:47"}, "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-ffe3046ba932302e", "name": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/__tests__/useHeroSnoozeStore.test.ts:65", "shortDescription": {"text": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/__tests__/useHeroSnoozeStore.test.ts:65"}, "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-89530d978d22d8a1", "name": "Legacy-named symbol `onboarding_v2` in src/store/__tests__/useFlagStore.test.ts:65", "shortDescription": {"text": "Legacy-named symbol `onboarding_v2` in src/store/__tests__/useFlagStore.test.ts:65"}, "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-4f3daa6c4201ec8a", "name": "Commented-code block (5 lines) in src/explore/rabbitHole.ts:65", "shortDescription": {"text": "Commented-code block (5 lines) in src/explore/rabbitHole.ts:65"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23163564b3215343", "name": "Legacy-named symbol `cold_start_v1` in src/celebration/presets.ts:61", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/celebration/presets.ts:61"}, "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-cb8bf471db2e5c15", "name": "Legacy-named symbol `cold_start_v1` in src/celebration/__tests__/firstWin.test.ts:2", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in src/celebration/__tests__/firstWin.test.ts:2"}, "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-db7a7cc51f30657c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/visual-regression.spec.ts:30", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/visual-regression.spec.ts:30"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-421c9d2ffdfc19c2", "name": "Commented-code block (5 lines) in e2e/voice-assistant.spec.ts:12", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/voice-assistant.spec.ts:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2de8ea1aa974bf7f", "name": "Commented-code block (6 lines) in e2e/smoke.spec.ts:127", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/smoke.spec.ts:127"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c4e283969c647c17", "name": "Legacy-named symbol `today_answer_first_v1` in e2e/today-fully-loaded.spec.ts:27", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/today-fully-loaded.spec.ts:27"}, "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-5f51ccb6861cbbeb", "name": "Legacy-named symbol `today_answer_first_v1` in e2e/cuj-staging.spec.ts:68", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/cuj-staging.spec.ts:68"}, "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-4bc1d6cc8c369577", "name": "Commented-code block (5 lines) in e2e/cuj-staging.spec.ts:113", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/cuj-staging.spec.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-b0a8dd3162641243", "name": "Legacy-named symbol `today_answer_first_v1` in e2e/today-answer-first.spec.ts:2", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/today-answer-first.spec.ts:2"}, "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-b36f800acf43f8d5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/today-answer-first.spec.ts:16", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/today-answer-first.spec.ts:16"}, "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-7854cd6e814ab85d", "name": "Legacy-named symbol `module_hierarchy_v1` in e2e/health-logging.spec.ts:4", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/health-logging.spec.ts:4"}, "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-d3a189c4b1412841", "name": "Legacy-named symbol `lifeos_preferences_v1` in e2e/helpers.ts:94", "shortDescription": {"text": "Legacy-named symbol `lifeos_preferences_v1` in e2e/helpers.ts:94"}, "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-cff6ad400a739298", "name": "Commented-code block (5 lines) in e2e/helpers.ts:208", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/helpers.ts:208"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0b083780a19b5110", "name": "Legacy-named symbol `today_answer_first_v1` in e2e/goals-task-complete.spec.ts:4", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/goals-task-complete.spec.ts:4"}, "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-58ac91f0b2b01929", "name": "Legacy-named symbol `module_hierarchy_v1` in e2e/career-strategy.spec.ts:11", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/career-strategy.spec.ts:11"}, "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-da5965d1080a04cf", "name": "Commented-code block (9 lines) in e2e/career-strategy.spec.ts:44", "shortDescription": {"text": "Commented-code block (9 lines) in e2e/career-strategy.spec.ts:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4624ff30871c14b5", "name": "Commented-code block (6 lines) in e2e/sweep-ephemeral.mjs:3", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/sweep-ephemeral.mjs:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf817f49820a14c2", "name": "Legacy-named symbol `lifeos_domain_history_v1` in e2e/seedTestUser.ts:68", "shortDescription": {"text": "Legacy-named symbol `lifeos_domain_history_v1` in e2e/seedTestUser.ts:68"}, "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-e9d25e72b29a512d", "name": "Legacy-named symbol `module_hierarchy_v1` in e2e/module-hierarchy.spec.ts:2", "shortDescription": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/module-hierarchy.spec.ts:2"}, "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-44584b7e810c3447", "name": "Commented-code block (6 lines) in e2e/module-hierarchy.spec.ts:228", "shortDescription": {"text": "Commented-code block (6 lines) in e2e/module-hierarchy.spec.ts:228"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aba9a5d73bd26e24", "name": "Legacy-named symbol `today_answer_first_v1` in e2e/routine-completion-modules.spec.ts:51", "shortDescription": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/routine-completion-modules.spec.ts:51"}, "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-97ab17e5a27573de", "name": "Commented-code block (5 lines) in e2e/sync-cross-device.spec.ts:34", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/sync-cross-device.spec.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-5da6a55a51f9ca31", "name": "Legacy-named symbol `cold_start_v1` in e2e/cold-start.spec.ts:2", "shortDescription": {"text": "Legacy-named symbol `cold_start_v1` in e2e/cold-start.spec.ts:2"}, "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-5566d7161e85a6c5", "name": "Commented-code block (10 lines) in e2e/cold-start.spec.ts:172", "shortDescription": {"text": "Commented-code block (10 lines) in e2e/cold-start.spec.ts:172"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-62b5f62439764eff", "name": "Commented-code block (5 lines) in e2e/ink-structural.spec.ts:79", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/ink-structural.spec.ts:79"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f632438e580e018e", "name": "Commented-code block (5 lines) in e2e/auth.setup.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in e2e/auth.setup.ts: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-d30f85c43b86dcf0", "name": "27 env vars used in code but missing from .env.example", "shortDescription": {"text": "27 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `AI_PROXY_MODEL`, `AI_PROXY_PORT`, `CI`, `CUJ_BASE_URL`, `E2E_BASE_URL`, `E2E_SWEEP_CUTOFF_HOURS`, `ELEVENLABS_MODEL_ID`, `EVAL_REAL` + 19 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}}]}}, "automationDetails": {"id": "repobility/17793"}, "properties": {"repository": "Ramachandran-U/lifeos", "repoUrl": "https://github.com/Ramachandran-U/lifeos", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-d2f87e3ac9efebeb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-sfx.js:116"}, "properties": {"repobilityId": "8302cc180b818182", "scanner": "scanner-primary", "fingerprint": "d2f87e3ac9efebeb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d21fde07391e75ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/generate-onboarding-audio.js:179"}, "properties": {"repobilityId": "7dead9f65973cdbe", "scanner": "scanner-primary", "fingerprint": "d21fde07391e75ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-07e6e8b65723def0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-indb.js:189"}, "properties": {"repobilityId": "3804c969fe82011f", "scanner": "scanner-primary", "fingerprint": "07e6e8b65723def0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-606f09d350e3ed23", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/build-food-db.js:225"}, "properties": {"repobilityId": "0b0d3394f7da11fe", "scanner": "scanner-primary", "fingerprint": "606f09d350e3ed23", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ea994b6e5e5b0683", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ai-proxy.js:105"}, "properties": {"repobilityId": "8693376f4d392660", "scanner": "scanner-primary", "fingerprint": "ea994b6e5e5b0683", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9b8646e839dc1441", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/post-export-web.js:80"}, "properties": {"repobilityId": "373f7367dd22a9d1", "scanner": "scanner-primary", "fingerprint": "9b8646e839dc1441", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-15278b8f06eff71f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/copy-canvaskit.js:36"}, "properties": {"repobilityId": "398c9bf510cc6594", "scanner": "scanner-primary", "fingerprint": "15278b8f06eff71f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-6d6c24ab912abb3b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/settings.tsx:157"}, "properties": {"repobilityId": "5c6450429245b1ea", "scanner": "scanner-primary", "fingerprint": "6d6c24ab912abb3b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7b59780395ca8f06", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/+html.tsx:41"}, "properties": {"repobilityId": "8c8d7b690885bde0", "scanner": "scanner-primary", "fingerprint": "7b59780395ca8f06", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-d5ab35819a544a02", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/(onboarding)/day1-routine.tsx:166"}, "properties": {"repobilityId": "2af6cc6eb8cc69b4", "scanner": "scanner-primary", "fingerprint": "d5ab35819a544a02", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-287af2456e305478", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-today.jsx:67"}, "properties": {"repobilityId": "30df518b5f5eda6e", "scanner": "scanner-primary", "fingerprint": "287af2456e305478", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-fb0a1192e9710625", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 design-bundle/project/lifeos-overlay.jsx:66"}, "properties": {"repobilityId": "c4c920fa132feaa5", "scanner": "scanner-primary", "fingerprint": "fb0a1192e9710625", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-e56aeb42e49014f5", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/ai/__tests__/goalInjection.test.ts:6"}, "properties": {"repobilityId": "38b06784de0ee054", "scanner": "scanner-primary", "fingerprint": "e56aeb42e49014f5", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-aa32f7b76770647f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/finance/store/useTransactionStore.ts:135"}, "properties": {"repobilityId": "23214843d05163c5", "scanner": "scanner-primary", "fingerprint": "aa32f7b76770647f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-30027ad3352cfb7f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/db/index.ts:56"}, "properties": {"repobilityId": "63eb8abd3a3140f6", "scanner": "scanner-primary", "fingerprint": "30027ad3352cfb7f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b1860a98ec53c038", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/voice-tools-live.spec.ts:99"}, "properties": {"repobilityId": "23b8d914256b8f77", "scanner": "scanner-primary", "fingerprint": "b1860a98ec53c038", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-38c3c49f8314efb8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 e2e/create-test-user.ts:32"}, "properties": {"repobilityId": "8fe200710b4f0405", "scanner": "scanner-primary", "fingerprint": "38c3c49f8314efb8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-dac19255c8c3f419", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/ai-proxy.js:10"}, "properties": {"repobilityId": "4304ee5a4e73583b", "scanner": "scanner-primary", "fingerprint": "dac19255c8c3f419", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ai-proxy.js"}, "region": {"startLine": 10}}}]}, {"ruleId": "scanner-e716cd7cd3c4f85c", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in scripts/ai-proxy.js:74"}, "properties": {"repobilityId": "ed6deaf7dacbea7b", "scanner": "scanner-primary", "fingerprint": "e716cd7cd3c4f85c", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/ai-proxy.js"}, "region": {"startLine": 74}}}]}, {"ruleId": "scanner-3c68da6aff24b200", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/+html.tsx:41"}, "properties": {"repobilityId": "6df4cee615248bee", "scanner": "scanner-primary", "fingerprint": "3c68da6aff24b200", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/+html.tsx"}, "region": {"startLine": 41}}}]}, {"ruleId": "scanner-06f81c6f512d301a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/evalReports.test.ts:14"}, "properties": {"repobilityId": "e8950bfd754f8563", "scanner": "scanner-primary", "fingerprint": "06f81c6f512d301a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/evalReports.test.ts"}, "region": {"startLine": 14}}}]}, {"ruleId": "scanner-3acf6b126b4251ff", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/telemetry.test.ts:9"}, "properties": {"repobilityId": "93a62d9f7b971a9b", "scanner": "scanner-primary", "fingerprint": "3acf6b126b4251ff", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/telemetry.test.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-9dd0b30580f7a432", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/sync.test.ts:15"}, "properties": {"repobilityId": "66e50ecbf9ceb549", "scanner": "scanner-primary", "fingerprint": "9dd0b30580f7a432", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/sync.test.ts"}, "region": {"startLine": 15}}}]}, {"ruleId": "scanner-275ca72044c187e6", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/googleToken.test.ts:4"}, "properties": {"repobilityId": "e07bf47c56637b26", "scanner": "scanner-primary", "fingerprint": "275ca72044c187e6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/googleToken.test.ts"}, "region": {"startLine": 4}}}]}, {"ruleId": "scanner-97ed80e199b93fed", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/config.test.ts:36"}, "properties": {"repobilityId": "d7dd23e8f66886d4", "scanner": "scanner-primary", "fingerprint": "97ed80e199b93fed", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/config.test.ts"}, "region": {"startLine": 36}}}]}, {"ruleId": "scanner-addb162aa2d1d70a", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in workers/ai-proxy/src/routes/__tests__/feedback.test.ts:9"}, "properties": {"repobilityId": "a7d5708c6765408a", "scanner": "scanner-primary", "fingerprint": "addb162aa2d1d70a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "workers/ai-proxy/src/routes/__tests__/feedback.test.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-c47a8fd32abb997e", "level": "warning", "message": {"text": "Insecure pattern 'weak_hash' in jest.mocks/expo-crypto.ts:9"}, "properties": {"repobilityId": "74f4f155dddc2dd5", "scanner": "scanner-primary", "fingerprint": "c47a8fd32abb997e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "weak_hash"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "jest.mocks/expo-crypto.ts"}, "region": {"startLine": 9}}}]}, {"ruleId": "scanner-ba4c70e5f2e3f94f", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/cuj-staging.spec.ts:855"}, "properties": {"repobilityId": "bfd75a3676353aee", "scanner": "scanner-primary", "fingerprint": "ba4c70e5f2e3f94f", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/cuj-staging.spec.ts"}, "region": {"startLine": 855}}}]}, {"ruleId": "scanner-96a32028bf9e694b", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/helpers.ts:163"}, "properties": {"repobilityId": "de32031ee7de9444", "scanner": "scanner-primary", "fingerprint": "96a32028bf9e694b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/helpers.ts"}, "region": {"startLine": 163}}}]}, {"ruleId": "scanner-f4f083055c019b4e", "level": "warning", "message": {"text": "Insecure pattern 'local_storage_auth_token' in e2e/seedTestUser.ts:63"}, "properties": {"repobilityId": "52d3036993a52e8e", "scanner": "scanner-primary", "fingerprint": "f4f083055c019b4e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "local_storage_auth_token"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "e2e/seedTestUser.ts"}, "region": {"startLine": 63}}}]}, {"ruleId": "scanner-c467d854ae59f1ef", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "0f7060c574c521d9", "scanner": "scanner-primary", "fingerprint": "c467d854ae59f1ef", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/evals.yml"}, "region": {"startLine": 32}}}]}, {"ruleId": "scanner-dd345b009aed4c0d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9672550cb42fb0f7", "scanner": "scanner-primary", "fingerprint": "dd345b009aed4c0d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-prod.yml"}, "region": {"startLine": 42}}}]}, {"ruleId": "scanner-dd345b009aed4c0d", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "9ac188f7fd5b6762", "scanner": "scanner-primary", "fingerprint": "dd345b009aed4c0d", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/smoke-prod.yml"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "3b3d8b8ee5da1f9b", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 80}}}]}, {"ruleId": "scanner-65c9bd56493a81d3", "level": "note", "message": {"text": "GitHub Action is tag-pinned rather than SHA-pinned"}, "properties": {"repobilityId": "8e879d8d5d310b9f", "scanner": "scanner-primary", "fingerprint": "65c9bd56493a81d3", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "pinned-dependencies"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/e2e.yml"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-5a63726691694f31", "level": "note", "message": {"text": "Very large file: app/(tabs)/finance.tsx (1626 lines)"}, "properties": {"repobilityId": "cb51e998f37d9a57", "scanner": "scanner-primary", "fingerprint": "5a63726691694f31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e863eb22894fe3ce", "level": "note", "message": {"text": "Very large file: app/(tabs)/index.tsx (1878 lines)"}, "properties": {"repobilityId": "b2f8e5a3eee9c0d1", "scanner": "scanner-primary", "fingerprint": "e863eb22894fe3ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-591501834973c207", "level": "note", "message": {"text": "Very large file: src/screens/legacy/FinanceScreen.legacy.tsx (1593 lines)"}, "properties": {"repobilityId": "ce4111fdf7dfbe2b", "scanner": "scanner-primary", "fingerprint": "591501834973c207", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-151a7c52cadc56ff", "level": "note", "message": {"text": "Very large file: e2e/cuj-staging.spec.ts (1193 lines)"}, "properties": {"repobilityId": "896dd79fc2881307", "scanner": "scanner-primary", "fingerprint": "151a7c52cadc56ff", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "002e0d5920190855", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "2af052722f60b0bb", "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": "69444e47e0f42227", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "8d161f5600084de0", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "624d61ded5343463", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "895f56222c9751b8", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "2e32e64c9fab8195", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 360}}}]}, {"ruleId": "scanner-ecb0d2c55ed6875d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.local.json"}, "properties": {"repobilityId": "d8bae33a6d517bf0", "scanner": "scanner-primary", "fingerprint": "ecb0d2c55ed6875d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.local.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-73c1fbd3b656f2cb", "level": "none", "message": {"text": "Commented-code block (5 lines) in playwright.config.ts:57"}, "properties": {"repobilityId": "19f5bccf8e6a4dc9", "scanner": "scanner-primary", "fingerprint": "73c1fbd3b656f2cb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-371d160003db7d32", "level": "none", "message": {"text": "Commented-code block (5 lines) in metro.config.js:17"}, "properties": {"repobilityId": "5ea0e2416d445e3c", "scanner": "scanner-primary", "fingerprint": "371d160003db7d32", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-75c6e8bb8418aafc", "level": "none", "message": {"text": "Commented-code block (6 lines) in jest.config.js:3"}, "properties": {"repobilityId": "f2730dae3dcfdb1f", "scanner": "scanner-primary", "fingerprint": "75c6e8bb8418aafc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-808b855ee4b9ee16", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in scripts/generate-onboarding-audio.js:16"}, "properties": {"repobilityId": "53a08d76c4072235", "scanner": "scanner-primary", "fingerprint": "808b855ee4b9ee16", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-716b389f54a7a81a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/generate-onboarding-audio.js:90"}, "properties": {"repobilityId": "d835fc31abf3de79", "scanner": "scanner-primary", "fingerprint": "716b389f54a7a81a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cb2343109787835b", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/post-export-web.js:36"}, "properties": {"repobilityId": "40f5d48950db03a2", "scanner": "scanner-primary", "fingerprint": "cb2343109787835b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a554550b2c85d254", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/notifications-settings.tsx:86"}, "properties": {"repobilityId": "d7607d5fa019541c", "scanner": "scanner-primary", "fingerprint": "a554550b2c85d254", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d704e02c9e0ed67", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in app/welcome-intent.tsx:39"}, "properties": {"repobilityId": "ddb2f2beb1006123", "scanner": "scanner-primary", "fingerprint": "1d704e02c9e0ed67", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7bc7659f036cf132", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in app/evening-reflect.tsx:71"}, "properties": {"repobilityId": "390ae67866595dd9", "scanner": "scanner-primary", "fingerprint": "7bc7659f036cf132", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f10c308649aa7e5", "level": "note", "message": {"text": "Legacy-named symbol `install_prompt_v2` in app/_layout.tsx:64"}, "properties": {"repobilityId": "9f6439d9de858a1b", "scanner": "scanner-primary", "fingerprint": "5f10c308649aa7e5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f7e7c8c61e85438e", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/_layout.tsx:143"}, "properties": {"repobilityId": "507d3280199d1d88", "scanner": "scanner-primary", "fingerprint": "f7e7c8c61e85438e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-749b1e26413ae3f1", "level": "note", "message": {"text": "Legacy-named symbol `discovery_confirm_v2` in app/(onboarding)/discovery-confirm.tsx:127"}, "properties": {"repobilityId": "1d5664d65634c834", "scanner": "scanner-primary", "fingerprint": "749b1e26413ae3f1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-13ad661982ae24af", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/(onboarding)/discovery-confirm.tsx:65"}, "properties": {"repobilityId": "130e02a56d7eb6a8", "scanner": "scanner-primary", "fingerprint": "13ad661982ae24af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d402f0609a203c8", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(onboarding)/day1-routine.tsx:152"}, "properties": {"repobilityId": "452efbf1b45cb315", "scanner": "scanner-primary", "fingerprint": "8d402f0609a203c8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-251061a8ed4621a0", "level": "note", "message": {"text": "Legacy-named symbol `FinanceScreenLegacy` in app/(tabs)/finance.tsx:39"}, "properties": {"repobilityId": "df77e4f4e4d56f92", "scanner": "scanner-primary", "fingerprint": "251061a8ed4621a0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ba18415531142eb8", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in app/(tabs)/goals.tsx:503"}, "properties": {"repobilityId": "732bc758d1c3d6a2", "scanner": "scanner-primary", "fingerprint": "ba18415531142eb8", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-96a81a17cf068a07", "level": "note", "message": {"text": "Legacy-named symbol `CareerScreenLegacy` in app/(tabs)/career.tsx:24"}, "properties": {"repobilityId": "6320397ff5104028", "scanner": "scanner-primary", "fingerprint": "96a81a17cf068a07", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1299e8df20a8ce6d", "level": "note", "message": {"text": "Legacy-named symbol `install_prompt_v2` in app/(tabs)/profile.tsx:201"}, "properties": {"repobilityId": "6d85433d705202e8", "scanner": "scanner-primary", "fingerprint": "1299e8df20a8ce6d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-51c0c747ce08b525", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in app/(tabs)/index.tsx:142"}, "properties": {"repobilityId": "f9d4a8ededf793d3", "scanner": "scanner-primary", "fingerprint": "51c0c747ce08b525", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6027b471ddf1a5c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(tabs)/index.tsx:323"}, "properties": {"repobilityId": "62419ff117fc2b93", "scanner": "scanner-primary", "fingerprint": "6027b471ddf1a5c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-29d1e05f5bdc5dcf", "level": "note", "message": {"text": "Legacy-named symbol `HealthScreenLegacy` in app/(tabs)/health.tsx:33"}, "properties": {"repobilityId": "54306121c35efa66", "scanner": "scanner-primary", "fingerprint": "29d1e05f5bdc5dcf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-435c0d27aad4622f", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in app/(tabs)/rewards.tsx:64"}, "properties": {"repobilityId": "f0d055fc863a23e6", "scanner": "scanner-primary", "fingerprint": "435c0d27aad4622f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2d293f1961ecac40", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/(tabs)/rewards.tsx:95"}, "properties": {"repobilityId": "1fb7261b515e6f1b", "scanner": "scanner-primary", "fingerprint": "2d293f1961ecac40", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bca53ffa3c060a96", "level": "note", "message": {"text": "Legacy-named symbol `SocialScreenLegacy` in app/(tabs)/social.tsx:35"}, "properties": {"repobilityId": "d3b9749ff123503b", "scanner": "scanner-primary", "fingerprint": "bca53ffa3c060a96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f1227c86f7392df4", "level": "note", "message": {"text": "Legacy-named symbol `ExploreScreenLegacy` in app/(tabs)/explore.tsx:66"}, "properties": {"repobilityId": "bc11052c7deee7fc", "scanner": "scanner-primary", "fingerprint": "f1227c86f7392df4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-225a08ef5213c4bb", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/(tabs)/explore.tsx:247"}, "properties": {"repobilityId": "b9fb9cf32c06ce23", "scanner": "scanner-primary", "fingerprint": "225a08ef5213c4bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d148c8c38b5ca025", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in app/(tabs)/__tests__/hierarchyGuards.test.ts:14"}, "properties": {"repobilityId": "6532d879ce7ec40b", "scanner": "scanner-primary", "fingerprint": "d148c8c38b5ca025", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ea82c5c467f761d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/scripts/verify-avatar.mjs:31"}, "properties": {"repobilityId": "6b90eecaa9816ae6", "scanner": "scanner-primary", "fingerprint": "ea82c5c467f761d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b28be261aaa176e", "level": "none", "message": {"text": "Commented-code block (6 lines) in workers/ai-proxy/src/claude.ts:208"}, "properties": {"repobilityId": "97630b4571cb643d", "scanner": "scanner-primary", "fingerprint": "9b28be261aaa176e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84bc0710abce4c62", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/claude.ts:178"}, "properties": {"repobilityId": "f152a24c80e76683", "scanner": "scanner-primary", "fingerprint": "84bc0710abce4c62", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d64708659b41b06", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/gemini.ts:3"}, "properties": {"repobilityId": "1e5adf9e3370c2d2", "scanner": "scanner-primary", "fingerprint": "6d64708659b41b06", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9bab2b2fdb03c672", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/avatar.ts:123"}, "properties": {"repobilityId": "902bde40cee96d8d", "scanner": "scanner-primary", "fingerprint": "9bab2b2fdb03c672", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b5fec9acaaa5c035", "level": "none", "message": {"text": "Commented-code block (6 lines) in workers/ai-proxy/src/__tests__/index.router.test.ts:319"}, "properties": {"repobilityId": "6463e0fa79a18fd5", "scanner": "scanner-primary", "fingerprint": "b5fec9acaaa5c035", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf6526b140d7aa87", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/__tests__/index.router.test.ts:103"}, "properties": {"repobilityId": "1da5e6ea39c86ff6", "scanner": "scanner-primary", "fingerprint": "bf6526b140d7aa87", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33b0f5e6c164d5e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/lib/supabase.ts:25"}, "properties": {"repobilityId": "43076de2773d8020", "scanner": "scanner-primary", "fingerprint": "33b0f5e6c164d5e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-49c0d3f6f4c38a43", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 workers/ai-proxy/src/routes/googleToken.ts:89"}, "properties": {"repobilityId": "b1314cf8577ab3af", "scanner": "scanner-primary", "fingerprint": "49c0d3f6f4c38a43", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-95ef502677ddf39f", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in workers/ai-proxy/src/routes/telemetry.ts:77"}, "properties": {"repobilityId": "72484633c479ec54", "scanner": "scanner-primary", "fingerprint": "95ef502677ddf39f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-44e639d29b4e3a49", "level": "note", "message": {"text": "Legacy-named symbol `explore_v2` in workers/ai-proxy/src/routes/__tests__/config.test.ts:64"}, "properties": {"repobilityId": "e4886d34a15efbee", "scanner": "scanner-primary", "fingerprint": "44e639d29b4e3a49", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f050b2c7f39175fa", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in admin/app/(authed)/telemetry/page.tsx:114"}, "properties": {"repobilityId": "a64940ee7f780c5d", "scanner": "scanner-primary", "fingerprint": "f050b2c7f39175fa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-32f54edd08816406", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 admin/lib/worker.ts:10"}, "properties": {"repobilityId": "707fa4bfd4378c72", "scanner": "scanner-primary", "fingerprint": "32f54edd08816406", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6324837ce401d7db", "level": "note", "message": {"text": "Legacy-named symbol `eleven_multilingual_v2` in src/integrations/elevenlabs/client.ts:11"}, "properties": {"repobilityId": "9fe0761e9b07ed3a", "scanner": "scanner-primary", "fingerprint": "6324837ce401d7db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bf6d3d329c6d072a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleAuth/client.ts:14"}, "properties": {"repobilityId": "01595aeab352ee7d", "scanner": "scanner-primary", "fingerprint": "bf6d3d329c6d072a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2d8adf97567cab98", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleContacts/client.ts:57"}, "properties": {"repobilityId": "b3ec6000a82b6ae4", "scanner": "scanner-primary", "fingerprint": "2d8adf97567cab98", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4f7a2936e7768881", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleFit/client.ts:123"}, "properties": {"repobilityId": "f26bfe388a3665f2", "scanner": "scanner-primary", "fingerprint": "4f7a2936e7768881", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-472b5e18168c6838", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/integrations/supabase/session.ts:1"}, "properties": {"repobilityId": "e671ad89fda373ec", "scanner": "scanner-primary", "fingerprint": "472b5e18168c6838", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c6dce85275017382", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/youtube/client.ts:27"}, "properties": {"repobilityId": "44344394325f43fa", "scanner": "scanner-primary", "fingerprint": "c6dce85275017382", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3458b1a7eb5e12a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/integrations/googleCalendar/client.ts:65"}, "properties": {"repobilityId": "3f905aafdaa225ce", "scanner": "scanner-primary", "fingerprint": "3458b1a7eb5e12a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ece5547927e9bd2c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sync/compaction.ts:109"}, "properties": {"repobilityId": "d5eed036944e7d5c", "scanner": "scanner-primary", "fingerprint": "ece5547927e9bd2c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22fc53cff4e364bb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/sync/sink.ts:182"}, "properties": {"repobilityId": "080316242b86a135", "scanner": "scanner-primary", "fingerprint": "22fc53cff4e364bb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2d4ef910f9fad8c", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/sync/__tests__/resolve.test.ts:192"}, "properties": {"repobilityId": "adb50e95917e1a9c", "scanner": "scanner-primary", "fingerprint": "f2d4ef910f9fad8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8445263a4c2294f6", "level": "note", "message": {"text": "Legacy-named symbol `companion_v1` in src/companion/types.ts:2"}, "properties": {"repobilityId": "7a6a3b1f8a0f4a2c", "scanner": "scanner-primary", "fingerprint": "8445263a4c2294f6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f5fb81624998151b", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/ai/functions.ts:913"}, "properties": {"repobilityId": "1d7b8cb32dfd3fc6", "scanner": "scanner-primary", "fingerprint": "f5fb81624998151b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f9749e4f6cc59826", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/ai/voiceClient.ts:8"}, "properties": {"repobilityId": "b699ebbbe45add69", "scanner": "scanner-primary", "fingerprint": "f9749e4f6cc59826", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-05e4121f8934b8ec", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/billsContext.ts:7"}, "properties": {"repobilityId": "f8ed40cf5e327588", "scanner": "scanner-primary", "fingerprint": "05e4121f8934b8ec", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7f5cda8a353f2555", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/ai/client.ts:28"}, "properties": {"repobilityId": "dfbce5c1e13a4b0b", "scanner": "scanner-primary", "fingerprint": "7f5cda8a353f2555", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-11a42d5e43320f7f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/client.ts:244"}, "properties": {"repobilityId": "e044a3b5257af6f7", "scanner": "scanner-primary", "fingerprint": "11a42d5e43320f7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cfae337507dd50b3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/tracing.ts:159"}, "properties": {"repobilityId": "fcc6a9fe9435b4e5", "scanner": "scanner-primary", "fingerprint": "cfae337507dd50b3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c8db1d0878779ac8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/ai/__tests__/functions.parse.test.ts:10"}, "properties": {"repobilityId": "c230b853556ea0b4", "scanner": "scanner-primary", "fingerprint": "c8db1d0878779ac8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bbc5cbc2ecab62e0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai/__tests__/client.test.ts:1"}, "properties": {"repobilityId": "e9a67687e1757225", "scanner": "scanner-primary", "fingerprint": "bbc5cbc2ecab62e0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06215f000bdc80e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/ai/agent/planner.ts:200"}, "properties": {"repobilityId": "7005170d62c419f3", "scanner": "scanner-primary", "fingerprint": "f06215f000bdc80e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-107032522f31dcae", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/ai/agent/actionQueue.ts:37"}, "properties": {"repobilityId": "a40ce508504dbbb7", "scanner": "scanner-primary", "fingerprint": "107032522f31dcae", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e6fa9b687118af41", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/ai/rag/embed.ts:38"}, "properties": {"repobilityId": "ceb0d12b878a9c06", "scanner": "scanner-primary", "fingerprint": "e6fa9b687118af41", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b6ac0caac697e826", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchB.test.tsx:2"}, "properties": {"repobilityId": "6009882b13a28a6e", "scanner": "scanner-primary", "fingerprint": "b6ac0caac697e826", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3988dc7de710bb27", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in src/screens/__tests__/v1ScreensBatchC.test.tsx:2"}, "properties": {"repobilityId": "502784abb81b04f5", "scanner": "scanner-primary", "fingerprint": "3988dc7de710bb27", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-432ef01d0247509e", "level": "note", "message": {"text": "Legacy-named symbol `CareerScreenLegacy` in src/screens/legacy/CareerScreen.legacy.tsx:88"}, "properties": {"repobilityId": "634b2f5d0ae6be52", "scanner": "scanner-primary", "fingerprint": "432ef01d0247509e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e4dee15fe3a45909", "level": "note", "message": {"text": "Legacy-named symbol `FinanceScreenLegacy` in src/screens/legacy/FinanceScreen.legacy.tsx:123"}, "properties": {"repobilityId": "1fd2f534bcce32c9", "scanner": "scanner-primary", "fingerprint": "e4dee15fe3a45909", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-199673f3b4b938ec", "level": "note", "message": {"text": "Legacy-named symbol `HealthScreenLegacy` in src/screens/legacy/HealthScreen.legacy.tsx:82"}, "properties": {"repobilityId": "ccf57825fd2e84e2", "scanner": "scanner-primary", "fingerprint": "199673f3b4b938ec", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c1652f16489da766", "level": "note", "message": {"text": "Legacy-named symbol `SocialScreenLegacy` in src/screens/legacy/SocialScreen.legacy.tsx:35"}, "properties": {"repobilityId": "c30883d26f93fe86", "scanner": "scanner-primary", "fingerprint": "c1652f16489da766", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-51290f01baddf7c0", "level": "note", "message": {"text": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/ExploreScreen.legacy.tsx:137"}, "properties": {"repobilityId": "c4692d84771fa2d4", "scanner": "scanner-primary", "fingerprint": "51290f01baddf7c0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a4b61ba1b3e4157a", "level": "note", "message": {"text": "Legacy-named symbol `ExploreScreenLegacy` in src/screens/legacy/__tests__/legacySnapshots.test.tsx:18"}, "properties": {"repobilityId": "1e8b1dd50e84cd54", "scanner": "scanner-primary", "fingerprint": "a4b61ba1b3e4157a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-197e02c78bcc043c", "level": "note", "message": {"text": "Legacy-named symbol `comeback_v1` in src/constants/notifications.ts:20"}, "properties": {"repobilityId": "ca45cb3e723f2c59", "scanner": "scanner-primary", "fingerprint": "197e02c78bcc043c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1f433f0b3ca178c9", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/constants/cosmetics.ts:2"}, "properties": {"repobilityId": "ef413a9a9853ecdf", "scanner": "scanner-primary", "fingerprint": "1f433f0b3ca178c9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fb01495fd9da729a", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/constants/gamification.ts:124"}, "properties": {"repobilityId": "3b965b8b92317056", "scanner": "scanner-primary", "fingerprint": "fb01495fd9da729a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2972f694d3eac5b5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/constants/gamification.ts:57"}, "properties": {"repobilityId": "f118846d7cd97b9e", "scanner": "scanner-primary", "fingerprint": "2972f694d3eac5b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1222a5986711caa9", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/constants/starterCopy.ts:2"}, "properties": {"repobilityId": "85cc826463597822", "scanner": "scanner-primary", "fingerprint": "1222a5986711caa9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1262510fe57d328c", "level": "note", "message": {"text": "Legacy-named symbol `comeback_v1` in src/utils/retention.ts:79"}, "properties": {"repobilityId": "b778b511d2eaba94", "scanner": "scanner-primary", "fingerprint": "1262510fe57d328c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6f04dd59939190ef", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/goalRoutine.ts:41"}, "properties": {"repobilityId": "309f23d9ce946810", "scanner": "scanner-primary", "fingerprint": "6f04dd59939190ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8555a279c2808c69", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/utils/gamification.ts:7"}, "properties": {"repobilityId": "a3d23338c6985951", "scanner": "scanner-primary", "fingerprint": "8555a279c2808c69", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-be6656372e56ff6c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/signOut.ts:39"}, "properties": {"repobilityId": "b13b7078217355c7", "scanner": "scanner-primary", "fingerprint": "be6656372e56ff6c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0d6c6877d4d2d58a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/feedback.ts:37"}, "properties": {"repobilityId": "ecb56c56b7a1b6e0", "scanner": "scanner-primary", "fingerprint": "0d6c6877d4d2d58a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-71b1836238de0a3e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/companion/CompanionFallback.tsx:22"}, "properties": {"repobilityId": "0656a92b6d4cd8bd", "scanner": "scanner-primary", "fingerprint": "71b1836238de0a3e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a09697f250138842", "level": "note", "message": {"text": "Legacy-named symbol `companion_v1` in src/components/companion/CompanionAvatar.tsx:14"}, "properties": {"repobilityId": "5b2f865417675e23", "scanner": "scanner-primary", "fingerprint": "a09697f250138842", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c7344d8c8d7d0690", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/shared/VoiceCompanion.tsx:171"}, "properties": {"repobilityId": "fd69f8db2ac8fc8f", "scanner": "scanner-primary", "fingerprint": "c7344d8c8d7d0690", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bbe5d97f9bfb270", "level": "note", "message": {"text": "Legacy-named symbol `companion_v1` in src/components/shared/ComebackSheet.tsx:33"}, "properties": {"repobilityId": "e66cc1e326090bfe", "scanner": "scanner-primary", "fingerprint": "1bbe5d97f9bfb270", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1b8df1d5d31ef425", "level": "note", "message": {"text": "Legacy-named symbol `companion_v1` in src/components/shared/TodayHeader.tsx:55"}, "properties": {"repobilityId": "11c72326fe2384ef", "scanner": "scanner-primary", "fingerprint": "1b8df1d5d31ef425", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8d5289bb622fcc98", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/shared/InkCanvas.tsx:18"}, "properties": {"repobilityId": "8b004072ed8a44aa", "scanner": "scanner-primary", "fingerprint": "8d5289bb622fcc98", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2276bc386681a250", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/RadarMeaningCaption.tsx:8"}, "properties": {"repobilityId": "6f0be15546642181", "scanner": "scanner-primary", "fingerprint": "2276bc386681a250", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bc3c4f0835b4dbd7", "level": "note", "message": {"text": "Legacy-named symbol `install_prompt_v2` in src/components/shared/InstallSheet.tsx:2"}, "properties": {"repobilityId": "0ebbb1360d9ce437", "scanner": "scanner-primary", "fingerprint": "bc3c4f0835b4dbd7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a1480ec8c8f997e4", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/StarterLine.tsx:6"}, "properties": {"repobilityId": "d728c995440dc5d7", "scanner": "scanner-primary", "fingerprint": "a1480ec8c8f997e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-33fb84d5f9be3158", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/components/shared/__tests__/StarterLine.test.tsx:3"}, "properties": {"repobilityId": "62eed747857ae1b4", "scanner": "scanner-primary", "fingerprint": "33fb84d5f9be3158", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fe14df7d907dc57f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/shared/__tests__/RoutineBlock.test.tsx:4"}, "properties": {"repobilityId": "889840ad1b90c428", "scanner": "scanner-primary", "fingerprint": "fe14df7d907dc57f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d42b981ffb6b9c8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/ConnectRow.tsx:24"}, "properties": {"repobilityId": "e83156d13b32716b", "scanner": "scanner-primary", "fingerprint": "d42b981ffb6b9c8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c7bcfe79d56a915", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/ModuleHeader.tsx:20"}, "properties": {"repobilityId": "5306d0669ea9003c", "scanner": "scanner-primary", "fingerprint": "2c7bcfe79d56a915", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-22fb2203c0fbad55", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/ui/AuroraGlow.tsx:18"}, "properties": {"repobilityId": "621f1fdb6d859acd", "scanner": "scanner-primary", "fingerprint": "22fb2203c0fbad55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e5b9edf322ab336e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ui/DomainGlyph.tsx:19"}, "properties": {"repobilityId": "915fbf791c7b21e2", "scanner": "scanner-primary", "fingerprint": "e5b9edf322ab336e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9020605c1eb806c5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/modules/social/__tests__/ContactRow.test.tsx:3"}, "properties": {"repobilityId": "e633bfe16dce0d2f", "scanner": "scanner-primary", "fingerprint": "9020605c1eb806c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ab4c45598036fb31", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/modules/polymath/SparkHeroCard.tsx:24"}, "properties": {"repobilityId": "465283e1e67242c0", "scanner": "scanner-primary", "fingerprint": "ab4c45598036fb31", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d0c8ff849f5d713", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/modules/polymath/__tests__/InterestCard.test.tsx:5"}, "properties": {"repobilityId": "caf77a7e016864aa", "scanner": "scanner-primary", "fingerprint": "2d0c8ff849f5d713", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fe00a87426080d75", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestOpenOverlay.tsx:32"}, "properties": {"repobilityId": "ec0648da5079c4b5", "scanner": "scanner-primary", "fingerprint": "fe00a87426080d75", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-aa327a350b1f008c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/gamification/ChestOpenOverlay.tsx:32"}, "properties": {"repobilityId": "bf80acdafb00cb7e", "scanner": "scanner-primary", "fingerprint": "aa327a350b1f008c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a985f8febcb118db", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestCard.tsx:15"}, "properties": {"repobilityId": "fb20f59271814d04", "scanner": "scanner-primary", "fingerprint": "a985f8febcb118db", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-0762de69f87fcf5c", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/StreakRecoveryCard.tsx:19"}, "properties": {"repobilityId": "9085c09d191d2c71", "scanner": "scanner-primary", "fingerprint": "0762de69f87fcf5c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4ac086979e88978d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/gamification/StreakRecoveryCard.tsx:19"}, "properties": {"repobilityId": "5adc36c60b7908f9", "scanner": "scanner-primary", "fingerprint": "4ac086979e88978d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce70e1eab6004ed0", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/gamification/RewardOrchestrator.tsx:48"}, "properties": {"repobilityId": "8d5f1b2641b65125", "scanner": "scanner-primary", "fingerprint": "ce70e1eab6004ed0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-273fc65e8e3d3acf", "level": "note", "message": {"text": "Legacy-named symbol `progress_map_v1` in src/components/gamification/ProgressPath.tsx:21"}, "properties": {"repobilityId": "c107a991203d78e4", "scanner": "scanner-primary", "fingerprint": "273fc65e8e3d3acf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-47a15774783243f5", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/components/gamification/ChestCard.tsx:23"}, "properties": {"repobilityId": "a517ebdae9ff3783", "scanner": "scanner-primary", "fingerprint": "47a15774783243f5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-afad3ec42ef62020", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/MilestoneOverlay.tsx:19"}, "properties": {"repobilityId": "0e7fb8c7688d6b0b", "scanner": "scanner-primary", "fingerprint": "afad3ec42ef62020", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-42d72b81801b2a9f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/gamification/MilestoneOverlay.tsx:19"}, "properties": {"repobilityId": "7341024434e92998", "scanner": "scanner-primary", "fingerprint": "42d72b81801b2a9f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-393cdad0edcea7d4", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/components/gamification/StreakRow.tsx:29"}, "properties": {"repobilityId": "f23676c7800f1cc3", "scanner": "scanner-primary", "fingerprint": "393cdad0edcea7d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ee786ddeb8366236", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/QuestDetailSheet.tsx:28"}, "properties": {"repobilityId": "401295cd89b05022", "scanner": "scanner-primary", "fingerprint": "ee786ddeb8366236", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b4d863b7d72ab097", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/components/gamification/FreezeBank.tsx:14"}, "properties": {"repobilityId": "b38eaefbc9fc9598", "scanner": "scanner-primary", "fingerprint": "b4d863b7d72ab097", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6b01fe99edc9737e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/gamification/FreezeBank.tsx:21"}, "properties": {"repobilityId": "941255b1a8fec9ff", "scanner": "scanner-primary", "fingerprint": "6b01fe99edc9737e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-460e09886ae2e0a6", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/components/gamification/FirstWinCard.tsx:15"}, "properties": {"repobilityId": "38c0f9a51aae135d", "scanner": "scanner-primary", "fingerprint": "460e09886ae2e0a6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-729662dffdda28cf", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/components/gamification/__tests__/QuestCard.test.tsx:45"}, "properties": {"repobilityId": "4869dca4afcfc05d", "scanner": "scanner-primary", "fingerprint": "729662dffdda28cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8a8b545a634fd13b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/theme/domainIcons.ts:1"}, "properties": {"repobilityId": "60ab9e11ad4c0e08", "scanner": "scanner-primary", "fingerprint": "8a8b545a634fd13b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d3726c3e78bfbb2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/theme/elevation.ts:4"}, "properties": {"repobilityId": "42bd881c37192fc1", "scanner": "scanner-primary", "fingerprint": "2d3726c3e78bfbb2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-065d21b009444539", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/theme/colors.ts:3"}, "properties": {"repobilityId": "d4401273cee3cfba", "scanner": "scanner-primary", "fingerprint": "065d21b009444539", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a73f5d4549bf17ac", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/theme/surfaces.ts:3"}, "properties": {"repobilityId": "02f88d6fc77cff4d", "scanner": "scanner-primary", "fingerprint": "a73f5d4549bf17ac", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6bdfafeb62bc4ecb", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/theme/__tests__/colorTokenCompliance.test.ts:74"}, "properties": {"repobilityId": "da4596b175401d7e", "scanner": "scanner-primary", "fingerprint": "6bdfafeb62bc4ecb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-342914d46bb538ad", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/theme/__tests__/domainIcons.test.ts:53"}, "properties": {"repobilityId": "4412ec8294640d70", "scanner": "scanner-primary", "fingerprint": "342914d46bb538ad", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1279305f12c34a33", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/theme/__tests__/atmosphereTintCompliance.test.ts:37"}, "properties": {"repobilityId": "3f2c1b2a78b9b4ef", "scanner": "scanner-primary", "fingerprint": "1279305f12c34a33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0ded4f70088cf5ef", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/theme/__tests__/capsLabelCompliance.test.ts:72"}, "properties": {"repobilityId": "b918afe07d21da32", "scanner": "scanner-primary", "fingerprint": "0ded4f70088cf5ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-beb81cce4d94552f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/finance/insights.ts:107"}, "properties": {"repobilityId": "707b097f697ffa0b", "scanner": "scanner-primary", "fingerprint": "beb81cce4d94552f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8e345f62384393cf", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_upi_migration_v1` in src/finance/store/useTransactionStore.ts:33"}, "properties": {"repobilityId": "cd0e663b176d547b", "scanner": "scanner-primary", "fingerprint": "8e345f62384393cf", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a6b435a1d1dca97b", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_money_review_v1` in src/finance/store/useMoneyReviewStore.ts:35"}, "properties": {"repobilityId": "6301e114ed449661", "scanner": "scanner-primary", "fingerprint": "a6b435a1d1dca97b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-dd061a1d0719c2a6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/finance/gmail/fetcher.ts:38"}, "properties": {"repobilityId": "00024b5683d76d79", "scanner": "scanner-primary", "fingerprint": "dd061a1d0719c2a6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a448e3dcc573f942", "level": "note", "message": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/useComeback.ts:11"}, "properties": {"repobilityId": "2784014e58b61416", "scanner": "scanner-primary", "fingerprint": "a448e3dcc573f942", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5862b29625ba33a4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/hooks/useOnboardingNarration.ts:7"}, "properties": {"repobilityId": "2ad6574f15ed8063", "scanner": "scanner-primary", "fingerprint": "5862b29625ba33a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c73d572b2c2ea1f0", "level": "note", "message": {"text": "Legacy-named symbol `install_prompt_v2` in src/hooks/useAddToHomeScreen.ts:12"}, "properties": {"repobilityId": "3fb9601fc3afe6fa", "scanner": "scanner-primary", "fingerprint": "c73d572b2c2ea1f0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cff434c1c41d9262", "level": "note", "message": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/useNotifications.ts:167"}, "properties": {"repobilityId": "58fcfccc89403bcd", "scanner": "scanner-primary", "fingerprint": "cff434c1c41d9262", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3de39d9a5e193202", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/hooks/useVoice.ts:190"}, "properties": {"repobilityId": "9d14f5b2177269e5", "scanner": "scanner-primary", "fingerprint": "3de39d9a5e193202", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b7ff47e90b85da5", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/hooks/useDailyQuests.ts:2"}, "properties": {"repobilityId": "73cd1447fd211b13", "scanner": "scanner-primary", "fingerprint": "0b7ff47e90b85da5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-85cda37d43e69376", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_daily_briefing_v1` in src/hooks/useDailyBriefing.ts:42"}, "properties": {"repobilityId": "5858d16ca526e9f2", "scanner": "scanner-primary", "fingerprint": "85cda37d43e69376", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-10026653179e07c6", "level": "note", "message": {"text": "Legacy-named symbol `comeback_v1` in src/hooks/__tests__/useComeback.test.tsx:26"}, "properties": {"repobilityId": "422288beaab4124c", "scanner": "scanner-primary", "fingerprint": "10026653179e07c6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ad48e184219f009e", "level": "note", "message": {"text": "Legacy-named symbol `install_prompt_v2` in src/hooks/__tests__/useAddToHomeScreen.test.tsx:2"}, "properties": {"repobilityId": "505c5cc5d7199b92", "scanner": "scanner-primary", "fingerprint": "ad48e184219f009e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3eb2e3d7923238ce", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/chestGrants.ts:7"}, "properties": {"repobilityId": "f20058d80495502d", "scanner": "scanner-primary", "fingerprint": "3eb2e3d7923238ce", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-8cc17693c5e97a82", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/gamification/streakEngine.ts:5"}, "properties": {"repobilityId": "bb60b421d8c0c6d4", "scanner": "scanner-primary", "fingerprint": "8cc17693c5e97a82", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-701c6f6d6f26db31", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/gamification/questEngine.ts:5"}, "properties": {"repobilityId": "148cdff6f43937cb", "scanner": "scanner-primary", "fingerprint": "701c6f6d6f26db31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-91aa5cb0311dfe56", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/lootTable.ts:6"}, "properties": {"repobilityId": "e2cd66dfb805d43e", "scanner": "scanner-primary", "fingerprint": "91aa5cb0311dfe56", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ac74019995d9cc28", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/gamification/__tests__/questEngine.test.ts:76"}, "properties": {"repobilityId": "27d226a4829e24f1", "scanner": "scanner-primary", "fingerprint": "ac74019995d9cc28", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1a17c6f6f0b8cf96", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/gamification/__tests__/chestGrants.test.ts:15"}, "properties": {"repobilityId": "85a6c795d7e3655c", "scanner": "scanner-primary", "fingerprint": "1a17c6f6f0b8cf96", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7be484d61ac2a698", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/db/schema.ts:187"}, "properties": {"repobilityId": "2f0370792a18cfb7", "scanner": "scanner-primary", "fingerprint": "7be484d61ac2a698", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-756edf47d52d2d52", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/schema.ts:198"}, "properties": {"repobilityId": "3b91a4d06d15bd7b", "scanner": "scanner-primary", "fingerprint": "756edf47d52d2d52", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d1b3492e0c80c415", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/db/index.ts:451"}, "properties": {"repobilityId": "067d04285c0ef77e", "scanner": "scanner-primary", "fingerprint": "d1b3492e0c80c415", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3daa9ece57d2088", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/index.ts:552"}, "properties": {"repobilityId": "05194bf2b3162c30", "scanner": "scanner-primary", "fingerprint": "d3daa9ece57d2088", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2477e97fc1a74125", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/__tests__/social.test.ts:99"}, "properties": {"repobilityId": "da53be8a5b4ec8bd", "scanner": "scanner-primary", "fingerprint": "2477e97fc1a74125", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-72d0c3c07ed3f09b", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/db/webStorage/users.ts:15"}, "properties": {"repobilityId": "85e73419b3472114", "scanner": "scanner-primary", "fingerprint": "72d0c3c07ed3f09b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-618dba4b7e796cee", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/db/webStorage/gamification.ts:14"}, "properties": {"repobilityId": "f33fc88407a8099e", "scanner": "scanner-primary", "fingerprint": "618dba4b7e796cee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ed93115303e7c44a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/webStorage/gamification.ts:74"}, "properties": {"repobilityId": "3a70031776a87a2c", "scanner": "scanner-primary", "fingerprint": "ed93115303e7c44a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6811ccb3747f17c7", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_quests_v2` in src/db/webStorage/_keys.ts:36"}, "properties": {"repobilityId": "79582725634fd835", "scanner": "scanner-primary", "fingerprint": "6811ccb3747f17c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4d7035dcbe3462f4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/db/queries/health.ts:104"}, "properties": {"repobilityId": "a6fd9e9bbe32c8bf", "scanner": "scanner-primary", "fingerprint": "4d7035dcbe3462f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c3c11d350ef25cd", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/db/queries/quests.ts:27"}, "properties": {"repobilityId": "c2995fac25d166c7", "scanner": "scanner-primary", "fingerprint": "8c3c11d350ef25cd", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a74e3ce938e2e0a4", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_quests_v1` in src/store/useGameStore.ts:38"}, "properties": {"repobilityId": "977ec95c7912a84c", "scanner": "scanner-primary", "fingerprint": "a74e3ce938e2e0a4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5e8076bd7d2365ee", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/useGameStore.ts:226"}, "properties": {"repobilityId": "0ea4afff278781e1", "scanner": "scanner-primary", "fingerprint": "5e8076bd7d2365ee", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90f4a57de79a43ef", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/store/useRewardQueueStore.ts:13"}, "properties": {"repobilityId": "5c48a22208e2ac06", "scanner": "scanner-primary", "fingerprint": "90f4a57de79a43ef", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3364a0cbf3b84560", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/useRewardQueueStore.ts:4"}, "properties": {"repobilityId": "f98f8f9945ba1aa5", "scanner": "scanner-primary", "fingerprint": "3364a0cbf3b84560", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-06e455138fea46fe", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/useHeroSnoozeStore.ts:46"}, "properties": {"repobilityId": "74785c0898c6793d", "scanner": "scanner-primary", "fingerprint": "06e455138fea46fe", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-357dc8f8b95ad1cb", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_variant_overrides_v1` in src/store/useVariantStore.ts:39"}, "properties": {"repobilityId": "e3ae2e8813461390", "scanner": "scanner-primary", "fingerprint": "357dc8f8b95ad1cb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-761a57ad992bfaee", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in src/store/useFlagStore.ts:20"}, "properties": {"repobilityId": "030bbf393bb67889", "scanner": "scanner-primary", "fingerprint": "761a57ad992bfaee", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e29ed71c80114378", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/store/useFlagStore.ts:45"}, "properties": {"repobilityId": "6b2d342b5524b538", "scanner": "scanner-primary", "fingerprint": "e29ed71c80114378", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-224c51a3070d5d86", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/useFlagStore.ts:148"}, "properties": {"repobilityId": "2c3f18f0da35da7c", "scanner": "scanner-primary", "fingerprint": "224c51a3070d5d86", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5007fbc2f7464a5d", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_telemetry_pref_v1` in src/store/useTelemetryStore.ts:29"}, "properties": {"repobilityId": "d5be21dbde7d322a", "scanner": "scanner-primary", "fingerprint": "5007fbc2f7464a5d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e0dd812bb9dc200b", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_xp_history_v1` in src/store/useXpHistoryStore.ts:90"}, "properties": {"repobilityId": "8ea9ec4f6eb17450", "scanner": "scanner-primary", "fingerprint": "e0dd812bb9dc200b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cab3efc3be8b5209", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_domain_history_v1` in src/store/useDomainHistoryStore.ts:125"}, "properties": {"repobilityId": "7ed1fb0b132e5256", "scanner": "scanner-primary", "fingerprint": "cab3efc3be8b5209", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-20077495a422e53f", "level": "note", "message": {"text": "Legacy-named symbol `variable_rewards_v1` in src/store/useChestStore.ts:15"}, "properties": {"repobilityId": "96646d377067bd5c", "scanner": "scanner-primary", "fingerprint": "20077495a422e53f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-9031278abe35e3d4", "level": "note", "message": {"text": "Legacy-named symbol `quests_v2` in src/store/useQuestStore.ts:25"}, "properties": {"repobilityId": "6dad2263d349f1e1", "scanner": "scanner-primary", "fingerprint": "9031278abe35e3d4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-fd7d315ace42b279", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/useQuestStore.ts:118"}, "properties": {"repobilityId": "cc60147da014835b", "scanner": "scanner-primary", "fingerprint": "fd7d315ace42b279", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9ccd8d88809a5d7e", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_behaviour_suggestions_v1` in src/store/useBehaviourSuggestionsStore.ts:18"}, "properties": {"repobilityId": "442c822e5ae5ab4f", "scanner": "scanner-primary", "fingerprint": "9ccd8d88809a5d7e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-97da7f9e21813cc6", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_fit_sync_v1` in src/store/useFitSyncStore.ts:47"}, "properties": {"repobilityId": "edefa0c44c2ce0db", "scanner": "scanner-primary", "fingerprint": "97da7f9e21813cc6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b915b73d659e5a51", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_polymath_suggestions_v1` in src/store/usePolymathStore.ts:18"}, "properties": {"repobilityId": "2e105b90089243da", "scanner": "scanner-primary", "fingerprint": "b915b73d659e5a51", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7c70f293f6e02e50", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_annual_review_v1` in src/store/useAnnualReviewStore.ts:34"}, "properties": {"repobilityId": "d5429c45068a2e88", "scanner": "scanner-primary", "fingerprint": "7c70f293f6e02e50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-7059e5c7436e7c18", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_preferences_v1` in src/store/usePreferencesStore.ts:28"}, "properties": {"repobilityId": "ee2f98a25700dcf8", "scanner": "scanner-primary", "fingerprint": "7059e5c7436e7c18", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bc939577d1ff314b", "level": "note", "message": {"text": "Legacy-named symbol `companion_v1` in src/store/useCompanionStore.ts:17"}, "properties": {"repobilityId": "bd88c65b2058da85", "scanner": "scanner-primary", "fingerprint": "bc939577d1ff314b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-bcb1b66699a8c94e", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_trajectory_v1` in src/store/useTrajectoryStore.ts:32"}, "properties": {"repobilityId": "0a496aa13e1f67a0", "scanner": "scanner-primary", "fingerprint": "bcb1b66699a8c94e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-07a7b63dfda5c9d6", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_prompts_v1` in src/store/usePromptStore.ts:66"}, "properties": {"repobilityId": "9abd00af0a9beef8", "scanner": "scanner-primary", "fingerprint": "07a7b63dfda5c9d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-6d734529ef687a50", "level": "note", "message": {"text": "Legacy-named symbol `streak_protection_v1` in src/store/__tests__/useGameStore.streaks.test.ts:47"}, "properties": {"repobilityId": "85ec174ec48212c5", "scanner": "scanner-primary", "fingerprint": "6d734529ef687a50", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-ffe3046ba932302e", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_hero_snooze_v1` in src/store/__tests__/useHeroSnoozeStore.test.ts:65"}, "properties": {"repobilityId": "0a30f2831b24bb68", "scanner": "scanner-primary", "fingerprint": "ffe3046ba932302e", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-89530d978d22d8a1", "level": "note", "message": {"text": "Legacy-named symbol `onboarding_v2` in src/store/__tests__/useFlagStore.test.ts:65"}, "properties": {"repobilityId": "21946da409d276e8", "scanner": "scanner-primary", "fingerprint": "89530d978d22d8a1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4f3daa6c4201ec8a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/explore/rabbitHole.ts:65"}, "properties": {"repobilityId": "08cc4e780d5ea92a", "scanner": "scanner-primary", "fingerprint": "4f3daa6c4201ec8a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-23163564b3215343", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/celebration/presets.ts:61"}, "properties": {"repobilityId": "1ed52a12ba3c9443", "scanner": "scanner-primary", "fingerprint": "23163564b3215343", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cb8bf471db2e5c15", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in src/celebration/__tests__/firstWin.test.ts:2"}, "properties": {"repobilityId": "2be6de7e17eacd4c", "scanner": "scanner-primary", "fingerprint": "cb8bf471db2e5c15", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-db7a7cc51f30657c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/visual-regression.spec.ts:30"}, "properties": {"repobilityId": "be45a16b6e6bd3c2", "scanner": "scanner-primary", "fingerprint": "db7a7cc51f30657c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-421c9d2ffdfc19c2", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/voice-assistant.spec.ts:12"}, "properties": {"repobilityId": "fee11dfbf198282a", "scanner": "scanner-primary", "fingerprint": "421c9d2ffdfc19c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2de8ea1aa974bf7f", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/smoke.spec.ts:127"}, "properties": {"repobilityId": "310fba87ee67d332", "scanner": "scanner-primary", "fingerprint": "2de8ea1aa974bf7f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c4e283969c647c17", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/today-fully-loaded.spec.ts:27"}, "properties": {"repobilityId": "d8b3d44b384feaad", "scanner": "scanner-primary", "fingerprint": "c4e283969c647c17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5f51ccb6861cbbeb", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/cuj-staging.spec.ts:68"}, "properties": {"repobilityId": "5c8e9dd73df7aea7", "scanner": "scanner-primary", "fingerprint": "5f51ccb6861cbbeb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-4bc1d6cc8c369577", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/cuj-staging.spec.ts:113"}, "properties": {"repobilityId": "fa72e08da2b8f3c6", "scanner": "scanner-primary", "fingerprint": "4bc1d6cc8c369577", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0a8dd3162641243", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/today-answer-first.spec.ts:2"}, "properties": {"repobilityId": "a765d1c346fad880", "scanner": "scanner-primary", "fingerprint": "b0a8dd3162641243", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b36f800acf43f8d5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 e2e/today-answer-first.spec.ts:16"}, "properties": {"repobilityId": "f06dae70e304c552", "scanner": "scanner-primary", "fingerprint": "b36f800acf43f8d5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7854cd6e814ab85d", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/health-logging.spec.ts:4"}, "properties": {"repobilityId": "660619c3f7598e7a", "scanner": "scanner-primary", "fingerprint": "7854cd6e814ab85d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-d3a189c4b1412841", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_preferences_v1` in e2e/helpers.ts:94"}, "properties": {"repobilityId": "cbf95ca7cbc2e355", "scanner": "scanner-primary", "fingerprint": "d3a189c4b1412841", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cff6ad400a739298", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/helpers.ts:208"}, "properties": {"repobilityId": "c6f7c8abf0f6a127", "scanner": "scanner-primary", "fingerprint": "cff6ad400a739298", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0b083780a19b5110", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/goals-task-complete.spec.ts:4"}, "properties": {"repobilityId": "d9e11ada0afb85ea", "scanner": "scanner-primary", "fingerprint": "0b083780a19b5110", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58ac91f0b2b01929", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/career-strategy.spec.ts:11"}, "properties": {"repobilityId": "d23c22605b8f4100", "scanner": "scanner-primary", "fingerprint": "58ac91f0b2b01929", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-da5965d1080a04cf", "level": "none", "message": {"text": "Commented-code block (9 lines) in e2e/career-strategy.spec.ts:44"}, "properties": {"repobilityId": "5de0d254f05b3c19", "scanner": "scanner-primary", "fingerprint": "da5965d1080a04cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4624ff30871c14b5", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/sweep-ephemeral.mjs:3"}, "properties": {"repobilityId": "27f6e94d4c0b56ff", "scanner": "scanner-primary", "fingerprint": "4624ff30871c14b5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf817f49820a14c2", "level": "note", "message": {"text": "Legacy-named symbol `lifeos_domain_history_v1` in e2e/seedTestUser.ts:68"}, "properties": {"repobilityId": "74ede9b380cd0990", "scanner": "scanner-primary", "fingerprint": "bf817f49820a14c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9d25e72b29a512d", "level": "note", "message": {"text": "Legacy-named symbol `module_hierarchy_v1` in e2e/module-hierarchy.spec.ts:2"}, "properties": {"repobilityId": "888d8f193e2eb7ec", "scanner": "scanner-primary", "fingerprint": "e9d25e72b29a512d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-44584b7e810c3447", "level": "none", "message": {"text": "Commented-code block (6 lines) in e2e/module-hierarchy.spec.ts:228"}, "properties": {"repobilityId": "59784430ed1a3343", "scanner": "scanner-primary", "fingerprint": "44584b7e810c3447", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aba9a5d73bd26e24", "level": "note", "message": {"text": "Legacy-named symbol `today_answer_first_v1` in e2e/routine-completion-modules.spec.ts:51"}, "properties": {"repobilityId": "5860a898dada6026", "scanner": "scanner-primary", "fingerprint": "aba9a5d73bd26e24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-97ab17e5a27573de", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/sync-cross-device.spec.ts:34"}, "properties": {"repobilityId": "27c1938f3610bfbe", "scanner": "scanner-primary", "fingerprint": "97ab17e5a27573de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5da6a55a51f9ca31", "level": "note", "message": {"text": "Legacy-named symbol `cold_start_v1` in e2e/cold-start.spec.ts:2"}, "properties": {"repobilityId": "78d95a5d61df85e6", "scanner": "scanner-primary", "fingerprint": "5da6a55a51f9ca31", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-5566d7161e85a6c5", "level": "none", "message": {"text": "Commented-code block (10 lines) in e2e/cold-start.spec.ts:172"}, "properties": {"repobilityId": "ff580b5d07ea2461", "scanner": "scanner-primary", "fingerprint": "5566d7161e85a6c5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62b5f62439764eff", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/ink-structural.spec.ts:79"}, "properties": {"repobilityId": "a3a99db74bce86f3", "scanner": "scanner-primary", "fingerprint": "62b5f62439764eff", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f632438e580e018e", "level": "none", "message": {"text": "Commented-code block (5 lines) in e2e/auth.setup.ts:7"}, "properties": {"repobilityId": "d3be93a75d9539ec", "scanner": "scanner-primary", "fingerprint": "f632438e580e018e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d30f85c43b86dcf0", "level": "note", "message": {"text": "27 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "4816db1c74a26e4a", "scanner": "scanner-primary", "fingerprint": "d30f85c43b86dcf0", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}