{"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-5f76d4b329deb25d", "name": "Possibly dead Python function: draw_page_chrome", "shortDescription": {"text": "Possibly dead Python function: draw_page_chrome"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-7fcdc9e0d7a19cce", "name": "Possibly dead Python function: draw_cover", "shortDescription": {"text": "Possibly dead Python function: draw_cover"}, "fullDescription": {"text": "No callers detected by AST scan in this repo. Could be exported for external callers or a framework handler."}, "properties": {"scanner": "scanner-primary", "layer": "software", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0ae4d10edfc72c0c", "name": "Stray `console.log` in TS/JS \u2014 scripts/migratePhotoCache.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migratePhotoCache.js:50"}, "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-757c3b272cedc119", "name": "Stray `console.log` in TS/JS \u2014 scripts/fixStoragePhotoTokens.js:79", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fixStoragePhotoTokens.js:79"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-028586a56474f1da", "name": "Stray `console.log` in TS/JS \u2014 scripts/scrubEmbeddedAuthorPII.js:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrubEmbeddedAuthorPII.js:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eb33f44db75dc66f", "name": "Stray `console.log` in TS/JS \u2014 scripts/deletePlan.js:45", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deletePlan.js:45"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-753d57a6ff129037", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrateFriendRequestIds.js:44", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrateFriendRequestIds.js:44"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c5ce68c3584ad7bb", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedPlans.js:736", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlans.js:736"}, "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-9d2dce8ab18f93c1", "name": "Stray `console.log` in TS/JS \u2014 scripts/addOnePlan.js:138", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/addOnePlan.js:138"}, "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-49ee52ea0532636d", "name": "Stray `console.log` in TS/JS \u2014 scripts/resetPlans.js:43", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resetPlans.js:43"}, "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-977a80f746320798", "name": "Stray `console.log` in TS/JS \u2014 scripts/nukeAllPlans.js:57", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nukeAllPlans.js:57"}, "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-f295216f3f1ba1ba", "name": "Stray `console.log` in TS/JS \u2014 scripts/rotatePhotoUrls.js:89", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rotatePhotoUrls.js:89"}, "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-5b35a1570e8aeeaf", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansV2.js:774", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansV2.js:774"}, "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-9f82b5bf4595ccca", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch2.js:833", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch2.js:833"}, "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-3768b8e516efeb03", "name": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch1.js:815", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch1.js:815"}, "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-900f00bfe2034219", "name": "Stray `console.log` in TS/JS \u2014 scripts/migrateLegacyPlans.js:105", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrateLegacyPlans.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-4fb6e1e2dfc25393", "name": "Stray `console.log` in TS/JS \u2014 scripts/migratePlanCounters.js:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migratePlanCounters.js:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1685985bc047f2e2", "name": "Stray `console.log` in TS/JS \u2014 scripts/rename-proof-user.js:37", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-proof-user.js:37"}, "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-1df33ee684712426", "name": "React Flow <MiniMap> without dark background \u2014 src/components/CoPlanDetailsConfirmedCard.web.tsx:345", "shortDescription": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/CoPlanDetailsConfirmedCard.web.tsx:345"}, "fullDescription": {"text": "A bare <MiniMap> renders with the vendor's white default in dark themes. Wrap the canvas in a class that overrides `.react-flow__minimap` background, or pass an explicit `style`/`maskColor`/`bgColor`.\n\nWhy: P1 in CHECKLIST.md \u2014 vendor defaults bleed light through.\nRule id: fq.minimap.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f425b40ea7a0ac07", "name": "Stray `console.log` in TS/JS \u2014 src/components/ProofCamera/useProofCamera.tsx:34", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/components/ProofCamera/useProofCamera.tsx:34"}, "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-697101d46d0e1101", "name": "Stray `console.log` in TS/JS \u2014 src/store/coPlanStore.ts:1441", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/store/coPlanStore.ts:1441"}, "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-4fb1655d38c65d09", "name": "TODO/FIXME marker in shipping code \u2014 src/constants/suggestions.ts:226", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/constants/suggestions.ts:226"}, "fullDescription": {"text": "Track in /reviews or /issues, not as a code comment that rots.\n\nWhy: Drift control \u2014 shouldn't be the same as Quality TODO scanner.\nRule id: fq.todo-marker"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-54b2b25e581fe450", "name": "Insecure pattern 'node_child_process' in scripts/lint-ratchet.mjs:20", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/lint-ratchet.mjs:20"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-84fa57371ed9c628", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/utils/avatarMapOverlay.web.ts:43", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/utils/avatarMapOverlay.web.ts:43"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a86df7ca1b1ffac5", "name": "Insecure pattern 'direct_innerhtml_assignment' in src/screens/DoItNowScreen.web.tsx:148", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/screens/DoItNowScreen.web.tsx:148"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-204041f4707a41c5", "name": "Very large file: scripts/seedPlansV2.js (934 lines)", "shortDescription": {"text": "Very large file: scripts/seedPlansV2.js (934 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-0a6fbeb14aabb5fb", "name": "Very large file: scripts/seedPlansParisBatch2.js (967 lines)", "shortDescription": {"text": "Very large file: scripts/seedPlansParisBatch2.js (967 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-c706318670ef998b", "name": "Very large file: scripts/seedPlansParisBatch1.js (954 lines)", "shortDescription": {"text": "Very large file: scripts/seedPlansParisBatch1.js (954 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-17965115f6060a0c", "name": "Very large file: src/screens/CoPlanPublishScreen.tsx (1462 lines)", "shortDescription": {"text": "Very large file: src/screens/CoPlanPublishScreen.tsx (1462 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-d797bcce74d0e4ed", "name": "Very large file: src/screens/DoItNowScreen.tsx (1338 lines)", "shortDescription": {"text": "Very large file: src/screens/DoItNowScreen.tsx (1338 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-5cb38ffcd7db33d1", "name": "Very large file: src/screens/FriendsMapView.tsx (1325 lines)", "shortDescription": {"text": "Very large file: src/screens/FriendsMapView.tsx (1325 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-be332ec9697ce359", "name": "Very large file: src/screens/CreateScreen.tsx (3350 lines)", "shortDescription": {"text": "Very large file: src/screens/CreateScreen.tsx (3350 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-a8332d786ffb0646", "name": "Very large file: src/screens/ExploreScreen.tsx (2238 lines)", "shortDescription": {"text": "Very large file: src/screens/ExploreScreen.tsx (2238 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-39779a2d97143bac", "name": "Very large file: src/screens/FeedScreen.tsx (1448 lines)", "shortDescription": {"text": "Very large file: src/screens/FeedScreen.tsx (1448 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-e948a316d94f9ffc", "name": "Very large file: src/screens/PlanDetailModal.tsx (2001 lines)", "shortDescription": {"text": "Very large file: src/screens/PlanDetailModal.tsx (2001 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-8b1d8cbce6a3e9be", "name": "Very large file: src/screens/ConversationScreen.tsx (4056 lines)", "shortDescription": {"text": "Very large file: src/screens/ConversationScreen.tsx (4056 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-1a95d10c4e6c4339", "name": "Very large file: src/screens/DoItNowScreen.web.tsx (1514 lines)", "shortDescription": {"text": "Very large file: src/screens/DoItNowScreen.web.tsx (1514 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-590637c2b315ac2b", "name": "Very large file: src/screens/OrganizeScreen.tsx (1529 lines)", "shortDescription": {"text": "Very large file: src/screens/OrganizeScreen.tsx (1529 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-380104dcb5457599", "name": "Very large file: src/screens/createScreen/styles.ts (1973 lines)", "shortDescription": {"text": "Very large file: src/screens/createScreen/styles.ts (1973 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-fe9bf5e9cd0035d5", "name": "Very large file: src/components/ImmersiveCard.tsx (3101 lines)", "shortDescription": {"text": "Very large file: src/components/ImmersiveCard.tsx (3101 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-3b3e8511126e7caa", "name": "Very large file: src/i18n/es.ts (1475 lines)", "shortDescription": {"text": "Very large file: src/i18n/es.ts (1475 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-c01ad92c38141c9a", "name": "Very large file: src/i18n/en.ts (1477 lines)", "shortDescription": {"text": "Very large file: src/i18n/en.ts (1477 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-139f8a45febe3334", "name": "Very large file: src/i18n/fr.ts (1497 lines)", "shortDescription": {"text": "Very large file: src/i18n/fr.ts (1497 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-412dbef102b43d60", "name": "Very large file: src/store/coPlanStore.ts (1631 lines)", "shortDescription": {"text": "Very large file: src/store/coPlanStore.ts (1631 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-b1f6c5c2ae7a503f", "name": "Very large file: src/services/plansService.ts (1363 lines)", "shortDescription": {"text": "Very large file: src/services/plansService.ts (1363 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-e1978dc7791ad06d", "name": "Very large file: src/services/chatService.ts (1338 lines)", "shortDescription": {"text": "Very large file: src/services/chatService.ts (1338 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-6893a6c8b0861585", "name": "Very low test-to-source ratio", "shortDescription": {"text": "Very low test-to-source ratio"}, "fullDescription": {"text": "1 test file(s) for 347 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "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-01f96f71d9907a8c", "name": "README lacks setup or run instructions", "shortDescription": {"text": "README lacks setup or run instructions"}, "fullDescription": {"text": "A README exists, but it does not contain common install/setup/run markers. This matches a frequent generated-code pattern: UI is present, operational handoff is thin."}, "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 207 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 101 placeholder/mock markers across 56 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, operator-readme. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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, operator-readme. 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-47dc746bf1d6921d", "name": "Commented-code block (5 lines) in app.config.js:26", "shortDescription": {"text": "Commented-code block (5 lines) in app.config.js:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d4e6988255899588", "name": "Commented-code block (5 lines) in eslint.config.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in eslint.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-924c8bf0940a5d3a", "name": "Commented-code block (7 lines) in App.tsx:23", "shortDescription": {"text": "Commented-code block (7 lines) in App.tsx:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-483d2c4b57387a7f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/addOnePlan.js:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/addOnePlan.js:68"}, "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-b80a0d1017eca9d7", "name": "Commented-code block (9 lines) in scripts/seedPlansV2.js:141", "shortDescription": {"text": "Commented-code block (9 lines) in scripts/seedPlansV2.js:141"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-583cab713b7e72c3", "name": "Commented-code block (5 lines) in scripts/seedPlansParisBatch1.js:26", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seedPlansParisBatch1.js:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2869b9fa48fdec3c", "name": "Commented-code block (5 lines) in scripts/lib/photoCache.js:42", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/lib/photoCache.js:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9881a82dfdf03393", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/photoCache.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/photoCache.js:28"}, "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-add11cd50bc22e7d", "name": "Commented-code block (5 lines) in src/utils/contextEngine.ts:156", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/contextEngine.ts:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a2cd157bbb1afa33", "name": "Commented-code block (6 lines) in src/utils/placeDefaults.ts:244", "shortDescription": {"text": "Commented-code block (6 lines) in src/utils/placeDefaults.ts:244"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b10df2d898c18c23", "name": "Commented-code block (6 lines) in src/utils/coPlanConflicts.ts:72", "shortDescription": {"text": "Commented-code block (6 lines) in src/utils/coPlanConflicts.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-d3e5399c16e588e7", "name": "Commented-code block (8 lines) in src/utils/pickImage.ts:207", "shortDescription": {"text": "Commented-code block (8 lines) in src/utils/pickImage.ts:207"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d789c8140449931", "name": "Commented-code block (5 lines) in src/utils/feedRanking.ts:381", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/feedRanking.ts:381"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07838bc2250f4965", "name": "Commented-code block (5 lines) in src/utils/sanitize.ts:60", "shortDescription": {"text": "Commented-code block (5 lines) in src/utils/sanitize.ts:60"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5a25eeb53817331f", "name": "Commented-code block (5 lines) in src/types/index.ts:233", "shortDescription": {"text": "Commented-code block (5 lines) in src/types/index.ts:233"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0c6de32d4b2ad75", "name": "Legacy-named symbol `saves_empty_todo_title_v2` in src/screens/SavesScreen.tsx:271", "shortDescription": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/screens/SavesScreen.tsx:271"}, "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-c2ad1395ef65ba22", "name": "Commented-code block (6 lines) in src/screens/SavesScreen.tsx:410", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/SavesScreen.tsx:410"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0f51dce65d44770", "name": "Commented-code block (6 lines) in src/screens/CoPlanPublishScreen.tsx:166", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/CoPlanPublishScreen.tsx:166"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d13fc8bd61deaddd", "name": "Commented-code block (6 lines) in src/screens/DoItNowScreen.tsx:40", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/DoItNowScreen.tsx:40"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e70a01504cffde6d", "name": "Commented-code block (5 lines) in src/screens/ProfileScreen.tsx:106", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/ProfileScreen.tsx:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0a66785ccf8e3b82", "name": "Commented-code block (5 lines) in src/screens/WaitingRoomScreen.tsx:77", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/WaitingRoomScreen.tsx:77"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4823b04017aa9f75", "name": "Commented-code block (6 lines) in src/screens/FriendsMapView.tsx:72", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/FriendsMapView.tsx: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-7dff42310a5b439a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FriendsMapView.tsx:448", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FriendsMapView.tsx:448"}, "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-61473c80446a7eb8", "name": "Commented-code block (8 lines) in src/screens/CoPlanWorkspaceScreen.tsx:76", "shortDescription": {"text": "Commented-code block (8 lines) in src/screens/CoPlanWorkspaceScreen.tsx:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-55c691acd4f39e04", "name": "Commented-code block (6 lines) in src/screens/LoginScreen.tsx:128", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/LoginScreen.tsx:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-470ff3ef6f6c1490", "name": "Commented-code block (7 lines) in src/screens/CreateScreen.tsx:163", "shortDescription": {"text": "Commented-code block (7 lines) in src/screens/CreateScreen.tsx:163"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07dc302a4f57aa83", "name": "Commented-code block (6 lines) in src/screens/ExploreScreen.tsx:57", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/ExploreScreen.tsx: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-b4fe011db371e337", "name": "Commented-code block (5 lines) in src/screens/FeedScreen.tsx:128", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/FeedScreen.tsx:128"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbd32684ed9599a7", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FeedScreen.tsx:506", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FeedScreen.tsx:506"}, "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-ce3fbc05e3c5d28d", "name": "Commented-code block (5 lines) in src/screens/NotificationsScreen.tsx:101", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/NotificationsScreen.tsx:101"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-debd6e0ba75a2280", "name": "Commented-code block (8 lines) in src/screens/CoPlanWizardScreen.tsx:707", "shortDescription": {"text": "Commented-code block (8 lines) in src/screens/CoPlanWizardScreen.tsx:707"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-39194747d66e4f39", "name": "Commented-code block (8 lines) in src/screens/PlanDetailModal.tsx:117", "shortDescription": {"text": "Commented-code block (8 lines) in src/screens/PlanDetailModal.tsx:117"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ce62a014d9aab162", "name": "Commented-code block (5 lines) in src/screens/DoItNowCompleteScreen.tsx:103", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/DoItNowCompleteScreen.tsx:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9a70815a86b143a3", "name": "Commented-code block (5 lines) in src/screens/OrganizeCompleteScreen.tsx:433", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/OrganizeCompleteScreen.tsx:433"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-93cd53a799185dab", "name": "Commented-code block (5 lines) in src/screens/EditProfileScreen.tsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/EditProfileScreen.tsx:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e10c117cc1015e8f", "name": "Commented-code block (8 lines) in src/screens/ChatListScreen.tsx:203", "shortDescription": {"text": "Commented-code block (8 lines) in src/screens/ChatListScreen.tsx:203"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-307ebbe758b121f8", "name": "Commented-code block (10 lines) in src/screens/ConversationScreen.tsx:118", "shortDescription": {"text": "Commented-code block (10 lines) in src/screens/ConversationScreen.tsx: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-0dd302707d7453dd", "name": "Commented-code block (7 lines) in src/screens/DoItNowScreen.web.tsx:30", "shortDescription": {"text": "Commented-code block (7 lines) in src/screens/DoItNowScreen.web.tsx:30"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-702ab9601656d650", "name": "Commented-code block (7 lines) in src/screens/OnboardingComparisonScreen.tsx:68", "shortDescription": {"text": "Commented-code block (7 lines) in src/screens/OnboardingComparisonScreen.tsx:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-756e8ccd9568a964", "name": "Commented-code block (5 lines) in src/screens/UserInfoScreen.tsx:91", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/UserInfoScreen.tsx:91"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f9b9fd70199b544", "name": "Commented-code block (6 lines) in src/screens/SetupProfileScreen.tsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/screens/SetupProfileScreen.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-90c5de50732bf66e", "name": "Commented-code block (7 lines) in src/screens/OnboardingCityScreen.tsx:55", "shortDescription": {"text": "Commented-code block (7 lines) in src/screens/OnboardingCityScreen.tsx:55"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7baf7eb9dbbff8e4", "name": "Legacy-named symbol `organize_import_subtitle_v2` in src/screens/OrganizeScreen.tsx:920", "shortDescription": {"text": "Legacy-named symbol `organize_import_subtitle_v2` in src/screens/OrganizeScreen.tsx:920"}, "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-f7ccefb835963c37", "name": "Commented-code block (5 lines) in src/screens/OrganizeScreen.tsx:159", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/OrganizeScreen.tsx:159"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-97f55862eaf717d5", "name": "Commented-code block (5 lines) in src/screens/createScreen/styles.ts:107", "shortDescription": {"text": "Commented-code block (5 lines) in src/screens/createScreen/styles.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-4a15f71d5dede27d", "name": "Commented-code block (7 lines) in src/screens/create/AddPlaceModal.tsx:197", "shortDescription": {"text": "Commented-code block (7 lines) in src/screens/create/AddPlaceModal.tsx:197"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0dd155044557c9e", "name": "Commented-code block (6 lines) in src/components/PricePickerSheet.tsx:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/PricePickerSheet.tsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5488c6f9a349d6f0", "name": "Commented-code block (7 lines) in src/components/SpotCard.tsx:1007", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/SpotCard.tsx:1007"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4bcf4a2f57b759a2", "name": "Commented-code block (8 lines) in src/components/CoPlanPlacesSection.tsx:95", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/CoPlanPlacesSection.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-465283d59639caf7", "name": "Commented-code block (6 lines) in src/components/ImmersiveCard.tsx:221", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/ImmersiveCard.tsx:221"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b3e90c28c737cc84", "name": "Commented-code block (5 lines) in src/components/EmptyState.tsx:114", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/EmptyState.tsx:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cda4b3c66c7f1aa", "name": "Legacy-named symbol `valueOld` in src/components/CoPlanPlaceFieldCard.tsx:145", "shortDescription": {"text": "Legacy-named symbol `valueOld` in src/components/CoPlanPlaceFieldCard.tsx:145"}, "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-167d4195624d5a7d", "name": "Commented-code block (6 lines) in src/components/PlanMapModal.tsx:45", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/PlanMapModal.tsx: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-63f27264b2331c79", "name": "Commented-code block (5 lines) in src/components/CoPlanStatusBar.tsx:241", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/CoPlanStatusBar.tsx:241"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8c085a2a36a60d6b", "name": "Commented-code block (7 lines) in src/components/CreateActionSheet.tsx:207", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/CreateActionSheet.tsx:207"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f06bd5a34d344c60", "name": "Commented-code block (5 lines) in src/components/CoPlanDetailsConfirmedCard.tsx:120", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/CoPlanDetailsConfirmedCard.tsx:120"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8519bd78c50c2a9a", "name": "Commented-code block (5 lines) in src/components/CoPlanWorkspaceHero.tsx:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/CoPlanWorkspaceHero.tsx: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-2d340c0e666a1915", "name": "Legacy-named symbol `dateOld` in src/components/CoPlanDateChangeCard.tsx:118", "shortDescription": {"text": "Legacy-named symbol `dateOld` in src/components/CoPlanDateChangeCard.tsx:118"}, "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-98491693c5f9364e", "name": "Commented-code block (10 lines) in src/components/ProofSurveyModal.tsx:80", "shortDescription": {"text": "Commented-code block (10 lines) in src/components/ProofSurveyModal.tsx:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b7707f46eed89f9", "name": "Commented-code block (6 lines) in src/components/SharePlanSheet.tsx:692", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/SharePlanSheet.tsx:692"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-503fc700ed162dd2", "name": "Commented-code block (8 lines) in src/components/CoPlanDetailsView.tsx:84", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/CoPlanDetailsView.tsx:84"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be54d5c9a6f18d97", "name": "Commented-code block (6 lines) in src/components/CoPlanRouteSection.tsx:53", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/CoPlanRouteSection.tsx: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-3081c1f738307971", "name": "Commented-code block (5 lines) in src/components/PlaceWidgetsCarousel.tsx:66", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/PlaceWidgetsCarousel.tsx:66"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-02bc6408c115859b", "name": "Commented-code block (9 lines) in src/components/GroupPlanSheet.tsx:50", "shortDescription": {"text": "Commented-code block (9 lines) in src/components/GroupPlanSheet.tsx:50"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-84baca3e5422f439", "name": "Legacy-named symbol `needsLegacy` in src/components/CoPlanPlacesCard.tsx:52", "shortDescription": {"text": "Legacy-named symbol `needsLegacy` in src/components/CoPlanPlacesCard.tsx:52"}, "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-3888c3d34f07ba82", "name": "Commented-code block (5 lines) in src/components/Avatar.tsx:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/Avatar.tsx:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-023e2ec858f86562", "name": "Commented-code block (5 lines) in src/components/SaveConfirmationToast.tsx:46", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/SaveConfirmationToast.tsx:46"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-311b4a1fd10fb7d6", "name": "Commented-code block (7 lines) in src/components/plan/AudioTipPlayer.tsx:109", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/plan/AudioTipPlayer.tsx: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-aead662daf54953c", "name": "Commented-code block (6 lines) in src/components/plan/PlanMapSection.tsx:125", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/plan/PlanMapSection.tsx:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5d91228afb86bb2a", "name": "Commented-code block (5 lines) in src/components/plan/PlanPageBackdrop.tsx:32", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/plan/PlanPageBackdrop.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-5037804a32708516", "name": "Commented-code block (5 lines) in src/components/profile/MixedPlanGrid.tsx:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/profile/MixedPlanGrid.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-74c12083bc24678b", "name": "Commented-code block (5 lines) in src/components/onboarding/OnboardingHero.tsx:106", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/onboarding/OnboardingHero.tsx:106"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d76ad03b0af76f4", "name": "Commented-code block (8 lines) in src/components/create/SmartImage.tsx:52", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/create/SmartImage.tsx:52"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16d0ca4dac134d34", "name": "Commented-code block (5 lines) in src/components/create/EditorialPlate.tsx:732", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/create/EditorialPlate.tsx:732"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56275fe680ca28c9", "name": "Commented-code block (5 lines) in src/components/glass/GlassPillButton.tsx:47", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/glass/GlassPillButton.tsx:47"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8a428490f8aa969", "name": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/es.ts:801", "shortDescription": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/es.ts:801"}, "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-486119c1be3c15c2", "name": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/en.ts:803", "shortDescription": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/en.ts:803"}, "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-cafe23f9afa9c075", "name": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/fr.ts:819", "shortDescription": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/fr.ts:819"}, "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-e2bf70538e9720b4", "name": "Commented-code block (5 lines) in src/store/onboardingStore.ts:133", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/onboardingStore.ts:133"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50321f3376df30c9", "name": "Commented-code block (5 lines) in src/store/feedStore.ts:57", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/feedStore.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-cbad5ad66be61cf8", "name": "Commented-code block (5 lines) in src/store/coPlanStore.ts:227", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/coPlanStore.ts:227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-442de663c9f32951", "name": "Commented-code block (5 lines) in src/store/savesStore.ts:63", "shortDescription": {"text": "Commented-code block (5 lines) in src/store/savesStore.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1a2ca3c4d1a810ba", "name": "Commented-code block (9 lines) in src/store/collectionsStore.ts:29", "shortDescription": {"text": "Commented-code block (9 lines) in src/store/collectionsStore.ts:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1bc0efa6836cc1b2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/collectionsStore.ts:36", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/collectionsStore.ts:36"}, "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-f442657158354828", "name": "Commented-code block (9 lines) in src/store/authStore.ts:63", "shortDescription": {"text": "Commented-code block (9 lines) in src/store/authStore.ts:63"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e0391a4bfebaf07e", "name": "Commented-code block (5 lines) in src/navigation/BottomTabNavigator.tsx:126", "shortDescription": {"text": "Commented-code block (5 lines) in src/navigation/BottomTabNavigator.tsx:126"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-43f5c7f788c95cbf", "name": "Commented-code block (5 lines) in src/navigation/RootNavigator.tsx:81", "shortDescription": {"text": "Commented-code block (5 lines) in src/navigation/RootNavigator.tsx:81"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-83dfe75e4b12d833", "name": "Commented-code block (5 lines) in src/constants/colors.ts:114", "shortDescription": {"text": "Commented-code block (5 lines) in src/constants/colors.ts:114"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f7971eac2df1258", "name": "Commented-code block (5 lines) in src/constants/suggestions.ts:208", "shortDescription": {"text": "Commented-code block (5 lines) in src/constants/suggestions.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-2c73b9bb60f6adf4", "name": "Commented-code block (5 lines) in src/services/firebaseAuth.ts:146", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/firebaseAuth.ts:146"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-147ce137f39c43b3", "name": "Commented-code block (5 lines) in src/services/plansService.ts:295", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/plansService.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49724bdcfa9b2601", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/directionsService.ts:80", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/directionsService.ts:80"}, "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-56bd183f4c308dba", "name": "Commented-code block (5 lines) in src/services/mockApi.ts:248", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/mockApi.ts:248"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9997e69390fb4fc9", "name": "Commented-code block (5 lines) in src/services/planTimelineService.ts:121", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/planTimelineService.ts:121"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-42085a1307d55475", "name": "Commented-code block (5 lines) in src/services/googlePlacesService.ts:201", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/googlePlacesService.ts:201"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-07e07572cfa9fd26", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/googlePlacesService.ts:160", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/googlePlacesService.ts:160"}, "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-1adbc196a0df1828", "name": "Commented-code block (6 lines) in src/services/firebaseConfig.ts:3", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/firebaseConfig.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-ed79b01f658b64cd", "name": "Commented-code block (5 lines) in src/services/trendingService.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/trendingService.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ac25e088c08bb32e", "name": "Commented-code block (5 lines) in src/services/notificationsService.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/notificationsService.ts: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-2302df5617c13fa5", "name": "Commented-code block (5 lines) in src/services/planDraftService.ts:42", "shortDescription": {"text": "Commented-code block (5 lines) in src/services/planDraftService.ts:42"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d39cb195d67fbee3", "name": "Commented-code block (6 lines) in src/services/chatService.ts:23", "shortDescription": {"text": "Commented-code block (6 lines) in src/services/chatService.ts:23"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-889ca1b58b5872dd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 functions/src/lib/photoCache.ts:50", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/src/lib/photoCache.ts:50"}, "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-8e047ab7af03962f", "name": "7 env vars used in code but missing from .env.example", "shortDescription": {"text": "7 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `EXPO_PUBLIC_GOOGLE_ANDROID_CLIENT_ID`, `EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID`, `EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID`, `GOOGLE_APPLICATION_CREDENTIALS`, `NODE_ENV`, `PROOF_EMAIL`, `PROOF_PASSWORD`. 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/24688"}, "properties": {"repository": "boulderdash2018/proof-app", "repoUrl": "https://github.com/boulderdash2018/proof-app", "branch": "main"}, "results": [{"ruleId": "scanner-5f76d4b329deb25d", "level": "note", "message": {"text": "Possibly dead Python function: draw_page_chrome"}, "properties": {"repobilityId": "31dc943db64875bc", "scanner": "scanner-primary", "fingerprint": "5f76d4b329deb25d", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-audit-pdf.py:452"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-7fcdc9e0d7a19cce", "level": "note", "message": {"text": "Possibly dead Python function: draw_cover"}, "properties": {"repobilityId": "fa9abf406242bd4c", "scanner": "scanner-primary", "fingerprint": "7fcdc9e0d7a19cce", "layer": "software", "severity": "low", "confidence": 1.0, "tags": ["dead-code"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/build-audit-pdf.py:486"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-0ae4d10edfc72c0c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migratePhotoCache.js:50"}, "properties": {"repobilityId": "6a0426385ba04de7", "scanner": "scanner-primary", "fingerprint": "0ae4d10edfc72c0c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-757c3b272cedc119", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/fixStoragePhotoTokens.js:79"}, "properties": {"repobilityId": "e70f5665cb96665d", "scanner": "scanner-primary", "fingerprint": "757c3b272cedc119", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-028586a56474f1da", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/scrubEmbeddedAuthorPII.js:42"}, "properties": {"repobilityId": "917b0980a01124e7", "scanner": "scanner-primary", "fingerprint": "028586a56474f1da", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-eb33f44db75dc66f", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/deletePlan.js:45"}, "properties": {"repobilityId": "c28dd946cd7e0408", "scanner": "scanner-primary", "fingerprint": "eb33f44db75dc66f", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-753d57a6ff129037", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrateFriendRequestIds.js:44"}, "properties": {"repobilityId": "c83a8d566489de07", "scanner": "scanner-primary", "fingerprint": "753d57a6ff129037", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c5ce68c3584ad7bb", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlans.js:736"}, "properties": {"repobilityId": "baebbf9d7b9df182", "scanner": "scanner-primary", "fingerprint": "c5ce68c3584ad7bb", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9d2dce8ab18f93c1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/addOnePlan.js:138"}, "properties": {"repobilityId": "9482b2ea452ccb6f", "scanner": "scanner-primary", "fingerprint": "9d2dce8ab18f93c1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-49ee52ea0532636d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/resetPlans.js:43"}, "properties": {"repobilityId": "94c245ab535e38d0", "scanner": "scanner-primary", "fingerprint": "49ee52ea0532636d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-977a80f746320798", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/nukeAllPlans.js:57"}, "properties": {"repobilityId": "66f52dc6ffa43885", "scanner": "scanner-primary", "fingerprint": "977a80f746320798", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f295216f3f1ba1ba", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rotatePhotoUrls.js:89"}, "properties": {"repobilityId": "a3568e544cbdb261", "scanner": "scanner-primary", "fingerprint": "f295216f3f1ba1ba", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5b35a1570e8aeeaf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansV2.js:774"}, "properties": {"repobilityId": "49c4305cab1c1bb0", "scanner": "scanner-primary", "fingerprint": "5b35a1570e8aeeaf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9f82b5bf4595ccca", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch2.js:833"}, "properties": {"repobilityId": "8f1d83a39c419d40", "scanner": "scanner-primary", "fingerprint": "9f82b5bf4595ccca", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3768b8e516efeb03", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/seedPlansParisBatch1.js:815"}, "properties": {"repobilityId": "06f320cf623611b9", "scanner": "scanner-primary", "fingerprint": "3768b8e516efeb03", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-900f00bfe2034219", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migrateLegacyPlans.js:105"}, "properties": {"repobilityId": "d8f14b95f03fbc6a", "scanner": "scanner-primary", "fingerprint": "900f00bfe2034219", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fb6e1e2dfc25393", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/migratePlanCounters.js:40"}, "properties": {"repobilityId": "bbef0e23e97d9958", "scanner": "scanner-primary", "fingerprint": "4fb6e1e2dfc25393", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1685985bc047f2e2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/rename-proof-user.js:37"}, "properties": {"repobilityId": "1b1c9e2de53894c3", "scanner": "scanner-primary", "fingerprint": "1685985bc047f2e2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1df33ee684712426", "level": "note", "message": {"text": "React Flow <MiniMap> without dark background \u2014 src/components/CoPlanDetailsConfirmedCard.web.tsx:345"}, "properties": {"repobilityId": "a6421fb8792025ef", "scanner": "scanner-primary", "fingerprint": "1df33ee684712426", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.minimap.no-bg"]}}, {"ruleId": "scanner-f425b40ea7a0ac07", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/components/ProofCamera/useProofCamera.tsx:34"}, "properties": {"repobilityId": "805ab17e1b24a5ad", "scanner": "scanner-primary", "fingerprint": "f425b40ea7a0ac07", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-697101d46d0e1101", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/store/coPlanStore.ts:1441"}, "properties": {"repobilityId": "974fc3158da5b50c", "scanner": "scanner-primary", "fingerprint": "697101d46d0e1101", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4fb1655d38c65d09", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/constants/suggestions.ts:226"}, "properties": {"repobilityId": "326abd3e5c900808", "scanner": "scanner-primary", "fingerprint": "4fb1655d38c65d09", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-54b2b25e581fe450", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/lint-ratchet.mjs:20"}, "properties": {"repobilityId": "9fc47b71601bb626", "scanner": "scanner-primary", "fingerprint": "54b2b25e581fe450", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/lint-ratchet.mjs"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-84fa57371ed9c628", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/utils/avatarMapOverlay.web.ts:43"}, "properties": {"repobilityId": "b267b6303ae55670", "scanner": "scanner-primary", "fingerprint": "84fa57371ed9c628", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/utils/avatarMapOverlay.web.ts"}, "region": {"startLine": 43}}}]}, {"ruleId": "scanner-a86df7ca1b1ffac5", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in src/screens/DoItNowScreen.web.tsx:148"}, "properties": {"repobilityId": "bd571b6571a9336f", "scanner": "scanner-primary", "fingerprint": "a86df7ca1b1ffac5", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/screens/DoItNowScreen.web.tsx"}, "region": {"startLine": 148}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-204041f4707a41c5", "level": "note", "message": {"text": "Very large file: scripts/seedPlansV2.js (934 lines)"}, "properties": {"repobilityId": "3d79fc481d0495af", "scanner": "scanner-primary", "fingerprint": "204041f4707a41c5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-0a6fbeb14aabb5fb", "level": "note", "message": {"text": "Very large file: scripts/seedPlansParisBatch2.js (967 lines)"}, "properties": {"repobilityId": "513524248f6711dc", "scanner": "scanner-primary", "fingerprint": "0a6fbeb14aabb5fb", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c706318670ef998b", "level": "note", "message": {"text": "Very large file: scripts/seedPlansParisBatch1.js (954 lines)"}, "properties": {"repobilityId": "43782306806aedaa", "scanner": "scanner-primary", "fingerprint": "c706318670ef998b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-17965115f6060a0c", "level": "note", "message": {"text": "Very large file: src/screens/CoPlanPublishScreen.tsx (1462 lines)"}, "properties": {"repobilityId": "e97af31d55a04547", "scanner": "scanner-primary", "fingerprint": "17965115f6060a0c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d797bcce74d0e4ed", "level": "note", "message": {"text": "Very large file: src/screens/DoItNowScreen.tsx (1338 lines)"}, "properties": {"repobilityId": "8dad60b0b5432a84", "scanner": "scanner-primary", "fingerprint": "d797bcce74d0e4ed", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5cb38ffcd7db33d1", "level": "note", "message": {"text": "Very large file: src/screens/FriendsMapView.tsx (1325 lines)"}, "properties": {"repobilityId": "61ba0feb94d65dd1", "scanner": "scanner-primary", "fingerprint": "5cb38ffcd7db33d1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-be332ec9697ce359", "level": "note", "message": {"text": "Very large file: src/screens/CreateScreen.tsx (3350 lines)"}, "properties": {"repobilityId": "be4694639881c99a", "scanner": "scanner-primary", "fingerprint": "be332ec9697ce359", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a8332d786ffb0646", "level": "note", "message": {"text": "Very large file: src/screens/ExploreScreen.tsx (2238 lines)"}, "properties": {"repobilityId": "d71e64987b1aed2f", "scanner": "scanner-primary", "fingerprint": "a8332d786ffb0646", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-39779a2d97143bac", "level": "note", "message": {"text": "Very large file: src/screens/FeedScreen.tsx (1448 lines)"}, "properties": {"repobilityId": "35bcc2f7b7519a2a", "scanner": "scanner-primary", "fingerprint": "39779a2d97143bac", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e948a316d94f9ffc", "level": "note", "message": {"text": "Very large file: src/screens/PlanDetailModal.tsx (2001 lines)"}, "properties": {"repobilityId": "23141b9c6b17ae3d", "scanner": "scanner-primary", "fingerprint": "e948a316d94f9ffc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8b1d8cbce6a3e9be", "level": "note", "message": {"text": "Very large file: src/screens/ConversationScreen.tsx (4056 lines)"}, "properties": {"repobilityId": "4a9649f2220ad29c", "scanner": "scanner-primary", "fingerprint": "8b1d8cbce6a3e9be", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1a95d10c4e6c4339", "level": "note", "message": {"text": "Very large file: src/screens/DoItNowScreen.web.tsx (1514 lines)"}, "properties": {"repobilityId": "f018ecbdad12b836", "scanner": "scanner-primary", "fingerprint": "1a95d10c4e6c4339", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-590637c2b315ac2b", "level": "note", "message": {"text": "Very large file: src/screens/OrganizeScreen.tsx (1529 lines)"}, "properties": {"repobilityId": "e43969de18124a52", "scanner": "scanner-primary", "fingerprint": "590637c2b315ac2b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-380104dcb5457599", "level": "note", "message": {"text": "Very large file: src/screens/createScreen/styles.ts (1973 lines)"}, "properties": {"repobilityId": "64ed34265facfd2f", "scanner": "scanner-primary", "fingerprint": "380104dcb5457599", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fe9bf5e9cd0035d5", "level": "note", "message": {"text": "Very large file: src/components/ImmersiveCard.tsx (3101 lines)"}, "properties": {"repobilityId": "8f1fe3dbbff85f40", "scanner": "scanner-primary", "fingerprint": "fe9bf5e9cd0035d5", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b3e8511126e7caa", "level": "note", "message": {"text": "Very large file: src/i18n/es.ts (1475 lines)"}, "properties": {"repobilityId": "bd64f9784bf4ab3e", "scanner": "scanner-primary", "fingerprint": "3b3e8511126e7caa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c01ad92c38141c9a", "level": "note", "message": {"text": "Very large file: src/i18n/en.ts (1477 lines)"}, "properties": {"repobilityId": "392d889308748d8a", "scanner": "scanner-primary", "fingerprint": "c01ad92c38141c9a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-139f8a45febe3334", "level": "note", "message": {"text": "Very large file: src/i18n/fr.ts (1497 lines)"}, "properties": {"repobilityId": "9c25fbc2ef301f70", "scanner": "scanner-primary", "fingerprint": "139f8a45febe3334", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-412dbef102b43d60", "level": "note", "message": {"text": "Very large file: src/store/coPlanStore.ts (1631 lines)"}, "properties": {"repobilityId": "db4d392727a1337b", "scanner": "scanner-primary", "fingerprint": "412dbef102b43d60", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b1f6c5c2ae7a503f", "level": "note", "message": {"text": "Very large file: src/services/plansService.ts (1363 lines)"}, "properties": {"repobilityId": "557a39cdb6d1d549", "scanner": "scanner-primary", "fingerprint": "b1f6c5c2ae7a503f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e1978dc7791ad06d", "level": "note", "message": {"text": "Very large file: src/services/chatService.ts (1338 lines)"}, "properties": {"repobilityId": "656ce144651e55a0", "scanner": "scanner-primary", "fingerprint": "e1978dc7791ad06d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6893a6c8b0861585", "level": "warning", "message": {"text": "Very low test-to-source ratio"}, "properties": {"repobilityId": "54a7de3f06314bf0", "scanner": "scanner-primary", "fingerprint": "6893a6c8b0861585", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["tests", "coverage"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "b02a21d8f9f9d63e", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-01f96f71d9907a8c", "level": "note", "message": {"text": "README lacks setup or run instructions"}, "properties": {"repobilityId": "48cb4609550313fd", "scanner": "scanner-primary", "fingerprint": "01f96f71d9907a8c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["docs", "readme", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "e2412e2d69e10e35", "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": "6b3e1601a375587c", "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": "0f2e37039c5f4189", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "5853bd231144759b", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "5879ef68a78ccdf9", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-47dc746bf1d6921d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app.config.js:26"}, "properties": {"repobilityId": "0d5bce1038f703e1", "scanner": "scanner-primary", "fingerprint": "47dc746bf1d6921d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4e6988255899588", "level": "none", "message": {"text": "Commented-code block (5 lines) in eslint.config.js:3"}, "properties": {"repobilityId": "a74a4bbc263ec367", "scanner": "scanner-primary", "fingerprint": "d4e6988255899588", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-924c8bf0940a5d3a", "level": "none", "message": {"text": "Commented-code block (7 lines) in App.tsx:23"}, "properties": {"repobilityId": "4d5ca9389524d6a7", "scanner": "scanner-primary", "fingerprint": "924c8bf0940a5d3a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-483d2c4b57387a7f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/addOnePlan.js:68"}, "properties": {"repobilityId": "d5b00cb5bee85a60", "scanner": "scanner-primary", "fingerprint": "483d2c4b57387a7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b80a0d1017eca9d7", "level": "none", "message": {"text": "Commented-code block (9 lines) in scripts/seedPlansV2.js:141"}, "properties": {"repobilityId": "b14d8cc68827d43c", "scanner": "scanner-primary", "fingerprint": "b80a0d1017eca9d7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-583cab713b7e72c3", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seedPlansParisBatch1.js:26"}, "properties": {"repobilityId": "84d6fba05537dc4f", "scanner": "scanner-primary", "fingerprint": "583cab713b7e72c3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2869b9fa48fdec3c", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/lib/photoCache.js:42"}, "properties": {"repobilityId": "ac03d84e0479df27", "scanner": "scanner-primary", "fingerprint": "2869b9fa48fdec3c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9881a82dfdf03393", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/lib/photoCache.js:28"}, "properties": {"repobilityId": "c155ceb6614b850b", "scanner": "scanner-primary", "fingerprint": "9881a82dfdf03393", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-add11cd50bc22e7d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/contextEngine.ts:156"}, "properties": {"repobilityId": "5a89b62f7e3c5fde", "scanner": "scanner-primary", "fingerprint": "add11cd50bc22e7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a2cd157bbb1afa33", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/utils/placeDefaults.ts:244"}, "properties": {"repobilityId": "0d2048f2221d9dcc", "scanner": "scanner-primary", "fingerprint": "a2cd157bbb1afa33", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b10df2d898c18c23", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/utils/coPlanConflicts.ts:72"}, "properties": {"repobilityId": "c7f91b9b5903dc28", "scanner": "scanner-primary", "fingerprint": "b10df2d898c18c23", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d3e5399c16e588e7", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/utils/pickImage.ts:207"}, "properties": {"repobilityId": "ecc6828716f9d18f", "scanner": "scanner-primary", "fingerprint": "d3e5399c16e588e7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6d789c8140449931", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/feedRanking.ts:381"}, "properties": {"repobilityId": "abfab56cc1107e6c", "scanner": "scanner-primary", "fingerprint": "6d789c8140449931", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07838bc2250f4965", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/utils/sanitize.ts:60"}, "properties": {"repobilityId": "b8894e79c02641fe", "scanner": "scanner-primary", "fingerprint": "07838bc2250f4965", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5a25eeb53817331f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/types/index.ts:233"}, "properties": {"repobilityId": "821a996e4dcbeffe", "scanner": "scanner-primary", "fingerprint": "5a25eeb53817331f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0c6de32d4b2ad75", "level": "note", "message": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/screens/SavesScreen.tsx:271"}, "properties": {"repobilityId": "b8e5a7ec6e028c8b", "scanner": "scanner-primary", "fingerprint": "d0c6de32d4b2ad75", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-c2ad1395ef65ba22", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/SavesScreen.tsx:410"}, "properties": {"repobilityId": "f6aeb28cc170008d", "scanner": "scanner-primary", "fingerprint": "c2ad1395ef65ba22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0f51dce65d44770", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/CoPlanPublishScreen.tsx:166"}, "properties": {"repobilityId": "5028c2ed46cef1e3", "scanner": "scanner-primary", "fingerprint": "b0f51dce65d44770", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d13fc8bd61deaddd", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/DoItNowScreen.tsx:40"}, "properties": {"repobilityId": "2539eea7af01670c", "scanner": "scanner-primary", "fingerprint": "d13fc8bd61deaddd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e70a01504cffde6d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/ProfileScreen.tsx:106"}, "properties": {"repobilityId": "ac9b0a37d9588d6e", "scanner": "scanner-primary", "fingerprint": "e70a01504cffde6d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0a66785ccf8e3b82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/WaitingRoomScreen.tsx:77"}, "properties": {"repobilityId": "61233616fdde3668", "scanner": "scanner-primary", "fingerprint": "0a66785ccf8e3b82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4823b04017aa9f75", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/FriendsMapView.tsx:72"}, "properties": {"repobilityId": "2afb592d0fe3dcb9", "scanner": "scanner-primary", "fingerprint": "4823b04017aa9f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7dff42310a5b439a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FriendsMapView.tsx:448"}, "properties": {"repobilityId": "57f0c5b7198551a9", "scanner": "scanner-primary", "fingerprint": "7dff42310a5b439a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-61473c80446a7eb8", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/screens/CoPlanWorkspaceScreen.tsx:76"}, "properties": {"repobilityId": "6653f74bf7574637", "scanner": "scanner-primary", "fingerprint": "61473c80446a7eb8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-55c691acd4f39e04", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/LoginScreen.tsx:128"}, "properties": {"repobilityId": "b24aaed32628b82c", "scanner": "scanner-primary", "fingerprint": "55c691acd4f39e04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-470ff3ef6f6c1490", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/screens/CreateScreen.tsx:163"}, "properties": {"repobilityId": "38f03938a88c141b", "scanner": "scanner-primary", "fingerprint": "470ff3ef6f6c1490", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07dc302a4f57aa83", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/ExploreScreen.tsx:57"}, "properties": {"repobilityId": "c12aabfd440f6914", "scanner": "scanner-primary", "fingerprint": "07dc302a4f57aa83", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b4fe011db371e337", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/FeedScreen.tsx:128"}, "properties": {"repobilityId": "e6258fd450834067", "scanner": "scanner-primary", "fingerprint": "b4fe011db371e337", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dbd32684ed9599a7", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/screens/FeedScreen.tsx:506"}, "properties": {"repobilityId": "a785590414ffb5af", "scanner": "scanner-primary", "fingerprint": "dbd32684ed9599a7", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ce3fbc05e3c5d28d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/NotificationsScreen.tsx:101"}, "properties": {"repobilityId": "5b8bd5dee778a9aa", "scanner": "scanner-primary", "fingerprint": "ce3fbc05e3c5d28d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-debd6e0ba75a2280", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/screens/CoPlanWizardScreen.tsx:707"}, "properties": {"repobilityId": "6c09016c025310d4", "scanner": "scanner-primary", "fingerprint": "debd6e0ba75a2280", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-39194747d66e4f39", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/screens/PlanDetailModal.tsx:117"}, "properties": {"repobilityId": "b6303ad10f8f300b", "scanner": "scanner-primary", "fingerprint": "39194747d66e4f39", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ce62a014d9aab162", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/DoItNowCompleteScreen.tsx:103"}, "properties": {"repobilityId": "be0f16e69f9bc34a", "scanner": "scanner-primary", "fingerprint": "ce62a014d9aab162", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9a70815a86b143a3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/OrganizeCompleteScreen.tsx:433"}, "properties": {"repobilityId": "8316676ed24d6ac4", "scanner": "scanner-primary", "fingerprint": "9a70815a86b143a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-93cd53a799185dab", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/EditProfileScreen.tsx:42"}, "properties": {"repobilityId": "63dfe2a2e4d3126a", "scanner": "scanner-primary", "fingerprint": "93cd53a799185dab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e10c117cc1015e8f", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/screens/ChatListScreen.tsx:203"}, "properties": {"repobilityId": "5f293c9b54af8546", "scanner": "scanner-primary", "fingerprint": "e10c117cc1015e8f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-307ebbe758b121f8", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/screens/ConversationScreen.tsx:118"}, "properties": {"repobilityId": "2ca40bd4b383dcad", "scanner": "scanner-primary", "fingerprint": "307ebbe758b121f8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0dd302707d7453dd", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/screens/DoItNowScreen.web.tsx:30"}, "properties": {"repobilityId": "073eda20cc97b88c", "scanner": "scanner-primary", "fingerprint": "0dd302707d7453dd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-702ab9601656d650", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/screens/OnboardingComparisonScreen.tsx:68"}, "properties": {"repobilityId": "5c44696ed992bd8e", "scanner": "scanner-primary", "fingerprint": "702ab9601656d650", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-756e8ccd9568a964", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/UserInfoScreen.tsx:91"}, "properties": {"repobilityId": "d0bfbc482042c2f3", "scanner": "scanner-primary", "fingerprint": "756e8ccd9568a964", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f9b9fd70199b544", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/screens/SetupProfileScreen.tsx:19"}, "properties": {"repobilityId": "af405eb45e75a3b8", "scanner": "scanner-primary", "fingerprint": "4f9b9fd70199b544", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-90c5de50732bf66e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/screens/OnboardingCityScreen.tsx:55"}, "properties": {"repobilityId": "f578f7155df73dd8", "scanner": "scanner-primary", "fingerprint": "90c5de50732bf66e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7baf7eb9dbbff8e4", "level": "note", "message": {"text": "Legacy-named symbol `organize_import_subtitle_v2` in src/screens/OrganizeScreen.tsx:920"}, "properties": {"repobilityId": "8d91a77ff15d30d6", "scanner": "scanner-primary", "fingerprint": "7baf7eb9dbbff8e4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f7ccefb835963c37", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/OrganizeScreen.tsx:159"}, "properties": {"repobilityId": "d18dcabb3397413a", "scanner": "scanner-primary", "fingerprint": "f7ccefb835963c37", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-97f55862eaf717d5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/screens/createScreen/styles.ts:107"}, "properties": {"repobilityId": "973dced0dbca9069", "scanner": "scanner-primary", "fingerprint": "97f55862eaf717d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a15f71d5dede27d", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/screens/create/AddPlaceModal.tsx:197"}, "properties": {"repobilityId": "a484ff458934c274", "scanner": "scanner-primary", "fingerprint": "4a15f71d5dede27d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c0dd155044557c9e", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/PricePickerSheet.tsx:11"}, "properties": {"repobilityId": "f11eee5d3ee76c05", "scanner": "scanner-primary", "fingerprint": "c0dd155044557c9e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5488c6f9a349d6f0", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/SpotCard.tsx:1007"}, "properties": {"repobilityId": "3b4f8b8ca3b7b7ac", "scanner": "scanner-primary", "fingerprint": "5488c6f9a349d6f0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4bcf4a2f57b759a2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/CoPlanPlacesSection.tsx:95"}, "properties": {"repobilityId": "6d2a97da435be195", "scanner": "scanner-primary", "fingerprint": "4bcf4a2f57b759a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-465283d59639caf7", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/ImmersiveCard.tsx:221"}, "properties": {"repobilityId": "36bc0a052df7d8a0", "scanner": "scanner-primary", "fingerprint": "465283d59639caf7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b3e90c28c737cc84", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/EmptyState.tsx:114"}, "properties": {"repobilityId": "48d1ee366ef775d5", "scanner": "scanner-primary", "fingerprint": "b3e90c28c737cc84", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cda4b3c66c7f1aa", "level": "note", "message": {"text": "Legacy-named symbol `valueOld` in src/components/CoPlanPlaceFieldCard.tsx:145"}, "properties": {"repobilityId": "364eb2c8f7d46d4e", "scanner": "scanner-primary", "fingerprint": "3cda4b3c66c7f1aa", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-167d4195624d5a7d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/PlanMapModal.tsx:45"}, "properties": {"repobilityId": "3756c7275a696225", "scanner": "scanner-primary", "fingerprint": "167d4195624d5a7d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-63f27264b2331c79", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/CoPlanStatusBar.tsx:241"}, "properties": {"repobilityId": "642f2a45b2cc4548", "scanner": "scanner-primary", "fingerprint": "63f27264b2331c79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8c085a2a36a60d6b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/CreateActionSheet.tsx:207"}, "properties": {"repobilityId": "b09cdb5d37062dc4", "scanner": "scanner-primary", "fingerprint": "8c085a2a36a60d6b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f06bd5a34d344c60", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/CoPlanDetailsConfirmedCard.tsx:120"}, "properties": {"repobilityId": "8e56804d3f677c0b", "scanner": "scanner-primary", "fingerprint": "f06bd5a34d344c60", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8519bd78c50c2a9a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/CoPlanWorkspaceHero.tsx:41"}, "properties": {"repobilityId": "544d7a0edd831aa6", "scanner": "scanner-primary", "fingerprint": "8519bd78c50c2a9a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d340c0e666a1915", "level": "note", "message": {"text": "Legacy-named symbol `dateOld` in src/components/CoPlanDateChangeCard.tsx:118"}, "properties": {"repobilityId": "f2677151f2cf5301", "scanner": "scanner-primary", "fingerprint": "2d340c0e666a1915", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-98491693c5f9364e", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/components/ProofSurveyModal.tsx:80"}, "properties": {"repobilityId": "f9c3e52e22424ce7", "scanner": "scanner-primary", "fingerprint": "98491693c5f9364e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b7707f46eed89f9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/SharePlanSheet.tsx:692"}, "properties": {"repobilityId": "e0682d97b4c55f82", "scanner": "scanner-primary", "fingerprint": "5b7707f46eed89f9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-503fc700ed162dd2", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/CoPlanDetailsView.tsx:84"}, "properties": {"repobilityId": "04005b1c9b0c06d1", "scanner": "scanner-primary", "fingerprint": "503fc700ed162dd2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be54d5c9a6f18d97", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/CoPlanRouteSection.tsx:53"}, "properties": {"repobilityId": "41d2e55cc71725ad", "scanner": "scanner-primary", "fingerprint": "be54d5c9a6f18d97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3081c1f738307971", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/PlaceWidgetsCarousel.tsx:66"}, "properties": {"repobilityId": "e3ffefccc5e6b3ca", "scanner": "scanner-primary", "fingerprint": "3081c1f738307971", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-02bc6408c115859b", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/components/GroupPlanSheet.tsx:50"}, "properties": {"repobilityId": "0a708e6dd5cb86b4", "scanner": "scanner-primary", "fingerprint": "02bc6408c115859b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-84baca3e5422f439", "level": "note", "message": {"text": "Legacy-named symbol `needsLegacy` in src/components/CoPlanPlacesCard.tsx:52"}, "properties": {"repobilityId": "5b2717db31fe49c8", "scanner": "scanner-primary", "fingerprint": "84baca3e5422f439", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-3888c3d34f07ba82", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/Avatar.tsx:42"}, "properties": {"repobilityId": "9f286d69140e2866", "scanner": "scanner-primary", "fingerprint": "3888c3d34f07ba82", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-023e2ec858f86562", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/SaveConfirmationToast.tsx:46"}, "properties": {"repobilityId": "f287b6469af45e28", "scanner": "scanner-primary", "fingerprint": "023e2ec858f86562", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-311b4a1fd10fb7d6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/plan/AudioTipPlayer.tsx:109"}, "properties": {"repobilityId": "fcec4780e9b8f1f5", "scanner": "scanner-primary", "fingerprint": "311b4a1fd10fb7d6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aead662daf54953c", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/plan/PlanMapSection.tsx:125"}, "properties": {"repobilityId": "7e767a4c6dbe027a", "scanner": "scanner-primary", "fingerprint": "aead662daf54953c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5d91228afb86bb2a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/plan/PlanPageBackdrop.tsx:32"}, "properties": {"repobilityId": "0bba867c9d9c058b", "scanner": "scanner-primary", "fingerprint": "5d91228afb86bb2a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5037804a32708516", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/profile/MixedPlanGrid.tsx:47"}, "properties": {"repobilityId": "6eb3118c30971b4e", "scanner": "scanner-primary", "fingerprint": "5037804a32708516", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-74c12083bc24678b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/onboarding/OnboardingHero.tsx:106"}, "properties": {"repobilityId": "bcdfab8e470b476c", "scanner": "scanner-primary", "fingerprint": "74c12083bc24678b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d76ad03b0af76f4", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/create/SmartImage.tsx:52"}, "properties": {"repobilityId": "4b364e5f9f632b5f", "scanner": "scanner-primary", "fingerprint": "8d76ad03b0af76f4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-16d0ca4dac134d34", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/create/EditorialPlate.tsx:732"}, "properties": {"repobilityId": "4077c041a6ef532a", "scanner": "scanner-primary", "fingerprint": "16d0ca4dac134d34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-56275fe680ca28c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/glass/GlassPillButton.tsx:47"}, "properties": {"repobilityId": "96646f1a0c52781c", "scanner": "scanner-primary", "fingerprint": "56275fe680ca28c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8a428490f8aa969", "level": "note", "message": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/es.ts:801"}, "properties": {"repobilityId": "9a866e67f44a626f", "scanner": "scanner-primary", "fingerprint": "a8a428490f8aa969", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-486119c1be3c15c2", "level": "note", "message": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/en.ts:803"}, "properties": {"repobilityId": "e83934ef18254d12", "scanner": "scanner-primary", "fingerprint": "486119c1be3c15c2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-cafe23f9afa9c075", "level": "note", "message": {"text": "Legacy-named symbol `saves_empty_todo_title_v2` in src/i18n/fr.ts:819"}, "properties": {"repobilityId": "f619a768d9bb8202", "scanner": "scanner-primary", "fingerprint": "cafe23f9afa9c075", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e2bf70538e9720b4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/onboardingStore.ts:133"}, "properties": {"repobilityId": "cde67e0d45779c85", "scanner": "scanner-primary", "fingerprint": "e2bf70538e9720b4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50321f3376df30c9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/feedStore.ts:57"}, "properties": {"repobilityId": "f62b2528e8f113b3", "scanner": "scanner-primary", "fingerprint": "50321f3376df30c9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cbad5ad66be61cf8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/coPlanStore.ts:227"}, "properties": {"repobilityId": "a18e12724bcd9440", "scanner": "scanner-primary", "fingerprint": "cbad5ad66be61cf8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-442de663c9f32951", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/store/savesStore.ts:63"}, "properties": {"repobilityId": "159114e4be20cd88", "scanner": "scanner-primary", "fingerprint": "442de663c9f32951", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1a2ca3c4d1a810ba", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/store/collectionsStore.ts:29"}, "properties": {"repobilityId": "62f525fb79e84313", "scanner": "scanner-primary", "fingerprint": "1a2ca3c4d1a810ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1bc0efa6836cc1b2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/store/collectionsStore.ts:36"}, "properties": {"repobilityId": "198d7fd2f196a8ea", "scanner": "scanner-primary", "fingerprint": "1bc0efa6836cc1b2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f442657158354828", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/store/authStore.ts:63"}, "properties": {"repobilityId": "49e46f77b419c145", "scanner": "scanner-primary", "fingerprint": "f442657158354828", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e0391a4bfebaf07e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/navigation/BottomTabNavigator.tsx:126"}, "properties": {"repobilityId": "fffc4887b2276e47", "scanner": "scanner-primary", "fingerprint": "e0391a4bfebaf07e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43f5c7f788c95cbf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/navigation/RootNavigator.tsx:81"}, "properties": {"repobilityId": "c23c7998e349c0c7", "scanner": "scanner-primary", "fingerprint": "43f5c7f788c95cbf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-83dfe75e4b12d833", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/constants/colors.ts:114"}, "properties": {"repobilityId": "bc2a9d9d6a04725b", "scanner": "scanner-primary", "fingerprint": "83dfe75e4b12d833", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f7971eac2df1258", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/constants/suggestions.ts:208"}, "properties": {"repobilityId": "580f27fd5c55486d", "scanner": "scanner-primary", "fingerprint": "4f7971eac2df1258", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c73b9bb60f6adf4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/firebaseAuth.ts:146"}, "properties": {"repobilityId": "5d162dfa959ce8ed", "scanner": "scanner-primary", "fingerprint": "2c73b9bb60f6adf4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-147ce137f39c43b3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/plansService.ts:295"}, "properties": {"repobilityId": "10afd3b830a35643", "scanner": "scanner-primary", "fingerprint": "147ce137f39c43b3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-49724bdcfa9b2601", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/directionsService.ts:80"}, "properties": {"repobilityId": "05131308afad3ca8", "scanner": "scanner-primary", "fingerprint": "49724bdcfa9b2601", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56bd183f4c308dba", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/mockApi.ts:248"}, "properties": {"repobilityId": "ad117aeeed835f39", "scanner": "scanner-primary", "fingerprint": "56bd183f4c308dba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9997e69390fb4fc9", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/planTimelineService.ts:121"}, "properties": {"repobilityId": "48d4eb893d1dbd50", "scanner": "scanner-primary", "fingerprint": "9997e69390fb4fc9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-42085a1307d55475", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/googlePlacesService.ts:201"}, "properties": {"repobilityId": "db33d3d78d8c492a", "scanner": "scanner-primary", "fingerprint": "42085a1307d55475", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-07e07572cfa9fd26", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/services/googlePlacesService.ts:160"}, "properties": {"repobilityId": "123e87b55b4e3a54", "scanner": "scanner-primary", "fingerprint": "07e07572cfa9fd26", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1adbc196a0df1828", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/firebaseConfig.ts:3"}, "properties": {"repobilityId": "023f6f5d219772c4", "scanner": "scanner-primary", "fingerprint": "1adbc196a0df1828", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ed79b01f658b64cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/trendingService.ts:49"}, "properties": {"repobilityId": "2ad5d997e8e556e4", "scanner": "scanner-primary", "fingerprint": "ed79b01f658b64cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac25e088c08bb32e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/notificationsService.ts:17"}, "properties": {"repobilityId": "ae4de3304ec54127", "scanner": "scanner-primary", "fingerprint": "ac25e088c08bb32e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2302df5617c13fa5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/services/planDraftService.ts:42"}, "properties": {"repobilityId": "f0ff22a642052448", "scanner": "scanner-primary", "fingerprint": "2302df5617c13fa5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d39cb195d67fbee3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/services/chatService.ts:23"}, "properties": {"repobilityId": "4752e9244e61baf5", "scanner": "scanner-primary", "fingerprint": "d39cb195d67fbee3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-889ca1b58b5872dd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 functions/src/lib/photoCache.ts:50"}, "properties": {"repobilityId": "48fe32c916c3ea1f", "scanner": "scanner-primary", "fingerprint": "889ca1b58b5872dd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8e047ab7af03962f", "level": "note", "message": {"text": "7 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "5a0455f6498c27ad", "scanner": "scanner-primary", "fingerprint": "8e047ab7af03962f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}