{"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-967ec61612e2fb4c", "name": "Stray `console.log` in TS/JS \u2014 functions/index.js:173", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 functions/index.js:173"}, "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-ef3683b303f968f1", "name": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/serviceWorkerRegistration.js:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/serviceWorkerRegistration.js:21"}, "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-bae5c8e37981315b", "name": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/PetClosetModal/PetClosetModal.js:124", "shortDescription": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/PetClosetModal/PetClosetModal.js:124"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-38152a6c321e3df8", "name": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/components/ImageUpload/ImageUpload.js:48", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/components/ImageUpload/ImageUpload.js:48"}, "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-f073ef6bd8826717", "name": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/KidsClosetModal/KidsClosetModal.js:132", "shortDescription": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/KidsClosetModal/KidsClosetModal.js:132"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-29bd074e7d857c4d", "name": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:88", "shortDescription": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:88"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b72ff61b8de99117", "name": "TODO/FIXME marker in shipping code \u2014 wimc-react-app/src/Pages/Pricing.js:162", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 wimc-react-app/src/Pages/Pricing.js:162"}, "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-aa20b7a5291ee730", "name": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/Pages/Pricing.js:163", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/Pages/Pricing.js:163"}, "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-541ce9b7f69c0ba6", "name": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/KidsCloset.js:97", "shortDescription": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/KidsCloset.js:97"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-90a8f6b5ed72b1b4", "name": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/PetCloset.js:97", "shortDescription": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/PetCloset.js:97"}, "fullDescription": {"text": "A `<button>` whose only child is a single glyph or symbol needs `title=` or `aria-label=` so screen readers (and tooltips on hover) work.\n\nWhy: P3 in CHECKLIST.md \u2014 icon-only buttons skipped a title.\nRule id: fq.button.no-label"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-baba31a80088ce9e", "name": "Insecure pattern 'cors_wildcard' in functions/index.js:40", "shortDescription": {"text": "Insecure pattern 'cors_wildcard' in functions/index.js:40"}, "fullDescription": {"text": "Found a known-risky pattern (cors_wildcard). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88c51019a722ab2b", "name": "Insecure pattern 'domparser_html_parse' in wimc-react-app/src/utils/linkPreview.js:59", "shortDescription": {"text": "Insecure pattern 'domparser_html_parse' in wimc-react-app/src/utils/linkPreview.js:59"}, "fullDescription": {"text": "Found a known-risky pattern (domparser_html_parse). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6372cebde0220094", "name": "No auth library detected", "shortDescription": {"text": "No auth library detected"}, "fullDescription": {"text": "The scanner did not find any standard auth library (JWT, OAuth, NextAuth, Auth0, etc.). The repo has auth/admin/session surface indicators, so auth may live in custom code, in a separate service, or be missing."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-4601e3ad3bb28677", "name": "No CI/CD pipelines detected", "shortDescription": {"text": "No CI/CD pipelines detected"}, "fullDescription": {"text": "No GitHub Actions, GitLab CI, or CircleCI configs found. Without CI you can't gate deploys on tests/lints."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-5cef04f8e911b814", "name": "Very large file: wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js (4024 lines)", "shortDescription": {"text": "Very large file: wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js (4024 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-6fb5ac8a52fabe2d", "name": "Very large file: wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js (1599 lines)", "shortDescription": {"text": "Very large file: wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js (1599 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-635e6194ac8a634c", "name": "Very large file: wimc-react-app/src/components/ShoppingList/ShoppingList.js (4054 lines)", "shortDescription": {"text": "Very large file: wimc-react-app/src/components/ShoppingList/ShoppingList.js (4054 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-8c3f4cbdbac0b880", "name": "Very large file: wimc-react-app/src/Pages/Receipts.js (1317 lines)", "shortDescription": {"text": "Very large file: wimc-react-app/src/Pages/Receipts.js (1317 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": "3 test file(s) for 79 source file(s) (ratio 0.04). 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-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 7 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 114 placeholder/mock markers across 21 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. 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-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-19d717feba56a0c6", "name": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/public/service-worker.js:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/public/service-worker.js:90"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-89d7d78a7b65871d", "name": "Commented-code block (7 lines) in wimc-react-app/src/firebase.js:43", "shortDescription": {"text": "Commented-code block (7 lines) in wimc-react-app/src/firebase.js:43"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-717931e662b80798", "name": "Commented-code block (5 lines) in wimc-react-app/src/index.js:12", "shortDescription": {"text": "Commented-code block (5 lines) in wimc-react-app/src/index.js:12"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e1a7534cbf1ce5e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/CloudinaryAPI.js:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/CloudinaryAPI.js:33"}, "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-2eb72478399bb4af", "name": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/aiProxy.js:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/aiProxy.js:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-c7114256ba8cb9cd", "name": "Commented-code block (21 lines) in wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js:974", "shortDescription": {"text": "Commented-code block (21 lines) in wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js:974"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9480a4a7e2e25a4e", "name": "Commented-code block (6 lines) in wimc-react-app/src/components/ImageUpload/ImageUpload.js:4", "shortDescription": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/ImageUpload/ImageUpload.js:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f28d9ad33ca49ecc", "name": "Commented-code block (6 lines) in wimc-react-app/src/components/Home/Home.js:92", "shortDescription": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/Home/Home.js:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f8106e01796c6020", "name": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/WeatherModal/WeatherModal.js:201", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/WeatherModal/WeatherModal.js:201"}, "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-d4fb217f0fd5990c", "name": "Commented-code block (6 lines) in wimc-react-app/src/components/DoorTest/DoorTest.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/DoorTest/DoorTest.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-1782fd4d93619341", "name": "Legacy-named symbol `wimc_travel_pack_v2` in wimc-react-app/src/components/TravelPackPanel/TravelPackPanel.js:24", "shortDescription": {"text": "Legacy-named symbol `wimc_travel_pack_v2` in wimc-react-app/src/components/TravelPackPanel/TravelPackPanel.js:24"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a90d7d3399220a8b", "name": "Legacy-named symbol `wimc_preview_state_v2` in wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js:42", "shortDescription": {"text": "Legacy-named symbol `wimc_preview_state_v2` in wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js:42"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-97df2cabe0eb1dba", "name": "Commented-code block (5 lines) in wimc-react-app/src/components/AddClothingModal/AddClothingModal.js:196", "shortDescription": {"text": "Commented-code block (5 lines) in wimc-react-app/src/components/AddClothingModal/AddClothingModal.js:196"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-50b75da6d32ab51a", "name": "Legacy-named symbol `wimc_shopping_list_v1` in wimc-react-app/src/components/ShoppingList/ShoppingList.js:20", "shortDescription": {"text": "Legacy-named symbol `wimc_shopping_list_v1` in wimc-react-app/src/components/ShoppingList/ShoppingList.js:20"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-35b2888adc036280", "name": "Commented-code block (8 lines) in wimc-react-app/src/components/ShoppingList/ShoppingList.js:1687", "shortDescription": {"text": "Commented-code block (8 lines) in wimc-react-app/src/components/ShoppingList/ShoppingList.js:1687"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-323352cd66d111f2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:1704", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:1704"}, "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-761d7289fed1ff78", "name": "Commented-code block (9 lines) in wimc-react-app/src/components/ClosetSectionModal/ClosetSectionModal.js:88", "shortDescription": {"text": "Commented-code block (9 lines) in wimc-react-app/src/components/ClosetSectionModal/ClosetSectionModal.js:88"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-df9ed46e73358b5e", "name": "Commented-code block (11 lines) in wimc-react-app/src/components/ChangeUserInfoModal/ChangeUserInfoModal.js:5", "shortDescription": {"text": "Commented-code block (11 lines) in wimc-react-app/src/components/ChangeUserInfoModal/ChangeUserInfoModal.js:5"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4d021a361e25d849", "name": "Legacy-named symbol `wimc_week_plan_v1` in wimc-react-app/src/components/OutfitPlanner/OutfitPlanner.js:23", "shortDescription": {"text": "Legacy-named symbol `wimc_week_plan_v1` in wimc-react-app/src/components/OutfitPlanner/OutfitPlanner.js:23"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-e9f855bf25c76c0b", "name": "Commented-code block (5 lines) in wimc-react-app/src/Pages/Receipts.js:53", "shortDescription": {"text": "Commented-code block (5 lines) in wimc-react-app/src/Pages/Receipts.js: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-9d0898e6833d078e", "name": "Commented-code block (16 lines) in wimc-react-app/src/Pages/ClosetData.js:425", "shortDescription": {"text": "Commented-code block (16 lines) in wimc-react-app/src/Pages/ClosetData.js:425"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-87198f488029cda4", "name": "Frontend route `/shared` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js", "shortDescription": {"text": "Frontend route `/shared` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-35bfc4a7da58b04c", "name": "Frontend route `/auth-action` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js", "shortDescription": {"text": "Frontend route `/auth-action` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-3add9adeb87a2531", "name": "Frontend route `/outfit-card` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js", "shortDescription": {"text": "Frontend route `/outfit-card` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "fullDescription": {"text": "The route is registered but no `<Link to=\u2026>` or `navigate(\u2026)` in the codebase navigates here. Either it's reachable only via direct URL (intentional), it's dead, or the link broke during a refactor."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/18599"}, "properties": {"repository": "RWallace1ro/project-wimc-frontend", "repoUrl": "https://github.com/RWallace1ro/project-wimc-frontend", "branch": "main"}, "results": [{"ruleId": "scanner-967ec61612e2fb4c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 functions/index.js:173"}, "properties": {"repobilityId": "fc340c3549298d81", "scanner": "scanner-primary", "fingerprint": "967ec61612e2fb4c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ef3683b303f968f1", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/serviceWorkerRegistration.js:21"}, "properties": {"repobilityId": "4f287b8cae53704d", "scanner": "scanner-primary", "fingerprint": "ef3683b303f968f1", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-bae5c8e37981315b", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/PetClosetModal/PetClosetModal.js:124"}, "properties": {"repobilityId": "e60a66899431871b", "scanner": "scanner-primary", "fingerprint": "bae5c8e37981315b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-38152a6c321e3df8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/components/ImageUpload/ImageUpload.js:48"}, "properties": {"repobilityId": "b782c7807154db32", "scanner": "scanner-primary", "fingerprint": "38152a6c321e3df8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f073ef6bd8826717", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/KidsClosetModal/KidsClosetModal.js:132"}, "properties": {"repobilityId": "ec4c12dd9a5f28d1", "scanner": "scanner-primary", "fingerprint": "f073ef6bd8826717", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-29bd074e7d857c4d", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:88"}, "properties": {"repobilityId": "c2cd72ad91c37e2f", "scanner": "scanner-primary", "fingerprint": "29bd074e7d857c4d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-b72ff61b8de99117", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 wimc-react-app/src/Pages/Pricing.js:162"}, "properties": {"repobilityId": "97b61c8e79b80d57", "scanner": "scanner-primary", "fingerprint": "b72ff61b8de99117", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-aa20b7a5291ee730", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 wimc-react-app/src/Pages/Pricing.js:163"}, "properties": {"repobilityId": "7d2e40adbe47594c", "scanner": "scanner-primary", "fingerprint": "aa20b7a5291ee730", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-541ce9b7f69c0ba6", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/KidsCloset.js:97"}, "properties": {"repobilityId": "30b04a0a29be85a1", "scanner": "scanner-primary", "fingerprint": "541ce9b7f69c0ba6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-90a8f6b5ed72b1b4", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 wimc-react-app/src/Pages/PetCloset.js:97"}, "properties": {"repobilityId": "3cc9c2667294816d", "scanner": "scanner-primary", "fingerprint": "90a8f6b5ed72b1b4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-baba31a80088ce9e", "level": "warning", "message": {"text": "Insecure pattern 'cors_wildcard' in functions/index.js:40"}, "properties": {"repobilityId": "4adc174787d1ab8a", "scanner": "scanner-primary", "fingerprint": "baba31a80088ce9e", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "cors_wildcard"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "functions/index.js"}, "region": {"startLine": 40}}}]}, {"ruleId": "scanner-88c51019a722ab2b", "level": "warning", "message": {"text": "Insecure pattern 'domparser_html_parse' in wimc-react-app/src/utils/linkPreview.js:59"}, "properties": {"repobilityId": "2312e37e9070e2e1", "scanner": "scanner-primary", "fingerprint": "88c51019a722ab2b", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "domparser_html_parse"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "wimc-react-app/src/utils/linkPreview.js"}, "region": {"startLine": 59}}}]}, {"ruleId": "scanner-6372cebde0220094", "level": "warning", "message": {"text": "No auth library detected"}, "properties": {"repobilityId": "a5b6035a5bbf8054", "scanner": "scanner-primary", "fingerprint": "6372cebde0220094", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["coverage", "auth"]}}, {"ruleId": "scanner-4601e3ad3bb28677", "level": "warning", "message": {"text": "No CI/CD pipelines detected"}, "properties": {"repobilityId": "c3ee439bce2bc51e", "scanner": "scanner-primary", "fingerprint": "4601e3ad3bb28677", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-5cef04f8e911b814", "level": "note", "message": {"text": "Very large file: wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js (4024 lines)"}, "properties": {"repobilityId": "05e6d75ce1967e90", "scanner": "scanner-primary", "fingerprint": "5cef04f8e911b814", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-6fb5ac8a52fabe2d", "level": "note", "message": {"text": "Very large file: wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js (1599 lines)"}, "properties": {"repobilityId": "73db471b36b3eb36", "scanner": "scanner-primary", "fingerprint": "6fb5ac8a52fabe2d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-635e6194ac8a634c", "level": "note", "message": {"text": "Very large file: wimc-react-app/src/components/ShoppingList/ShoppingList.js (4054 lines)"}, "properties": {"repobilityId": "1b671a5e58b34f95", "scanner": "scanner-primary", "fingerprint": "635e6194ac8a634c", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8c3f4cbdbac0b880", "level": "note", "message": {"text": "Very large file: wimc-react-app/src/Pages/Receipts.js (1317 lines)"}, "properties": {"repobilityId": "92dc2a4c1268f7c7", "scanner": "scanner-primary", "fingerprint": "8c3f4cbdbac0b880", "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": "7b79dec40edde8fe", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "83e7f5c6dacb5f67", "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": "245babcf74c61ed9", "scanner": "scanner-primary", "fingerprint": "72b2a6250083a784", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "incomplete", "generated-repo-pattern"]}}, {"ruleId": "scanner-9d79c4077342a7d0", "level": "warning", "message": {"text": "Runtime service client appears to use placeholder configuration"}, "properties": {"repobilityId": "7ee7c65da8e51939", "scanner": "scanner-primary", "fingerprint": "9d79c4077342a7d0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "runtime-config", "service-client", "generated-repo-pattern"]}}, {"ruleId": "scanner-2d0c7b7ab8f8aacf", "level": "warning", "message": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "properties": {"repobilityId": "a4aab69a219f06e4", "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": "7c8b2dbfdaadb989", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "8bfa44e528a38018", "scanner": "scanner-primary", "fingerprint": "ea8f3013f588db25", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-8424db9c75e04ba4", "level": "none", "message": {"text": "Very short observed git history"}, "properties": {"repobilityId": "ce64bb6625a52d86", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-19d717feba56a0c6", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/public/service-worker.js:90"}, "properties": {"repobilityId": "3630704df5b49e58", "scanner": "scanner-primary", "fingerprint": "19d717feba56a0c6", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-89d7d78a7b65871d", "level": "none", "message": {"text": "Commented-code block (7 lines) in wimc-react-app/src/firebase.js:43"}, "properties": {"repobilityId": "d4fddca01027775d", "scanner": "scanner-primary", "fingerprint": "89d7d78a7b65871d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-717931e662b80798", "level": "none", "message": {"text": "Commented-code block (5 lines) in wimc-react-app/src/index.js:12"}, "properties": {"repobilityId": "824c247ea16da66f", "scanner": "scanner-primary", "fingerprint": "717931e662b80798", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e1a7534cbf1ce5e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/CloudinaryAPI.js:33"}, "properties": {"repobilityId": "c6cbafce0a850df4", "scanner": "scanner-primary", "fingerprint": "e1a7534cbf1ce5e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2eb72478399bb4af", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/utils/aiProxy.js:31"}, "properties": {"repobilityId": "ced5786524453a17", "scanner": "scanner-primary", "fingerprint": "2eb72478399bb4af", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c7114256ba8cb9cd", "level": "none", "message": {"text": "Commented-code block (21 lines) in wimc-react-app/src/components/WIMCTourVideo/WIMCTourVideo.js:974"}, "properties": {"repobilityId": "a98adb8486db264c", "scanner": "scanner-primary", "fingerprint": "c7114256ba8cb9cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9480a4a7e2e25a4e", "level": "none", "message": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/ImageUpload/ImageUpload.js:4"}, "properties": {"repobilityId": "ad6d1d135966801b", "scanner": "scanner-primary", "fingerprint": "9480a4a7e2e25a4e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f28d9ad33ca49ecc", "level": "none", "message": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/Home/Home.js:92"}, "properties": {"repobilityId": "0e939a7613da5333", "scanner": "scanner-primary", "fingerprint": "f28d9ad33ca49ecc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f8106e01796c6020", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/WeatherModal/WeatherModal.js:201"}, "properties": {"repobilityId": "a4e80f7b9a43e1a9", "scanner": "scanner-primary", "fingerprint": "f8106e01796c6020", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d4fb217f0fd5990c", "level": "none", "message": {"text": "Commented-code block (6 lines) in wimc-react-app/src/components/DoorTest/DoorTest.js:3"}, "properties": {"repobilityId": "fa13298687ecb6a2", "scanner": "scanner-primary", "fingerprint": "d4fb217f0fd5990c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1782fd4d93619341", "level": "note", "message": {"text": "Legacy-named symbol `wimc_travel_pack_v2` in wimc-react-app/src/components/TravelPackPanel/TravelPackPanel.js:24"}, "properties": {"repobilityId": "cf5283487c9a80cc", "scanner": "scanner-primary", "fingerprint": "1782fd4d93619341", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-a90d7d3399220a8b", "level": "note", "message": {"text": "Legacy-named symbol `wimc_preview_state_v2` in wimc-react-app/src/components/OutfitPreviewPanel/OutfitPreviewPanel.js:42"}, "properties": {"repobilityId": "d7627e3bcc9cfe91", "scanner": "scanner-primary", "fingerprint": "a90d7d3399220a8b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-97df2cabe0eb1dba", "level": "none", "message": {"text": "Commented-code block (5 lines) in wimc-react-app/src/components/AddClothingModal/AddClothingModal.js:196"}, "properties": {"repobilityId": "6f3a1a4f9d3f031b", "scanner": "scanner-primary", "fingerprint": "97df2cabe0eb1dba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-50b75da6d32ab51a", "level": "note", "message": {"text": "Legacy-named symbol `wimc_shopping_list_v1` in wimc-react-app/src/components/ShoppingList/ShoppingList.js:20"}, "properties": {"repobilityId": "17515e1170e4dc7f", "scanner": "scanner-primary", "fingerprint": "50b75da6d32ab51a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-35b2888adc036280", "level": "none", "message": {"text": "Commented-code block (8 lines) in wimc-react-app/src/components/ShoppingList/ShoppingList.js:1687"}, "properties": {"repobilityId": "778de4dd544f155f", "scanner": "scanner-primary", "fingerprint": "35b2888adc036280", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-323352cd66d111f2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 wimc-react-app/src/components/ShoppingList/ShoppingList.js:1704"}, "properties": {"repobilityId": "c98f1284614f4f37", "scanner": "scanner-primary", "fingerprint": "323352cd66d111f2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-761d7289fed1ff78", "level": "none", "message": {"text": "Commented-code block (9 lines) in wimc-react-app/src/components/ClosetSectionModal/ClosetSectionModal.js:88"}, "properties": {"repobilityId": "89e753d0be1d703b", "scanner": "scanner-primary", "fingerprint": "761d7289fed1ff78", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-df9ed46e73358b5e", "level": "none", "message": {"text": "Commented-code block (11 lines) in wimc-react-app/src/components/ChangeUserInfoModal/ChangeUserInfoModal.js:5"}, "properties": {"repobilityId": "ecf668a193240ec2", "scanner": "scanner-primary", "fingerprint": "df9ed46e73358b5e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4d021a361e25d849", "level": "note", "message": {"text": "Legacy-named symbol `wimc_week_plan_v1` in wimc-react-app/src/components/OutfitPlanner/OutfitPlanner.js:23"}, "properties": {"repobilityId": "30bda8835d3c8ba3", "scanner": "scanner-primary", "fingerprint": "4d021a361e25d849", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e9f855bf25c76c0b", "level": "none", "message": {"text": "Commented-code block (5 lines) in wimc-react-app/src/Pages/Receipts.js:53"}, "properties": {"repobilityId": "2a55404e3e025ab0", "scanner": "scanner-primary", "fingerprint": "e9f855bf25c76c0b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9d0898e6833d078e", "level": "none", "message": {"text": "Commented-code block (16 lines) in wimc-react-app/src/Pages/ClosetData.js:425"}, "properties": {"repobilityId": "174396a09e24e6a0", "scanner": "scanner-primary", "fingerprint": "9d0898e6833d078e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-87198f488029cda4", "level": "warning", "message": {"text": "Frontend route `/shared` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "properties": {"repobilityId": "8ac08afc6c753ac4", "scanner": "scanner-primary", "fingerprint": "87198f488029cda4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-35bfc4a7da58b04c", "level": "warning", "message": {"text": "Frontend route `/auth-action` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "properties": {"repobilityId": "1a9296b7ee5e37d4", "scanner": "scanner-primary", "fingerprint": "35bfc4a7da58b04c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}, {"ruleId": "scanner-3add9adeb87a2531", "level": "warning", "message": {"text": "Frontend route `/outfit-card` has no Link/navigate to it \u2014 wimc-react-app/src/components/App/App.js"}, "properties": {"repobilityId": "6653352ba1f096cf", "scanner": "scanner-primary", "fingerprint": "3add9adeb87a2531", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "orphan-page", "wiring"]}}]}]}