{"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-c719d37e4938d908", "name": "Stray `console.log` in TS/JS \u2014 public/sw.js:80", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:80"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9a8999ca77d745af", "name": "Stray `console.log` in TS/JS \u2014 src/supabaseClient.js:12", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/supabaseClient.js:12"}, "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-4f8e4a2c5df2e125", "name": "Stray `console.log` in TS/JS \u2014 src/utils/gemini.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/utils/gemini.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-ba63722eeb48b657", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ExpensesTab.jsx:797", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ExpensesTab.jsx:797"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-69543c0386f7db0d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/EmployeePortalTab.jsx:1051", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/EmployeePortalTab.jsx:1051"}, "fullDescription": {"text": "Open XSS surface unless the input is provably trusted. Replace with explicit JSX or sanitize via a vetted library.\n\nWhy: OWASP basics. Already partially flagged by the security analyzer.\nRule id: fq.dangerous-html"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e61e3dea67236cd5", "name": "Insecure pattern 'document_write' in src/components/KanbanBoard.jsx:186", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/KanbanBoard.jsx:186"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fb5bdd02d86377a6", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/ExpensesTab.jsx:797", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ExpensesTab.jsx:797"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-350e6c810ae43db8", "name": "Insecure pattern 'document_write' in src/components/Dashboard.jsx:95", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/Dashboard.jsx:95"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9791fecc886db87a", "name": "Insecure pattern 'dangerous_innerhtml' in src/components/EmployeePortalTab.jsx:1051", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/EmployeePortalTab.jsx:1051"}, "fullDescription": {"text": "Found a known-risky pattern (dangerous_innerhtml). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7c60602eddb83e11", "name": "Insecure pattern 'document_write' in src/components/reports/ReportsHub.jsx:262", "shortDescription": {"text": "Insecure pattern 'document_write' in src/components/reports/ReportsHub.jsx:262"}, "fullDescription": {"text": "Found a known-risky pattern (document_write). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-158425156729cd5b", "name": "Very large file: src/App.jsx (1963 lines)", "shortDescription": {"text": "Very large file: src/App.jsx (1963 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-ad52655a4a58ac4b", "name": "Very large file: src/components/EmployeesTab.jsx (1181 lines)", "shortDescription": {"text": "Very large file: src/components/EmployeesTab.jsx (1181 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-91b1bd30b9c13592", "name": "Very large file: src/components/MezziTab.jsx (1263 lines)", "shortDescription": {"text": "Very large file: src/components/MezziTab.jsx (1263 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-e630772b4fa8e3d6", "name": "Very large file: src/components/EmployeePortalTab.jsx (1061 lines)", "shortDescription": {"text": "Very large file: src/components/EmployeePortalTab.jsx (1061 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 90 source file(s) (ratio 0.01). 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-faccb9061e9b52a0", "name": "No README detected", "shortDescription": {"text": "No README detected"}, "fullDescription": {"text": "No README file was found. Generated repos without README context are hard to operate, validate, or safely hand off."}, "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 83 placeholder/mock markers across 34 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, ci, tests, 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": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-257e74032a7d8090", "name": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:45", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:45"}, "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-b9de4d32b9b43fd8", "name": "Commented-code block (5 lines) in src/App.jsx:192", "shortDescription": {"text": "Commented-code block (5 lines) in src/App.jsx:192"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c286f72f9177816", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/sharepoint.js:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/sharepoint.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-da9131b8e3c62dfe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/revealApi.js:86", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/revealApi.js:86"}, "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-4195a6614532f143", "name": "Commented-code block (5 lines) in src/components/layout/AICopilot.jsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/layout/AICopilot.jsx: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-a27a962244abb057", "name": "Legacy-named symbol `isLegacy` in src/components/layout/Sidebar.jsx:329", "shortDescription": {"text": "Legacy-named symbol `isLegacy` in src/components/layout/Sidebar.jsx:329"}, "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-f5d6c61b8ebcdbca", "name": "Commented-code block (13 lines) in src/components/layout/Sidebar.jsx:6", "shortDescription": {"text": "Commented-code block (13 lines) in src/components/layout/Sidebar.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2c346c655ad70313", "name": "Commented-code block (7 lines) in src/components/layout/RoleSwitcher.jsx:5", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/layout/RoleSwitcher.jsx: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-f119df14659761e3", "name": "Commented-code block (8 lines) in src/components/layout/HomePage.jsx:8", "shortDescription": {"text": "Commented-code block (8 lines) in src/components/layout/HomePage.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-79fd45df14a2effc", "name": "Commented-code block (6 lines) in src/components/layout/AuditLogViewer.jsx:7", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/layout/AuditLogViewer.jsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1d190dc3e6db6151", "name": "Commented-code block (7 lines) in src/components/layout/AppShell.jsx:7", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/layout/AppShell.jsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fa2bbe9a540dcf1a", "name": "Commented-code block (6 lines) in src/components/layout/AuditTrail.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/layout/AuditTrail.jsx: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-a44cc50f9181eddb", "name": "Commented-code block (6 lines) in src/components/layout/SearchModal.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/layout/SearchModal.jsx: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-baaa9ae0ccae4e18", "name": "Commented-code block (6 lines) in src/components/layout/NotificationCenter.jsx:11", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/layout/NotificationCenter.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-016a19edfdb157e3", "name": "Commented-code block (6 lines) in src/components/operations/SquadreModule.jsx:9", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/operations/SquadreModule.jsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8fef96465481a59", "name": "Commented-code block (6 lines) in src/components/operations/RapportiniModule.jsx:14", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/operations/RapportiniModule.jsx:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-142dc5abc2d937a3", "name": "Commented-code block (7 lines) in src/components/shared/ui.jsx:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/shared/ui.jsx: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-00f0791936877ca8", "name": "Commented-code block (5 lines) in src/components/insights/InsightsDashboards.jsx:11", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/insights/InsightsDashboards.jsx:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5b450f1d2e1135c", "name": "Commented-code block (7 lines) in src/components/admin/ImportDatiModule.jsx:6", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/admin/ImportDatiModule.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24a2dda6dbbfd615", "name": "Commented-code block (6 lines) in src/components/personal/PersonalApp.jsx:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/personal/PersonalApp.jsx: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-ac4f49f4652d0c0c", "name": "Commented-code block (5 lines) in src/components/documenti/DocumentiModule.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/documenti/DocumentiModule.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f7f74cc24882d180", "name": "Commented-code block (6 lines) in src/components/asset/AssetSGModule.jsx:13", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/asset/AssetSGModule.jsx:13"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c304625bb70f7845", "name": "Commented-code block (5 lines) in src/components/hr/OffboardingModule.jsx:9", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/hr/OffboardingModule.jsx:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-52346dd4baa77812", "name": "Commented-code block (5 lines) in src/components/hr/OrgChartModule.jsx:5", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/hr/OrgChartModule.jsx: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-786ea34990b4f051", "name": "Commented-code block (5 lines) in src/components/hr/SkillMatrixModule.jsx:8", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/hr/SkillMatrixModule.jsx:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b937db698fb6cf79", "name": "Commented-code block (5 lines) in src/components/reports/ReportsHub.jsx:4", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/reports/ReportsHub.jsx: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-a0639f544f2e7857", "name": "Commented-code block (5 lines) in src/components/workpro/WP2Module.jsx:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/WP2Module.jsx:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4f5608ff243c1733", "name": "Commented-code block (7 lines) in src/components/workpro/WP2Route.jsx:20", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/workpro/WP2Route.jsx:20"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e276d46be7841907", "name": "Commented-code block (5 lines) in src/components/workpro/pm/VehiclesTable.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/VehiclesTable.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ec3186d3536e2b18", "name": "Commented-code block (5 lines) in src/components/workpro/pm/ClientsTable.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/ClientsTable.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1ce802c5d2cd8cc3", "name": "Commented-code block (5 lines) in src/components/workpro/pm/SitesTable.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/SitesTable.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-35fca0c9b32f47af", "name": "Commented-code block (5 lines) in src/components/workpro/pm/TimeEntriesApproval.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/TimeEntriesApproval.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-32c9bda8d0f0ba34", "name": "Commented-code block (5 lines) in src/components/workpro/pm/LeaveRequestsInbox.jsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/LeaveRequestsInbox.jsx:6"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-982f6d30fb340c81", "name": "Commented-code block (6 lines) in src/components/workpro/pm/WeeklyPlanner.jsx:10", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/workpro/pm/WeeklyPlanner.jsx:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c07014b234bfaec6", "name": "Commented-code block (7 lines) in src/components/workpro/shared/wpSeed.js:119", "shortDescription": {"text": "Commented-code block (7 lines) in src/components/workpro/shared/wpSeed.js:119"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-be2e70e43229cc1d", "name": "Commented-code block (6 lines) in src/components/workpro/employee/EmpClockIn.jsx:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/components/workpro/employee/EmpClockIn.jsx: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-9338fa33c2b0e51f", "name": "Commented-code block (7 lines) in src/lib/multitenancy.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/multitenancy.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5aea0ec2a506131a", "name": "Commented-code block (5 lines) in src/lib/search.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/search.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5b522cf672e77d05", "name": "Commented-code block (7 lines) in src/lib/legacyData.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/legacyData.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f8e762029d0a083", "name": "Commented-code block (7 lines) in src/lib/notifications.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/notifications.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f9e7b4cc55b6df69", "name": "Commented-code block (8 lines) in src/lib/sharedState.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/sharedState.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8b608f064214a456", "name": "Commented-code block (8 lines) in src/lib/timbrature.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/lib/timbrature.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-896e04dff1c9c676", "name": "Commented-code block (9 lines) in src/lib/audit.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in src/lib/audit.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bfcd557862ad3b1e", "name": "Commented-code block (7 lines) in src/lib/rbac.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/lib/rbac.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3cc4449f0df5b0b1", "name": "Commented-code block (5 lines) in src/lib/navigation.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/navigation.js:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-319e66a630e14977", "name": "2 env vars used in code but missing from .env.example", "shortDescription": {"text": "2 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `VITE_MICROSOFT_CLIENT_ID`, `VITE_MICROSOFT_TENANT_ID`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/19209"}, "properties": {"repository": "selezione1231/06_app_Noi", "repoUrl": "https://github.com/selezione1231/06_app_Noi", "branch": "main"}, "results": [{"ruleId": "scanner-c719d37e4938d908", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 public/sw.js:80"}, "properties": {"repobilityId": "19ecb22d48da856c", "scanner": "scanner-primary", "fingerprint": "c719d37e4938d908", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-9a8999ca77d745af", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/supabaseClient.js:12"}, "properties": {"repobilityId": "bbeb5a2345f600b5", "scanner": "scanner-primary", "fingerprint": "9a8999ca77d745af", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4f8e4a2c5df2e125", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/utils/gemini.js:50"}, "properties": {"repobilityId": "7c636d7a0614251f", "scanner": "scanner-primary", "fingerprint": "4f8e4a2c5df2e125", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ba63722eeb48b657", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/ExpensesTab.jsx:797"}, "properties": {"repobilityId": "d6a738a1a4d815e5", "scanner": "scanner-primary", "fingerprint": "ba63722eeb48b657", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-69543c0386f7db0d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 src/components/EmployeePortalTab.jsx:1051"}, "properties": {"repobilityId": "d8ca31c28315d651", "scanner": "scanner-primary", "fingerprint": "69543c0386f7db0d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e61e3dea67236cd5", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/KanbanBoard.jsx:186"}, "properties": {"repobilityId": "fc7a811e23398344", "scanner": "scanner-primary", "fingerprint": "e61e3dea67236cd5", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/KanbanBoard.jsx"}, "region": {"startLine": 186}}}]}, {"ruleId": "scanner-fb5bdd02d86377a6", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/ExpensesTab.jsx:797"}, "properties": {"repobilityId": "427e42ed634d71a6", "scanner": "scanner-primary", "fingerprint": "fb5bdd02d86377a6", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/ExpensesTab.jsx"}, "region": {"startLine": 797}}}]}, {"ruleId": "scanner-350e6c810ae43db8", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/Dashboard.jsx:95"}, "properties": {"repobilityId": "085e758767e41bf0", "scanner": "scanner-primary", "fingerprint": "350e6c810ae43db8", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/Dashboard.jsx"}, "region": {"startLine": 95}}}]}, {"ruleId": "scanner-9791fecc886db87a", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in src/components/EmployeePortalTab.jsx:1051"}, "properties": {"repobilityId": "0bd3429eb1c0c4ed", "scanner": "scanner-primary", "fingerprint": "9791fecc886db87a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/EmployeePortalTab.jsx"}, "region": {"startLine": 1051}}}]}, {"ruleId": "scanner-7c60602eddb83e11", "level": "note", "message": {"text": "Insecure pattern 'document_write' in src/components/reports/ReportsHub.jsx:262"}, "properties": {"repobilityId": "b09b47f60f4e3b89", "scanner": "scanner-primary", "fingerprint": "7c60602eddb83e11", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "src/components/reports/ReportsHub.jsx"}, "region": {"startLine": 262}}}]}, {"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-158425156729cd5b", "level": "note", "message": {"text": "Very large file: src/App.jsx (1963 lines)"}, "properties": {"repobilityId": "a59a84e7052cf35b", "scanner": "scanner-primary", "fingerprint": "158425156729cd5b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ad52655a4a58ac4b", "level": "note", "message": {"text": "Very large file: src/components/EmployeesTab.jsx (1181 lines)"}, "properties": {"repobilityId": "4b4353f4bee6f365", "scanner": "scanner-primary", "fingerprint": "ad52655a4a58ac4b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-91b1bd30b9c13592", "level": "note", "message": {"text": "Very large file: src/components/MezziTab.jsx (1263 lines)"}, "properties": {"repobilityId": "c991dc257e78d13b", "scanner": "scanner-primary", "fingerprint": "91b1bd30b9c13592", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e630772b4fa8e3d6", "level": "note", "message": {"text": "Very large file: src/components/EmployeePortalTab.jsx (1061 lines)"}, "properties": {"repobilityId": "f9b978bc7cc0b2fd", "scanner": "scanner-primary", "fingerprint": "e630772b4fa8e3d6", "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": "7eb969e23f78ae08", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-faccb9061e9b52a0", "level": "note", "message": {"text": "No README detected"}, "properties": {"repobilityId": "e38f9cdef5e1024f", "scanner": "scanner-primary", "fingerprint": "faccb9061e9b52a0", "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": "90e2fee078b12c84", "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": "9b14cb1953dc8d6d", "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": "9396d051b96537a0", "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": "warning", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "2e2e0e598a259059", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "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": "8cb6e6cc06214a4e", "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": "ccc189cf0c32a4dd", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-257e74032a7d8090", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 public/sw.js:45"}, "properties": {"repobilityId": "a7a582143bbc1e9c", "scanner": "scanner-primary", "fingerprint": "257e74032a7d8090", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-b9de4d32b9b43fd8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/App.jsx:192"}, "properties": {"repobilityId": "9499a2c94815e821", "scanner": "scanner-primary", "fingerprint": "b9de4d32b9b43fd8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c286f72f9177816", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/sharepoint.js:90"}, "properties": {"repobilityId": "7619028c27b42869", "scanner": "scanner-primary", "fingerprint": "1c286f72f9177816", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da9131b8e3c62dfe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/utils/revealApi.js:86"}, "properties": {"repobilityId": "9c9a937ec710c414", "scanner": "scanner-primary", "fingerprint": "da9131b8e3c62dfe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4195a6614532f143", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/layout/AICopilot.jsx:4"}, "properties": {"repobilityId": "ea8f9ed00048092f", "scanner": "scanner-primary", "fingerprint": "4195a6614532f143", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a27a962244abb057", "level": "note", "message": {"text": "Legacy-named symbol `isLegacy` in src/components/layout/Sidebar.jsx:329"}, "properties": {"repobilityId": "6ed436c3f3b8bfb9", "scanner": "scanner-primary", "fingerprint": "a27a962244abb057", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-f5d6c61b8ebcdbca", "level": "none", "message": {"text": "Commented-code block (13 lines) in src/components/layout/Sidebar.jsx:6"}, "properties": {"repobilityId": "67ad1946dbc0b754", "scanner": "scanner-primary", "fingerprint": "f5d6c61b8ebcdbca", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2c346c655ad70313", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/layout/RoleSwitcher.jsx:5"}, "properties": {"repobilityId": "65fb7af786221686", "scanner": "scanner-primary", "fingerprint": "2c346c655ad70313", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f119df14659761e3", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/components/layout/HomePage.jsx:8"}, "properties": {"repobilityId": "82bf247ff722552e", "scanner": "scanner-primary", "fingerprint": "f119df14659761e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-79fd45df14a2effc", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/layout/AuditLogViewer.jsx:7"}, "properties": {"repobilityId": "51c748a92516753e", "scanner": "scanner-primary", "fingerprint": "79fd45df14a2effc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1d190dc3e6db6151", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/layout/AppShell.jsx:7"}, "properties": {"repobilityId": "d505345741cb9a8c", "scanner": "scanner-primary", "fingerprint": "1d190dc3e6db6151", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fa2bbe9a540dcf1a", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/layout/AuditTrail.jsx:5"}, "properties": {"repobilityId": "910ebedc7b0314fb", "scanner": "scanner-primary", "fingerprint": "fa2bbe9a540dcf1a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a44cc50f9181eddb", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/layout/SearchModal.jsx:5"}, "properties": {"repobilityId": "63f81293ca87a7ac", "scanner": "scanner-primary", "fingerprint": "a44cc50f9181eddb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-baaa9ae0ccae4e18", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/layout/NotificationCenter.jsx:11"}, "properties": {"repobilityId": "dddb5a14f62375a1", "scanner": "scanner-primary", "fingerprint": "baaa9ae0ccae4e18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-016a19edfdb157e3", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/operations/SquadreModule.jsx:9"}, "properties": {"repobilityId": "684ff4d622ced2fb", "scanner": "scanner-primary", "fingerprint": "016a19edfdb157e3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8fef96465481a59", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/operations/RapportiniModule.jsx:14"}, "properties": {"repobilityId": "8ab9bfa1d97a3d95", "scanner": "scanner-primary", "fingerprint": "d8fef96465481a59", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-142dc5abc2d937a3", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/shared/ui.jsx:4"}, "properties": {"repobilityId": "636856543551dc73", "scanner": "scanner-primary", "fingerprint": "142dc5abc2d937a3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00f0791936877ca8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/insights/InsightsDashboards.jsx:11"}, "properties": {"repobilityId": "65bf04930115bf6a", "scanner": "scanner-primary", "fingerprint": "00f0791936877ca8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5b450f1d2e1135c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/admin/ImportDatiModule.jsx:6"}, "properties": {"repobilityId": "6e0a0eb8f456a8d1", "scanner": "scanner-primary", "fingerprint": "f5b450f1d2e1135c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24a2dda6dbbfd615", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/personal/PersonalApp.jsx:19"}, "properties": {"repobilityId": "cb2e026147142796", "scanner": "scanner-primary", "fingerprint": "24a2dda6dbbfd615", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ac4f49f4652d0c0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/documenti/DocumentiModule.jsx:8"}, "properties": {"repobilityId": "fb3da83cd47ad5c5", "scanner": "scanner-primary", "fingerprint": "ac4f49f4652d0c0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f7f74cc24882d180", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/asset/AssetSGModule.jsx:13"}, "properties": {"repobilityId": "797ecc2b203bfb89", "scanner": "scanner-primary", "fingerprint": "f7f74cc24882d180", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c304625bb70f7845", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/hr/OffboardingModule.jsx:9"}, "properties": {"repobilityId": "630ce45164122f92", "scanner": "scanner-primary", "fingerprint": "c304625bb70f7845", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-52346dd4baa77812", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/hr/OrgChartModule.jsx:5"}, "properties": {"repobilityId": "1394789481477b9a", "scanner": "scanner-primary", "fingerprint": "52346dd4baa77812", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-786ea34990b4f051", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/hr/SkillMatrixModule.jsx:8"}, "properties": {"repobilityId": "c77c9740397f433f", "scanner": "scanner-primary", "fingerprint": "786ea34990b4f051", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b937db698fb6cf79", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/reports/ReportsHub.jsx:4"}, "properties": {"repobilityId": "3c3819aee72aee2a", "scanner": "scanner-primary", "fingerprint": "b937db698fb6cf79", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0639f544f2e7857", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/WP2Module.jsx:7"}, "properties": {"repobilityId": "57762160dc98192f", "scanner": "scanner-primary", "fingerprint": "a0639f544f2e7857", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4f5608ff243c1733", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/workpro/WP2Route.jsx:20"}, "properties": {"repobilityId": "f4bbda23ddeef9a8", "scanner": "scanner-primary", "fingerprint": "4f5608ff243c1733", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e276d46be7841907", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/VehiclesTable.jsx:6"}, "properties": {"repobilityId": "b8185cfca27924af", "scanner": "scanner-primary", "fingerprint": "e276d46be7841907", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ec3186d3536e2b18", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/ClientsTable.jsx:6"}, "properties": {"repobilityId": "50c3a14bee5f86cb", "scanner": "scanner-primary", "fingerprint": "ec3186d3536e2b18", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ce802c5d2cd8cc3", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/SitesTable.jsx:6"}, "properties": {"repobilityId": "6be12aafee5e3056", "scanner": "scanner-primary", "fingerprint": "1ce802c5d2cd8cc3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-35fca0c9b32f47af", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/TimeEntriesApproval.jsx:6"}, "properties": {"repobilityId": "56adf036a2dbc5a9", "scanner": "scanner-primary", "fingerprint": "35fca0c9b32f47af", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-32c9bda8d0f0ba34", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/components/workpro/pm/LeaveRequestsInbox.jsx:6"}, "properties": {"repobilityId": "64ea225b36c578f0", "scanner": "scanner-primary", "fingerprint": "32c9bda8d0f0ba34", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-982f6d30fb340c81", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/workpro/pm/WeeklyPlanner.jsx:10"}, "properties": {"repobilityId": "32c03b93f58fc5df", "scanner": "scanner-primary", "fingerprint": "982f6d30fb340c81", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c07014b234bfaec6", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/components/workpro/shared/wpSeed.js:119"}, "properties": {"repobilityId": "a4abbbe278700e54", "scanner": "scanner-primary", "fingerprint": "c07014b234bfaec6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-be2e70e43229cc1d", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/components/workpro/employee/EmpClockIn.jsx:5"}, "properties": {"repobilityId": "b0f79c842838a996", "scanner": "scanner-primary", "fingerprint": "be2e70e43229cc1d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9338fa33c2b0e51f", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/multitenancy.js:1"}, "properties": {"repobilityId": "aff5d1676303fbaf", "scanner": "scanner-primary", "fingerprint": "9338fa33c2b0e51f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5aea0ec2a506131a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/search.js:1"}, "properties": {"repobilityId": "3fc7982ca706629f", "scanner": "scanner-primary", "fingerprint": "5aea0ec2a506131a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5b522cf672e77d05", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/legacyData.js:1"}, "properties": {"repobilityId": "87ffd3f2030dd439", "scanner": "scanner-primary", "fingerprint": "5b522cf672e77d05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f8e762029d0a083", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/notifications.js:1"}, "properties": {"repobilityId": "edeeb109e5052ffe", "scanner": "scanner-primary", "fingerprint": "3f8e762029d0a083", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f9e7b4cc55b6df69", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/sharedState.js:1"}, "properties": {"repobilityId": "36cb0fa0dd592ab7", "scanner": "scanner-primary", "fingerprint": "f9e7b4cc55b6df69", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b608f064214a456", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/lib/timbrature.js:1"}, "properties": {"repobilityId": "24d5ea8bf0ce3ac9", "scanner": "scanner-primary", "fingerprint": "8b608f064214a456", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-896e04dff1c9c676", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/lib/audit.js:1"}, "properties": {"repobilityId": "d49b98b4f3873545", "scanner": "scanner-primary", "fingerprint": "896e04dff1c9c676", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bfcd557862ad3b1e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/lib/rbac.js:1"}, "properties": {"repobilityId": "07d18a9e4341a368", "scanner": "scanner-primary", "fingerprint": "bfcd557862ad3b1e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3cc4449f0df5b0b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/navigation.js:1"}, "properties": {"repobilityId": "33863a70fdcf68b4", "scanner": "scanner-primary", "fingerprint": "3cc4449f0df5b0b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-319e66a630e14977", "level": "none", "message": {"text": "2 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "d838d1fc5d8231c9", "scanner": "scanner-primary", "fingerprint": "319e66a630e14977", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}]}]}