{"version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0.json", "runs": [{"tool": {"driver": {"name": "Repobility", "informationUri": "https://repobility.com", "rules": [{"id": "scanner-bead75b0f9233e05", "name": "No API endpoints detected", "shortDescription": {"text": "No API endpoints detected"}, "fullDescription": {"text": "The scanner did not find FastAPI/Flask/Express/NestJS/GraphQL/gRPC routes. If this repo exposes APIs, the framework may be unsupported."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dfc24180e35feaaf", "name": "TODO/FIXME marker in shipping code \u2014 next.config.js:24", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 next.config.js:24"}, "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-15c6e60dce7c3c4e", "name": "Stray `console.log` in TS/JS \u2014 scripts/mes-sync-agent.js:94", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mes-sync-agent.js:94"}, "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-1513c4aa79d53c1c", "name": "Stray `console.log` in TS/JS \u2014 scripts/importar-omie-crm.js:95", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/importar-omie-crm.js:95"}, "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-64dfc6edd789ea04", "name": "Stray `console.log` in TS/JS \u2014 scripts/ska-explorar.js:53", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ska-explorar.js:53"}, "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-95f46a76b2fc52a3", "name": "`truncate` class without `title=` for hover reveal \u2014 components/TorguinhoChat.jsx:82", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/TorguinhoChat.jsx:82"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-867af2502841f498", "name": "`truncate` class without `title=` for hover reveal \u2014 components/ControleFinanceiroOP.jsx:194", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ControleFinanceiroOP.jsx:194"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a5c6dba5f40e7181", "name": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarUserFooter.jsx:18", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarUserFooter.jsx:18"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7d042f47c64e9743", "name": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarModuleSwitcher.jsx:226", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarModuleSwitcher.jsx:226"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0e3494e69a4894b7", "name": "`truncate` class without `title=` for hover reveal \u2014 components/PedidosOmieSection.jsx:125", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PedidosOmieSection.jsx:125"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51edb762740d30cf", "name": "Icon-only button without accessible name \u2014 components/FDAvulsosSection.jsx:346", "shortDescription": {"text": "Icon-only button without accessible name \u2014 components/FDAvulsosSection.jsx:346"}, "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-3b49732f66334aaa", "name": "`truncate` class without `title=` for hover reveal \u2014 components/FDAvulsosSection.jsx:874", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/FDAvulsosSection.jsx:874"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8d7acb1697b975b3", "name": "`truncate` class without `title=` for hover reveal \u2014 components/compras/PainelServicosRM.jsx:104", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/compras/PainelServicosRM.jsx:104"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0093d445e13860fa", "name": "`truncate` class without `title=` for hover reveal \u2014 components/pcp/SetorPageClient.jsx:375", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pcp/SetorPageClient.jsx:375"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-56c2c80b304742fe", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/RMsTabelaSeletor.jsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/RMsTabelaSeletor.jsx:283"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af18328a000cb757", "name": "\"active\" state uses light bg in a dark theme \u2014 app/compras/RMsTabelaSeletor.jsx:898", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/compras/RMsTabelaSeletor.jsx:898"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-237106d4d2cd7ec4", "name": "Icon-only button without accessible name \u2014 app/compras/notificacoes/NotificacoesClient.jsx:541", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/compras/notificacoes/NotificacoesClient.jsx:541"}, "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-75c1a1a22103e11c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/page.js:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/page.js:193"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b6e25fd832c82212", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:679", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:679"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c14a7635f9c365a0", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/consumiveis/page.js:175", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/consumiveis/page.js:175"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82de156f6f90db78", "name": "\"active\" state uses light bg in a dark theme \u2014 app/compras/saldo-materiais/SaldoMateriaisClient.jsx:496", "shortDescription": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/compras/saldo-materiais/SaldoMateriaisClient.jsx:496"}, "fullDescription": {"text": "A ternary like `active ? 'bg-white' : '...'` (or bg-gray-100/200) on a dark theme produces jarring white pills. Use a dark-emphasized active state instead \u2014 border + ring or slightly brighter dark bg. Example: `active ? 'bg-gray-800 border-gray-500 ring-1 ring-blue-500/30' : '\u2026'`.\n\nWhy: P-E in CHECKLIST.md \u2014 light bg in a dark theme is a class of regression.\nRule id: fq.active-light-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-fec62a870e41ce6d", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1423", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1423"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-72d6eb01c2a1e7cc", "name": "Stray `console.log` in TS/JS \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1224", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1224"}, "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-1f6b2e52ff23f779", "name": "Icon-only button without accessible name \u2014 app/compras/vendorlist/VendorListClient.jsx:621", "shortDescription": {"text": "Icon-only button without accessible name \u2014 app/compras/vendorlist/VendorListClient.jsx:621"}, "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-3487062cad9c4e17", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/cronograma/CronogramaClient.jsx:633", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/cronograma/CronogramaClient.jsx:633"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-15b92d6b2e26faad", "name": "`truncate` class without `title=` for hover reveal \u2014 app/compras/materiais/MateriaisOPPageClient.jsx:154", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/materiais/MateriaisOPPageClient.jsx:154"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c9567cf00b02ded9", "name": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/DataBooksClient.jsx:66", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/DataBooksClient.jsx:66"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3aff2e39e18144e9", "name": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/[id]/DataBookDetalheClient.jsx:228", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/[id]/DataBookDetalheClient.jsx:228"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8a3b17403cc4b646", "name": "`truncate` class without `title=` for hover reveal \u2014 app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx:609", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx:609"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a63a3647c5940c79", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/pecas/PecasClient.jsx:1275", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/pecas/PecasClient.jsx:1275"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ca42db6c54847bfb", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/mes/MesClient.jsx:435", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/mes/MesClient.jsx:435"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0023c57feeb20003", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/consulta-estoque/ConsultaEstoqueListClient.jsx:94", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/consulta-estoque/ConsultaEstoqueListClient.jsx:94"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6d470585b4492a39", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorClient.jsx:509", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorClient.jsx:509"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-49cafb85a30eaa27", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorPlaceholder.jsx:189", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorPlaceholder.jsx:189"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e4b117296230cc7e", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1302", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1302"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2cb66806d3310737", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/montagem/MontagemClient.jsx:558", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/montagem/MontagemClient.jsx:558"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f07a8a3052a53067", "name": "`truncate` class without `title=` for hover reveal \u2014 app/producao/romaneios/page.js:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/romaneios/page.js:222"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6f78ca3f937876a4", "name": "TODO/FIXME marker in shipping code \u2014 app/api/mes/sync-ordens/route.js:82", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/mes/sync-ordens/route.js:82"}, "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-c2b721324f98e8b6", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rm/page.js:193", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rm/page.js:193"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0caee6ce576478db", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rm/nova/NovaRMClient.jsx:1116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rm/nova/NovaRMClient.jsx:1116"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f36670836f1caac1", "name": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/FinanceiroClient.jsx:245", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/FinanceiroClient.jsx:245"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f66b3113a4888582", "name": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/a-pagar-por-obra/APagarPorObraClient.jsx:35", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/a-pagar-por-obra/APagarPorObraClient.jsx:35"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-68a68c5e7b843974", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:394", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:394"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7cffdeaa538eeac2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/PropostasClient.jsx:315", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/PropostasClient.jsx:315"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0d23b21b34d6936b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:583", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:583"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cc24faef43bbf632", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:292", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:292"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9fb19c17dbb2a027", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:504", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:504"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d0bd87e4c6060110", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:347", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:347"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e12334ac86d20739", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:451", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:451"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0f3fa3fe427a1457", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/pipeline/PipelineClient.jsx:231", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/pipeline/PipelineClient.jsx:231"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1736276cc3a06b65", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/acompanhamento/AcompanhamentoClient.jsx:18", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/acompanhamento/AcompanhamentoClient.jsx:185"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8fcfac6b36466fa4", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/kpis/KPIsClient.jsx:162", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/kpis/KPIsClient.jsx:162"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c2425280d0e2c64a", "name": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:377", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:377"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82ea8d6be22e8290", "name": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresComercialClient.jsx:136", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresComercialClient.jsx:136"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-99a0ff1097dece9e", "name": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresRHClient.jsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresRHClient.jsx:173"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a160f863f10a9265", "name": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresClient.jsx:152", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresClient.jsx:152"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c0fb37a4d156a215", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/expedicao-semanal/ExpedicaoSemanalClient.jsx:218", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/expedicao-semanal/ExpedicaoSemanalClient.jsx:218"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f1b769ac61141e7", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/tarefas/TarefasClient.jsx:262", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/tarefas/TarefasClient.jsx:262"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4167115e520b967e", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/analise-critica/AnaliseCriticaClient.jsx:121", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/analise-critica/AnaliseCriticaClient.jsx:121"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d8fce3ea2bb5a1d9", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/compromissos/CompromissosClient.jsx:221", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/compromissos/CompromissosClient.jsx:221"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-058862bd1dfb94db", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:343", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:343"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3050b932885fa3ba", "name": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/programacao/ProgramacaoClient.jsx:297", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/programacao/ProgramacaoClient.jsx:297"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cf679319605e6944", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/planta/PlantaClient.jsx:649", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/planta/PlantaClient.jsx:649"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7b4983a21d62e019", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/organograma/OrganoClient.jsx:116", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/organograma/OrganoClient.jsx:116"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-aac7357368cc78b2", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/documentos/DocumentosClient.jsx:884", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/documentos/DocumentosClient.jsx:884"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-533639d0ddc57e8c", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/vagas/VagasClient.jsx:243", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/vagas/VagasClient.jsx:243"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d779aa09f3c920b6", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/cargos/CargosClient.jsx:302", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/cargos/CargosClient.jsx:302"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e5e85b0d4971daa9", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/setores/SetoresClient.jsx:197", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/setores/SetoresClient.jsx:197"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-16150d56d4df8680", "name": "`truncate` class without `title=` for hover reveal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:788", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:788"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-618a8fc6c7795a6b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/PCPDashboardClient.jsx:391", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/PCPDashboardClient.jsx:391"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-006f98d8b2daa787", "name": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/fila-corte/FilaCorteClient.jsx:435", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/fila-corte/FilaCorteClient.jsx:435"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7606e0e1df879c0b", "name": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/ExpedicaoClient.jsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/ExpedicaoClient.jsx:149"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7a838b4aa69272e9", "name": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/ChecklistClient.jsx:135", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/ChecklistClient.jsx:135"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8670a27d285fb239", "name": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/PlanejamentoCargaSection.jsx:261", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/PlanejamentoCargaSection.jsx:261"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-23cf3e4a7ad858e2", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20"}, "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-e9afcbf5d5b94135", "name": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/pedidos/PedidosExpedicaoClient.jsx:149", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/pedidos/PedidosExpedicaoClient.jsx:149"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-dbcc6f884f046dd0", "name": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-compra.js:90", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-compra.js:90"}, "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-5cebc4b5541bef1e", "name": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-venda.js:66", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-venda.js:66"}, "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-b06839512ee381c8", "name": "Stray `console.log` in TS/JS \u2014 lib/omie-ordem-servico.js:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-ordem-servico.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-a4e627e5180bac4a", "name": "Insecure pattern 'node_child_process' in next.config.js:1", "shortDescription": {"text": "Insecure pattern 'node_child_process' in next.config.js:1"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-e1cbcdd16ddf0feb", "name": "Insecure pattern 'node_child_process' in scripts/atualizar.mjs:12", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/atualizar.mjs:12"}, "fullDescription": {"text": "Found a known-risky pattern (node_child_process). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7be0f6b71a3b74a9", "name": "Insecure pattern 'direct_innerhtml_assignment' in components/TorguinhoChat.jsx:58", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in components/TorguinhoChat.jsx:58"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-fee463d5980ca535", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/RMsTabelaSeletor.jsx:369", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/RMsTabelaSeletor.jsx:369"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-93fd2901325a2192", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:26", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:26"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-49732764aa531046", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/rm/[id]/RMComprasClient.jsx:1234", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/rm/[id]/RMComprasClient.jsx:1234"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-32861bd3c1251d00", "name": "Insecure pattern 'direct_innerhtml_assignment' in app/admin/torguinho/page.js:114", "shortDescription": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/admin/torguinho/page.js:114"}, "fullDescription": {"text": "Found a known-risky pattern (direct_innerhtml_assignment). Review and replace if possible."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-879a110cfcdf0d39", "name": "Insecure pattern 'document_write' in app/planejamento/cronogramas/CronogramasClient.jsx:3672", "shortDescription": {"text": "Insecure pattern 'document_write' in app/planejamento/cronogramas/CronogramasClient.jsx:3672"}, "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-25968a714eb25be4", "name": "Insecure pattern 'dangerous_innerhtml' in app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20", "shortDescription": {"text": "Insecure pattern 'dangerous_innerhtml' in app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20"}, "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-cb639d9a10a47b23", "name": "package.json defines install-time lifecycle scripts", "shortDescription": {"text": "package.json defines install-time lifecycle scripts"}, "fullDescription": {"text": "preinstall/install/postinstall/prepare scripts execute during dependency installation. Review them carefully for network calls, obfuscation, shell execution, or credential access."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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-e4d861d92500fd02", "name": "Very large file: app/compras/RMsTabelaSeletor.jsx (1152 lines)", "shortDescription": {"text": "Very large file: app/compras/RMsTabelaSeletor.jsx (1152 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-f3df1053e0f61fbc", "name": "Very large file: app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx (1378 lines)", "shortDescription": {"text": "Very large file: app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx (1378 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-ddef6d8050215f8d", "name": "Very large file: app/compras/rm/[id]/RMComprasClient.jsx (3915 lines)", "shortDescription": {"text": "Very large file: app/compras/rm/[id]/RMComprasClient.jsx (3915 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-7674edad5e6fd09f", "name": "Very large file: app/compras/cronograma/CronogramaClient.jsx (1482 lines)", "shortDescription": {"text": "Very large file: app/compras/cronograma/CronogramaClient.jsx (1482 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-c35df8be03655d24", "name": "Very large file: app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx (1117 lines)", "shortDescription": {"text": "Very large file: app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx (1117 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-3f6dc6a3c2bf5e4a", "name": "Very large file: app/producao/pecas/PecasClient.jsx (1462 lines)", "shortDescription": {"text": "Very large file: app/producao/pecas/PecasClient.jsx (1462 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5cb3b9576dcb8349", "name": "Very large file: app/producao/mes/MesClient.jsx (1702 lines)", "shortDescription": {"text": "Very large file: app/producao/mes/MesClient.jsx (1702 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-916934377614454a", "name": "Very large file: app/producao/programacao/corte/ProgramacaoCorteClient.jsx (2522 lines)", "shortDescription": {"text": "Very large file: app/producao/programacao/corte/ProgramacaoCorteClient.jsx (2522 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-cce6f8d622dd94c7", "name": "Very large file: app/producao/controle/ControleClient.jsx (1339 lines)", "shortDescription": {"text": "Very large file: app/producao/controle/ControleClient.jsx (1339 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-24b27659e12a73f7", "name": "Very large file: app/rm/nova/NovaRMClient.jsx (1159 lines)", "shortDescription": {"text": "Very large file: app/rm/nova/NovaRMClient.jsx (1159 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-237c71fb6705b169", "name": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx (1333 lines)", "shortDescription": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx (1333 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-688c44cf29b82ce3", "name": "Very large file: app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx (2985 lines)", "shortDescription": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx (2985 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-f33abafe3f7d3062", "name": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx (960 lines)", "shortDescription": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx (960 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-75b169cb1748419d", "name": "Very large file: app/comercial/[id]/OPDetailClient.jsx (2918 lines)", "shortDescription": {"text": "Very large file: app/comercial/[id]/OPDetailClient.jsx (2918 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-1defadfb1c29b2d6", "name": "Very large file: app/comercial/[id]/kickoff/KickoffClient.jsx (1069 lines)", "shortDescription": {"text": "Very large file: app/comercial/[id]/kickoff/KickoffClient.jsx (1069 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-175501df223b94a2", "name": "Very large file: app/indicadores/IndicadoresClient.jsx (1037 lines)", "shortDescription": {"text": "Very large file: app/indicadores/IndicadoresClient.jsx (1037 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-faf0ca7b64b33032", "name": "Very large file: app/planejamento/cronogramas/CronogramasClient.jsx (3844 lines)", "shortDescription": {"text": "Very large file: app/planejamento/cronogramas/CronogramasClient.jsx (3844 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-9537d736bfe0eb55", "name": "Very large file: app/rh/documentos/DocumentosClient.jsx (1209 lines)", "shortDescription": {"text": "Very large file: app/rh/documentos/DocumentosClient.jsx (1209 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-4f5c318ded92948e", "name": "Very large file: app/expedicao/relatorio/RelatorioExpedicaoClient.jsx (1148 lines)", "shortDescription": {"text": "Very large file: app/expedicao/relatorio/RelatorioExpedicaoClient.jsx (1148 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": "2 test file(s) for 686 source file(s) (ratio 0.00). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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 90 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 432 placeholder/mock markers across 86 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, 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-749d4bc1bd66df5f", "name": "Agent instructions exist but release-hardening basics are missing", "shortDescription": {"text": "Agent instructions exist but release-hardening basics are missing"}, "fullDescription": {"text": "AI-coder instruction files were found, but the repo is missing license, ci, tests, operator-readme. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-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-122f91b7f2906dc4", "name": "Agent authority lacks a verifier contract: .claude/settings.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2c5f98b152cddb6d", "name": "Agent authority lacks a verifier contract: .claude/launch.json", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-1149d2c4e4978a2b", "name": "Commented-code block (10 lines) in middleware.js:4", "shortDescription": {"text": "Commented-code block (10 lines) in middleware.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-8bc3dc91a8bd6587", "name": "Commented-code block (7 lines) in next.config.js:19", "shortDescription": {"text": "Commented-code block (7 lines) in next.config.js: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-b05eb15ec29861e8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mes-sync-agent.js:264", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mes-sync-agent.js:264"}, "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-83345326fdaf436f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/importar-omie-crm.js:74", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/importar-omie-crm.js:74"}, "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-a05a2cd4040236a2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ska-explorar.js:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ska-explorar.js:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-8d886a8e1a12b8ae", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/TorguinhoChat.jsx:214", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/TorguinhoChat.jsx:214"}, "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-e9a3b1476084e4ff", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/FDAvulsosSection.jsx:325", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/FDAvulsosSection.jsx:325"}, "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-5ad2a34577c516ba", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMHeaderActions.jsx:69", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMHeaderActions.jsx:69"}, "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-6b95996315aba54e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMRowActions.jsx:42", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMRowActions.jsx:42"}, "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-9ffaf46384a779de", "name": "Commented-code block (6 lines) in app/compras/RMsTabelaSeletor.jsx:26", "shortDescription": {"text": "Commented-code block (6 lines) in app/compras/RMsTabelaSeletor.jsx:26"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e271996214dc2818", "name": "Commented-code block (6 lines) in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:283", "shortDescription": {"text": "Commented-code block (6 lines) in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:283"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-daaf8d3d2d74f07f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:195", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:195"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24a16c64cd7783a7", "name": "Commented-code block (5 lines) in app/compras/rm/[id]/page.js:158", "shortDescription": {"text": "Commented-code block (5 lines) in app/compras/rm/[id]/page.js:158"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f9b938c3749255d", "name": "Commented-code block (5 lines) in app/compras/rm/[id]/RMComprasClient.jsx:3548", "shortDescription": {"text": "Commented-code block (5 lines) in app/compras/rm/[id]/RMComprasClient.jsx:3548"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0631d6a6bb98ac00", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1813", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1813"}, "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-41b18b529b91a35f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/qualidade/QualidadeClient.jsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/qualidade/QualidadeClient.jsx:55"}, "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-9e6f033a66a654a8", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/frete/[token]/FreteFormClient.jsx:33", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/frete/[token]/FreteFormClient.jsx: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-9b4f9921847f3f17", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/estudo/[token]/EstudoCotacaoFormClient.jsx:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/estudo/[token]/EstudoCotacaoFormClient.jsx:35"}, "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-24a92229e4df2f68", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/pecas/PecasClient.jsx:1200", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/pecas/PecasClient.jsx:1200"}, "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-3dc71f4977a6a75f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/consulta-estoque/[id]/ConsultaEstoqueResponder.jsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/consulta-estoque/[id]/ConsultaEstoqueResponder.jsx:55"}, "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-f26149be0e66ba42", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1950", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1950"}, "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-f25109659612984a", "name": "Commented-code block (7 lines) in app/producao/programacao/montagem/MontagemClient.jsx:44", "shortDescription": {"text": "Commented-code block (7 lines) in app/producao/programacao/montagem/MontagemClient.jsx:44"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-316d149e0de846c2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/controle/ControleClient.jsx:198", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/controle/ControleClient.jsx:198"}, "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-82bf07c00f0eed17", "name": "Legacy-named symbol `recebidoLegacy` in app/api/compras/saldo-materiais/route.js:136", "shortDescription": {"text": "Legacy-named symbol `recebidoLegacy` in app/api/compras/saldo-materiais/route.js:136"}, "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-e525de549276fe6e", "name": "Commented-code block (5 lines) in app/api/qualidade/data-books/secao/[secaoId]/popular-material/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/qualidade/data-books/secao/[secaoId]/popular-material/route.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-cb2ffeb270a2e309", "name": "Commented-code block (5 lines) in app/api/qualidade/documentos/upload-token/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/qualidade/documentos/upload-token/route.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-00b26c90ed057ae2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/qualidade/documentos/importar/route.js:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/qualidade/documentos/importar/route.js:34"}, "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-6d37cce9175fd6ed", "name": "Commented-code block (5 lines) in app/api/op/[id]/gerar-pedidos/route.js:329", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/op/[id]/gerar-pedidos/route.js:329"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-48f249934f1cbb55", "name": "Commented-code block (5 lines) in app/api/producao/pecas/marcar-conjunto/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/producao/pecas/marcar-conjunto/route.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-d8106403bc757205", "name": "Commented-code block (6 lines) in app/api/producao/pecas/importar-lpc-revisao/route.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/producao/pecas/importar-lpc-revisao/route.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-48c9a246d6d14648", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/producao/pecas/sharepoint-drives/route.js:39", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/producao/pecas/sharepoint-drives/route.js:39"}, "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-6d2e56664d3b3b7a", "name": "Commented-code block (7 lines) in app/api/rm/route.js:75", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/rm/route.js:75"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a1a05f798b74950", "name": "Commented-code block (5 lines) in app/api/rm/[id]/gerar-pedido-direto/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/rm/[id]/gerar-pedido-direto/route.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-6952fe234aded825", "name": "Commented-code block (8 lines) in app/api/financeiro/a-pagar-por-obra/route.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/api/financeiro/a-pagar-por-obra/route.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-d35219447cabfe3b", "name": "Commented-code block (6 lines) in app/api/comercial/op/[id]/kickoff/enviar/route.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/comercial/op/[id]/kickoff/enviar/route.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-aaaaa680f3a2b24d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-parafusos/route.js:84", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-parafusos/route.js:84"}, "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-2f1cf4c533477f03", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar/route.js:100", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar/route.js:100"}, "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-f258aac1992d0877", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/converter-dwg/route.js:89", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/converter-dwg/route.js:89"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-0a6f8f055fd10836", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-acessorios/route.js:90", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-acessorios/route.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-aa3ea14d9473d042", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-pintura/route.js:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-pintura/route.js:92"}, "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-286aeb0f4a5e7125", "name": "Legacy-named symbol `recebidoLegacy` in app/api/planejamento/cronogramas/[id]/suprimentos/route.js:111", "shortDescription": {"text": "Legacy-named symbol `recebidoLegacy` in app/api/planejamento/cronogramas/[id]/suprimentos/route.js:111"}, "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-1c3bd0f2ee006642", "name": "Commented-code block (5 lines) in app/api/rh/documentos/upload-token/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/rh/documentos/upload-token/route.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-e3e6c8cb3b13435b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/romaneios/sharepoint/route.js:72", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/romaneios/sharepoint/route.js:72"}, "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-48d5cd30eb8f290d", "name": "Commented-code block (7 lines) in app/api/estoque/diagnostico/route.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/estoque/diagnostico/route.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-460bf450b8bfb2dc", "name": "Commented-code block (7 lines) in app/api/cotacao/[id]/lancar-manual/route.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in app/api/cotacao/[id]/lancar-manual/route.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-a5229c7e9ce25b22", "name": "Commented-code block (8 lines) in app/api/pcp/fila-corte/route.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in app/api/pcp/fila-corte/route.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-0566e7b3ebab17b7", "name": "Commented-code block (5 lines) in app/api/pcp/painel-corte/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/pcp/painel-corte/route.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-47edba41394630d9", "name": "Commented-code block (6 lines) in app/api/expedicao/checklist/route.js:1", "shortDescription": {"text": "Commented-code block (6 lines) in app/api/expedicao/checklist/route.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-7c89417c38193efc", "name": "Commented-code block (5 lines) in app/api/expedicao/programacao-cargas/route.js:80", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/expedicao/programacao-cargas/route.js:80"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-fcfcb644a7fc292d", "name": "Commented-code block (5 lines) in app/api/pedido-omie/[id]/route.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in app/api/pedido-omie/[id]/route.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-2dd01a03aecd0f04", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/categorias/route.js:34", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/categorias/route.js:34"}, "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-e3589afadd5bdc7f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/locais-estoque/route.js:28", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/locais-estoque/route.js:28"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da8c89bbe3ce4c90", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/_listagem.jsx:168", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/_listagem.jsx:168"}, "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-36c2454243c29550", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/[id]/page.js:135", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/[id]/page.js:135"}, "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-651726135462542f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/metas/MetasClient.jsx:203", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/metas/MetasClient.jsx:203"}, "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-aef5422a025c6b51", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/financeiro/FinanceiroClient.jsx:355", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/financeiro/FinanceiroClient.jsx:355"}, "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-a84b999c1ee428e4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:141", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:141"}, "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-c1efaa487fcc892f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaImpostos.jsx:138", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaImpostos.jsx:138"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-85216bcb21d87a6b", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:990", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:990"}, "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-2b43a22a5ea9a26a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:423", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:423"}, "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-2277b5b69448f799", "name": "Commented-code block (5 lines) in app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:135", "shortDescription": {"text": "Commented-code block (5 lines) in app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:135"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-af3c08f9987bff95", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:210", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:210"}, "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-28e0095fe8481cd9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:364", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:364"}, "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-1a44765c30384fbb", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx:530", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx:530"}, "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-6c1516fd8c675c8c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:184", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:184"}, "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-3f2176d2e7d639e9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:181", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:181"}, "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-35d8df9f645d2b1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/OPDetailClient.jsx:512", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/OPDetailClient.jsx:512"}, "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-2dc3284b2e3d4ac2", "name": "Commented-code block (5 lines) in app/comercial/[id]/page.js:134", "shortDescription": {"text": "Commented-code block (5 lines) in app/comercial/[id]/page.js:134"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-64ef8ff1427c24e1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:114", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:114"}, "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-804f96c0d202609f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/tarefas/TarefasClient.jsx:453", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/tarefas/TarefasClient.jsx:453"}, "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-56310e147e2ddd60", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:445", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:445"}, "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-cf43b53c85c7aa8a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/resposta/[token]/page.js:63", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/resposta/[token]/page.js:63"}, "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-21cfe268f10b95e0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/inicio-producao/InicioProducaoClient.jsx:125", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/inicio-producao/InicioProducaoClient.jsx:125"}, "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-4b7d661cfba8c5d2", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/documentos/DocumentosClient.jsx:145", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/documentos/DocumentosClient.jsx:145"}, "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-4bc55cdc38835fde", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/vagas/VagasClient.jsx:58", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/vagas/VagasClient.jsx:58"}, "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-7271a421f13c7895", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/cargos/CargosClient.jsx:55", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/cargos/CargosClient.jsx:55"}, "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-8c1f227cc7ced1a5", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/acidentes/AcidentesClient.jsx:87", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/acidentes/AcidentesClient.jsx:87"}, "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-08a4566fa2966a7f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/setores/SetoresClient.jsx:71", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/setores/SetoresClient.jsx:71"}, "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-52326bfd2755751a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/afastamentos/AfastamentosClient.jsx:131", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/afastamentos/AfastamentosClient.jsx:131"}, "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-4467defd257e4dfe", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/treinamentos/TreinamentosClient.jsx:68", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/treinamentos/TreinamentosClient.jsx:68"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ed417b7491abf450", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:147", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:147"}, "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-f7fd896f4653b2ea", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/ExpedicaoClient.jsx:252", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/ExpedicaoClient.jsx:252"}, "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-33d64ec7131f1eb4", "name": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/relatorio/RelatorioExpedicaoClient.jsx:132", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/relatorio/RelatorioExpedicaoClient.jsx:132"}, "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-29551745395fa1e5", "name": "Commented-code block (7 lines) in lib/importar-lpc-merge.js:1", "shortDescription": {"text": "Commented-code block (7 lines) in lib/importar-lpc-merge.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-8b56f9e840ff7988", "name": "Commented-code block (5 lines) in lib/omie-contas-receber.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-contas-receber.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-1ebb2e7efb4780a5", "name": "Commented-code block (5 lines) in lib/prisma.js:16", "shortDescription": {"text": "Commented-code block (5 lines) in lib/prisma.js:16"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-eeb915316f101462", "name": "Commented-code block (5 lines) in lib/omie-contas-pagas.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-contas-pagas.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-0515379e1e6dc1bd", "name": "Commented-code block (5 lines) in lib/email.js:5", "shortDescription": {"text": "Commented-code block (5 lines) in lib/email.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-a4ef852d39c94de0", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-lpc.js:128", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-lpc.js:128"}, "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-def883e84f66120d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/dwg-converter.js:49", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/dwg-converter.js:49"}, "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-7335469acff2c7b1", "name": "Commented-code block (5 lines) in lib/omie-pedidos-abertos.js:4", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-pedidos-abertos.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-19b1f947f6218acf", "name": "Commented-code block (5 lines) in lib/blob-url.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/blob-url.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-0544424a273bc7a4", "name": "Commented-code block (8 lines) in lib/databook-secoes.js:1", "shortDescription": {"text": "Commented-code block (8 lines) in lib/databook-secoes.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-6e0033bab6ec34d9", "name": "Commented-code block (5 lines) in lib/omie-recebimento.js:207", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-recebimento.js:207"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5e7f292991400c0d", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-recebimento.js:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-recebimento.js:18"}, "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-4853045f32461ebb", "name": "Commented-code block (6 lines) in lib/omie-export.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/omie-export.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-cd688edb38f4af59", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-export.js:59", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-export.js:59"}, "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-0efbbdc694d6d697", "name": "Commented-code block (6 lines) in lib/parse-le-form21.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/parse-le-form21.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-afe2f5ac8f760d9c", "name": "Commented-code block (9 lines) in lib/conjuntos-setor.js:1", "shortDescription": {"text": "Commented-code block (9 lines) in lib/conjuntos-setor.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-01dc8380ebd83275", "name": "Commented-code block (7 lines) in lib/product-matcher.js:5", "shortDescription": {"text": "Commented-code block (7 lines) in lib/product-matcher.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-1e814a4d95328bf3", "name": "Commented-code block (6 lines) in lib/omie-estoque.js:3", "shortDescription": {"text": "Commented-code block (6 lines) in lib/omie-estoque.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-dc1e97bbced3cf74", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint.js:43", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint.js:43"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-7e5fdcdd7d4c62d9", "name": "Commented-code block (5 lines) in lib/cotacao-estoque.js:3", "shortDescription": {"text": "Commented-code block (5 lines) in lib/cotacao-estoque.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-298f321b47c796c2", "name": "Commented-code block (9 lines) in lib/faturamento-direto.js:3", "shortDescription": {"text": "Commented-code block (9 lines) in lib/faturamento-direto.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-1dcbdc3f150cf56f", "name": "Commented-code block (5 lines) in lib/omie-pedido-compra.js:322", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-pedido-compra.js:322"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-331bbe0818eb75e3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-rh.js:18", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-rh.js:18"}, "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-9e06a480cba11815", "name": "Commented-code block (5 lines) in lib/omie-pedido-venda.js:156", "shortDescription": {"text": "Commented-code block (5 lines) in lib/omie-pedido-venda.js:156"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-92ac342593048048", "name": "Commented-code block (8 lines) in lib/pdf-parser-server.js:35", "shortDescription": {"text": "Commented-code block (8 lines) in lib/pdf-parser-server.js:35"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-c559ab074c07a145", "name": "Commented-code block (7 lines) in lib/sigissweb.js:6", "shortDescription": {"text": "Commented-code block (7 lines) in lib/sigissweb.js: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-8df8b22a7c03eb1a", "name": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-qualidade.js:35", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-qualidade.js:35"}, "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-4ce640a1f376fadd", "name": "Commented-code block (5 lines) in lib/pmp-corte.js:1", "shortDescription": {"text": "Commented-code block (5 lines) in lib/pmp-corte.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-5cf220f4bc0e11e6", "name": "Commented-code block (5 lines) in lib/assistente/system-prompt.js:15", "shortDescription": {"text": "Commented-code block (5 lines) in lib/assistente/system-prompt.js:15"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/21551"}, "properties": {"repository": "Torgmetal/portal-compras", "repoUrl": "https://github.com/Torgmetal/portal-compras", "branch": "main"}, "results": [{"ruleId": "scanner-bead75b0f9233e05", "level": "none", "message": {"text": "No API endpoints detected"}, "properties": {"repobilityId": "0f8bb852027c38f8", "scanner": "scanner-primary", "fingerprint": "bead75b0f9233e05", "layer": "api", "severity": "info", "confidence": 1.0, "tags": ["coverage"]}}, {"ruleId": "scanner-dfc24180e35feaaf", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 next.config.js:24"}, "properties": {"repobilityId": "a38a121676da3c4a", "scanner": "scanner-primary", "fingerprint": "dfc24180e35feaaf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-15c6e60dce7c3c4e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/mes-sync-agent.js:94"}, "properties": {"repobilityId": "3140af3afc83c8df", "scanner": "scanner-primary", "fingerprint": "15c6e60dce7c3c4e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1513c4aa79d53c1c", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/importar-omie-crm.js:95"}, "properties": {"repobilityId": "86e9fe3f007a4ff5", "scanner": "scanner-primary", "fingerprint": "1513c4aa79d53c1c", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-64dfc6edd789ea04", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/ska-explorar.js:53"}, "properties": {"repobilityId": "9d07355f4cd6decd", "scanner": "scanner-primary", "fingerprint": "64dfc6edd789ea04", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-95f46a76b2fc52a3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/TorguinhoChat.jsx:82"}, "properties": {"repobilityId": "72c76d65b9f9e02f", "scanner": "scanner-primary", "fingerprint": "95f46a76b2fc52a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-867af2502841f498", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/ControleFinanceiroOP.jsx:194"}, "properties": {"repobilityId": "980d3aefa4270bae", "scanner": "scanner-primary", "fingerprint": "867af2502841f498", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a5c6dba5f40e7181", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarUserFooter.jsx:18"}, "properties": {"repobilityId": "82d571c0de941a54", "scanner": "scanner-primary", "fingerprint": "a5c6dba5f40e7181", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7d042f47c64e9743", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/SidebarModuleSwitcher.jsx:226"}, "properties": {"repobilityId": "68283fc004041469", "scanner": "scanner-primary", "fingerprint": "7d042f47c64e9743", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0e3494e69a4894b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/PedidosOmieSection.jsx:125"}, "properties": {"repobilityId": "dff299afe8ad3f17", "scanner": "scanner-primary", "fingerprint": "0e3494e69a4894b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-51edb762740d30cf", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 components/FDAvulsosSection.jsx:346"}, "properties": {"repobilityId": "e7a5b945a85e9f25", "scanner": "scanner-primary", "fingerprint": "51edb762740d30cf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3b49732f66334aaa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/FDAvulsosSection.jsx:874"}, "properties": {"repobilityId": "e2d1b370de88190c", "scanner": "scanner-primary", "fingerprint": "3b49732f66334aaa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8d7acb1697b975b3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/compras/PainelServicosRM.jsx:104"}, "properties": {"repobilityId": "008afc9cea431df2", "scanner": "scanner-primary", "fingerprint": "8d7acb1697b975b3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0093d445e13860fa", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 components/pcp/SetorPageClient.jsx:375"}, "properties": {"repobilityId": "c5d0b1563ed00eae", "scanner": "scanner-primary", "fingerprint": "0093d445e13860fa", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-56c2c80b304742fe", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/RMsTabelaSeletor.jsx:283"}, "properties": {"repobilityId": "a972e1d52d0255c5", "scanner": "scanner-primary", "fingerprint": "56c2c80b304742fe", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-af18328a000cb757", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/compras/RMsTabelaSeletor.jsx:898"}, "properties": {"repobilityId": "dfda4b2d62abfe17", "scanner": "scanner-primary", "fingerprint": "af18328a000cb757", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-237106d4d2cd7ec4", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/compras/notificacoes/NotificacoesClient.jsx:541"}, "properties": {"repobilityId": "a38f8a60d1e7b08c", "scanner": "scanner-primary", "fingerprint": "237106d4d2cd7ec4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-75c1a1a22103e11c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/page.js:193"}, "properties": {"repobilityId": "478f95356849e04d", "scanner": "scanner-primary", "fingerprint": "75c1a1a22103e11c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b6e25fd832c82212", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:679"}, "properties": {"repobilityId": "d9f935c2cf74335e", "scanner": "scanner-primary", "fingerprint": "b6e25fd832c82212", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c14a7635f9c365a0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/consumiveis/page.js:175"}, "properties": {"repobilityId": "5bf0460bf7b7aa15", "scanner": "scanner-primary", "fingerprint": "c14a7635f9c365a0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82de156f6f90db78", "level": "note", "message": {"text": "\"active\" state uses light bg in a dark theme \u2014 app/compras/saldo-materiais/SaldoMateriaisClient.jsx:496"}, "properties": {"repobilityId": "dd44a18f3202da96", "scanner": "scanner-primary", "fingerprint": "82de156f6f90db78", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.active-light-bg"]}}, {"ruleId": "scanner-fec62a870e41ce6d", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1423"}, "properties": {"repobilityId": "76c3e03768944119", "scanner": "scanner-primary", "fingerprint": "fec62a870e41ce6d", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-72d6eb01c2a1e7cc", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1224"}, "properties": {"repobilityId": "aa447199c02b9d05", "scanner": "scanner-primary", "fingerprint": "72d6eb01c2a1e7cc", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-1f6b2e52ff23f779", "level": "note", "message": {"text": "Icon-only button without accessible name \u2014 app/compras/vendorlist/VendorListClient.jsx:621"}, "properties": {"repobilityId": "14be595a715f94a8", "scanner": "scanner-primary", "fingerprint": "1f6b2e52ff23f779", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.button.no-label"]}}, {"ruleId": "scanner-3487062cad9c4e17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/cronograma/CronogramaClient.jsx:633"}, "properties": {"repobilityId": "ff51ca2163680430", "scanner": "scanner-primary", "fingerprint": "3487062cad9c4e17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-15b92d6b2e26faad", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/compras/materiais/MateriaisOPPageClient.jsx:154"}, "properties": {"repobilityId": "243b554ac3a3ac54", "scanner": "scanner-primary", "fingerprint": "15b92d6b2e26faad", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c9567cf00b02ded9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/DataBooksClient.jsx:66"}, "properties": {"repobilityId": "22df9e39f0f2d349", "scanner": "scanner-primary", "fingerprint": "c9567cf00b02ded9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3aff2e39e18144e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/qualidade/data-books/[id]/DataBookDetalheClient.jsx:228"}, "properties": {"repobilityId": "f53b1545d4021653", "scanner": "scanner-primary", "fingerprint": "3aff2e39e18144e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8a3b17403cc4b646", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx:609"}, "properties": {"repobilityId": "877edb034aa1ba0d", "scanner": "scanner-primary", "fingerprint": "8a3b17403cc4b646", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a63a3647c5940c79", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/pecas/PecasClient.jsx:1275"}, "properties": {"repobilityId": "7cf9b66f2ff0f031", "scanner": "scanner-primary", "fingerprint": "a63a3647c5940c79", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ca42db6c54847bfb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/mes/MesClient.jsx:435"}, "properties": {"repobilityId": "35929aa1ec7d2d8d", "scanner": "scanner-primary", "fingerprint": "ca42db6c54847bfb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0023c57feeb20003", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/consulta-estoque/ConsultaEstoqueListClient.jsx:94"}, "properties": {"repobilityId": "4e5e1f5bb678024d", "scanner": "scanner-primary", "fingerprint": "0023c57feeb20003", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6d470585b4492a39", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorClient.jsx:509"}, "properties": {"repobilityId": "86462ecabcd44f8b", "scanner": "scanner-primary", "fingerprint": "6d470585b4492a39", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-49cafb85a30eaa27", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/SetorPlaceholder.jsx:189"}, "properties": {"repobilityId": "28d94511c24a46b2", "scanner": "scanner-primary", "fingerprint": "49cafb85a30eaa27", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e4b117296230cc7e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1302"}, "properties": {"repobilityId": "9e9b737056db4439", "scanner": "scanner-primary", "fingerprint": "e4b117296230cc7e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2cb66806d3310737", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/programacao/montagem/MontagemClient.jsx:558"}, "properties": {"repobilityId": "bf4753045c3c1f56", "scanner": "scanner-primary", "fingerprint": "2cb66806d3310737", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f07a8a3052a53067", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/producao/romaneios/page.js:222"}, "properties": {"repobilityId": "0eeca128ee9907a9", "scanner": "scanner-primary", "fingerprint": "f07a8a3052a53067", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-6f78ca3f937876a4", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 app/api/mes/sync-ordens/route.js:82"}, "properties": {"repobilityId": "166c3c170f4d0acb", "scanner": "scanner-primary", "fingerprint": "6f78ca3f937876a4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-c2b721324f98e8b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rm/page.js:193"}, "properties": {"repobilityId": "897b2457d164b435", "scanner": "scanner-primary", "fingerprint": "c2b721324f98e8b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0caee6ce576478db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rm/nova/NovaRMClient.jsx:1116"}, "properties": {"repobilityId": "b9c4b9bd504e8dfb", "scanner": "scanner-primary", "fingerprint": "0caee6ce576478db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f36670836f1caac1", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/FinanceiroClient.jsx:245"}, "properties": {"repobilityId": "90d1993dc660012a", "scanner": "scanner-primary", "fingerprint": "f36670836f1caac1", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f66b3113a4888582", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/financeiro/a-pagar-por-obra/APagarPorObraClient.jsx:35"}, "properties": {"repobilityId": "ef2a6c29f413135f", "scanner": "scanner-primary", "fingerprint": "f66b3113a4888582", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-68a68c5e7b843974", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:394"}, "properties": {"repobilityId": "aab4459e1fda66c7", "scanner": "scanner-primary", "fingerprint": "68a68c5e7b843974", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7cffdeaa538eeac2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/PropostasClient.jsx:315"}, "properties": {"repobilityId": "25add01b019c8e15", "scanner": "scanner-primary", "fingerprint": "7cffdeaa538eeac2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0d23b21b34d6936b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:583"}, "properties": {"repobilityId": "a866d3482de69ffd", "scanner": "scanner-primary", "fingerprint": "0d23b21b34d6936b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cc24faef43bbf632", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:292"}, "properties": {"repobilityId": "a64725ef715ce211", "scanner": "scanner-primary", "fingerprint": "cc24faef43bbf632", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9fb19c17dbb2a027", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:504"}, "properties": {"repobilityId": "ed9098af45b8c943", "scanner": "scanner-primary", "fingerprint": "9fb19c17dbb2a027", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d0bd87e4c6060110", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:347"}, "properties": {"repobilityId": "f912fec0bfaf2e8e", "scanner": "scanner-primary", "fingerprint": "d0bd87e4c6060110", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e12334ac86d20739", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:451"}, "properties": {"repobilityId": "4b1fa966b3abf188", "scanner": "scanner-primary", "fingerprint": "e12334ac86d20739", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-0f3fa3fe427a1457", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/pipeline/PipelineClient.jsx:231"}, "properties": {"repobilityId": "10df111ca7b8aca8", "scanner": "scanner-primary", "fingerprint": "0f3fa3fe427a1457", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1736276cc3a06b65", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/acompanhamento/AcompanhamentoClient.jsx:185"}, "properties": {"repobilityId": "59552bfb1c94a0ac", "scanner": "scanner-primary", "fingerprint": "1736276cc3a06b65", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8fcfac6b36466fa4", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/orcamentos/kpis/KPIsClient.jsx:162"}, "properties": {"repobilityId": "17662f83f9e9474e", "scanner": "scanner-primary", "fingerprint": "8fcfac6b36466fa4", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c2425280d0e2c64a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:377"}, "properties": {"repobilityId": "cc07d644b3e22deb", "scanner": "scanner-primary", "fingerprint": "c2425280d0e2c64a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-82ea8d6be22e8290", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresComercialClient.jsx:136"}, "properties": {"repobilityId": "06f86e7371255079", "scanner": "scanner-primary", "fingerprint": "82ea8d6be22e8290", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-99a0ff1097dece9e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresRHClient.jsx:173"}, "properties": {"repobilityId": "5ba2bb5204d41974", "scanner": "scanner-primary", "fingerprint": "99a0ff1097dece9e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a160f863f10a9265", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/indicadores/IndicadoresClient.jsx:152"}, "properties": {"repobilityId": "fb0da9e62737231a", "scanner": "scanner-primary", "fingerprint": "a160f863f10a9265", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c0fb37a4d156a215", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/expedicao-semanal/ExpedicaoSemanalClient.jsx:218"}, "properties": {"repobilityId": "b4265b6126a75905", "scanner": "scanner-primary", "fingerprint": "c0fb37a4d156a215", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9f1b769ac61141e7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/tarefas/TarefasClient.jsx:262"}, "properties": {"repobilityId": "6f11ba1ac6a557ca", "scanner": "scanner-primary", "fingerprint": "9f1b769ac61141e7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4167115e520b967e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/analise-critica/AnaliseCriticaClient.jsx:121"}, "properties": {"repobilityId": "46b04da12760a41b", "scanner": "scanner-primary", "fingerprint": "4167115e520b967e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d8fce3ea2bb5a1d9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/compromissos/CompromissosClient.jsx:221"}, "properties": {"repobilityId": "c5b24fe0597a7ca9", "scanner": "scanner-primary", "fingerprint": "d8fce3ea2bb5a1d9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-058862bd1dfb94db", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:343"}, "properties": {"repobilityId": "cacf79e8c988caf0", "scanner": "scanner-primary", "fingerprint": "058862bd1dfb94db", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3050b932885fa3ba", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/planejamento/programacao/ProgramacaoClient.jsx:297"}, "properties": {"repobilityId": "b4508ed058b5753d", "scanner": "scanner-primary", "fingerprint": "3050b932885fa3ba", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cf679319605e6944", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/planta/PlantaClient.jsx:649"}, "properties": {"repobilityId": "bff3b37436b75e5f", "scanner": "scanner-primary", "fingerprint": "cf679319605e6944", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7b4983a21d62e019", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/organograma/OrganoClient.jsx:116"}, "properties": {"repobilityId": "2bf3447aceb539fa", "scanner": "scanner-primary", "fingerprint": "7b4983a21d62e019", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-aac7357368cc78b2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/documentos/DocumentosClient.jsx:884"}, "properties": {"repobilityId": "88982d97e8dcd16c", "scanner": "scanner-primary", "fingerprint": "aac7357368cc78b2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-533639d0ddc57e8c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/vagas/VagasClient.jsx:243"}, "properties": {"repobilityId": "a8d8a826ec2013e0", "scanner": "scanner-primary", "fingerprint": "533639d0ddc57e8c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d779aa09f3c920b6", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/cargos/CargosClient.jsx:302"}, "properties": {"repobilityId": "5077f69f2a932243", "scanner": "scanner-primary", "fingerprint": "d779aa09f3c920b6", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e5e85b0d4971daa9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/setores/SetoresClient.jsx:197"}, "properties": {"repobilityId": "0259a96f50c06e8a", "scanner": "scanner-primary", "fingerprint": "e5e85b0d4971daa9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-16150d56d4df8680", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:788"}, "properties": {"repobilityId": "90d8886780f5f09e", "scanner": "scanner-primary", "fingerprint": "16150d56d4df8680", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-618a8fc6c7795a6b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/PCPDashboardClient.jsx:391"}, "properties": {"repobilityId": "a1f14b37e3aff4bc", "scanner": "scanner-primary", "fingerprint": "618a8fc6c7795a6b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-006f98d8b2daa787", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/pcp/fila-corte/FilaCorteClient.jsx:435"}, "properties": {"repobilityId": "eb17aa782fec0b62", "scanner": "scanner-primary", "fingerprint": "006f98d8b2daa787", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7606e0e1df879c0b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/ExpedicaoClient.jsx:149"}, "properties": {"repobilityId": "ac641081233e2166", "scanner": "scanner-primary", "fingerprint": "7606e0e1df879c0b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7a838b4aa69272e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/ChecklistClient.jsx:135"}, "properties": {"repobilityId": "62e47c8bb564d671", "scanner": "scanner-primary", "fingerprint": "7a838b4aa69272e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-8670a27d285fb239", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/checklist/PlanejamentoCargaSection.jsx:261"}, "properties": {"repobilityId": "d6e1a8b686e8d799", "scanner": "scanner-primary", "fingerprint": "8670a27d285fb239", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-23cf3e4a7ad858e2", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20"}, "properties": {"repobilityId": "6deb7581691c8ac4", "scanner": "scanner-primary", "fingerprint": "23cf3e4a7ad858e2", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-e9afcbf5d5b94135", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 app/expedicao/pedidos/PedidosExpedicaoClient.jsx:149"}, "properties": {"repobilityId": "cb24377e35c06141", "scanner": "scanner-primary", "fingerprint": "e9afcbf5d5b94135", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-dbcc6f884f046dd0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-compra.js:90"}, "properties": {"repobilityId": "e7f672d197dfd3e1", "scanner": "scanner-primary", "fingerprint": "dbcc6f884f046dd0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5cebc4b5541bef1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-pedido-venda.js:66"}, "properties": {"repobilityId": "548b006bda9ce007", "scanner": "scanner-primary", "fingerprint": "5cebc4b5541bef1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b06839512ee381c8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 lib/omie-ordem-servico.js:50"}, "properties": {"repobilityId": "673265ec7b3b6cf5", "scanner": "scanner-primary", "fingerprint": "b06839512ee381c8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a4e627e5180bac4a", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in next.config.js:1"}, "properties": {"repobilityId": "ecee385d3b1b5b82", "scanner": "scanner-primary", "fingerprint": "a4e627e5180bac4a", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "next.config.js"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-e1cbcdd16ddf0feb", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/atualizar.mjs:12"}, "properties": {"repobilityId": "301b70efb220562c", "scanner": "scanner-primary", "fingerprint": "e1cbcdd16ddf0feb", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/atualizar.mjs"}, "region": {"startLine": 12}}}]}, {"ruleId": "scanner-7be0f6b71a3b74a9", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in components/TorguinhoChat.jsx:58"}, "properties": {"repobilityId": "f1682613af0c047f", "scanner": "scanner-primary", "fingerprint": "7be0f6b71a3b74a9", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "components/TorguinhoChat.jsx"}, "region": {"startLine": 58}}}]}, {"ruleId": "scanner-fee463d5980ca535", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/RMsTabelaSeletor.jsx:369"}, "properties": {"repobilityId": "2dbaa1c0ba249ff7", "scanner": "scanner-primary", "fingerprint": "fee463d5980ca535", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/compras/RMsTabelaSeletor.jsx"}, "region": {"startLine": 369}}}]}, {"ruleId": "scanner-93fd2901325a2192", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:26"}, "properties": {"repobilityId": "6db35e8165fba23c", "scanner": "scanner-primary", "fingerprint": "93fd2901325a2192", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx"}, "region": {"startLine": 26}}}]}, {"ruleId": "scanner-49732764aa531046", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/compras/rm/[id]/RMComprasClient.jsx:1234"}, "properties": {"repobilityId": "3b276ed9dd5174f3", "scanner": "scanner-primary", "fingerprint": "49732764aa531046", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/compras/rm/[id]/RMComprasClient.jsx"}, "region": {"startLine": 1234}}}]}, {"ruleId": "scanner-32861bd3c1251d00", "level": "warning", "message": {"text": "Insecure pattern 'direct_innerhtml_assignment' in app/admin/torguinho/page.js:114"}, "properties": {"repobilityId": "4f070e85baa10d0d", "scanner": "scanner-primary", "fingerprint": "32861bd3c1251d00", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "direct_innerhtml_assignment"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/admin/torguinho/page.js"}, "region": {"startLine": 114}}}]}, {"ruleId": "scanner-879a110cfcdf0d39", "level": "note", "message": {"text": "Insecure pattern 'document_write' in app/planejamento/cronogramas/CronogramasClient.jsx:3672"}, "properties": {"repobilityId": "8f30fe2cf36b87e3", "scanner": "scanner-primary", "fingerprint": "879a110cfcdf0d39", "layer": "security", "severity": "low", "confidence": 1.0, "tags": ["owasp", "document_write"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/planejamento/cronogramas/CronogramasClient.jsx"}, "region": {"startLine": 3672}}}]}, {"ruleId": "scanner-25968a714eb25be4", "level": "warning", "message": {"text": "Insecure pattern 'dangerous_innerhtml' in app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx:20"}, "properties": {"repobilityId": "9f6124effc5eeee2", "scanner": "scanner-primary", "fingerprint": "25968a714eb25be4", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "dangerous_innerhtml"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "app/expedicao/romaneio/[id]/imprimir/RomaneioDoc.jsx"}, "region": {"startLine": 20}}}]}, {"ruleId": "scanner-cb639d9a10a47b23", "level": "note", "message": {"text": "package.json defines install-time lifecycle scripts"}, "properties": {"repobilityId": "edeab51902066991", "scanner": "scanner-primary", "fingerprint": "cb639d9a10a47b23", "layer": "cicd", "severity": "low", "confidence": 1.0, "tags": ["supply-chain", "npm", "install-scripts"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "package.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-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-e4d861d92500fd02", "level": "note", "message": {"text": "Very large file: app/compras/RMsTabelaSeletor.jsx (1152 lines)"}, "properties": {"repobilityId": "559f72029d24d1d1", "scanner": "scanner-primary", "fingerprint": "e4d861d92500fd02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f3df1053e0f61fbc", "level": "note", "message": {"text": "Very large file: app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx (1378 lines)"}, "properties": {"repobilityId": "6c4804a14b512861", "scanner": "scanner-primary", "fingerprint": "f3df1053e0f61fbc", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-ddef6d8050215f8d", "level": "note", "message": {"text": "Very large file: app/compras/rm/[id]/RMComprasClient.jsx (3915 lines)"}, "properties": {"repobilityId": "82005dc7ac415185", "scanner": "scanner-primary", "fingerprint": "ddef6d8050215f8d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-7674edad5e6fd09f", "level": "note", "message": {"text": "Very large file: app/compras/cronograma/CronogramaClient.jsx (1482 lines)"}, "properties": {"repobilityId": "44baca6000c03be7", "scanner": "scanner-primary", "fingerprint": "7674edad5e6fd09f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-c35df8be03655d24", "level": "note", "message": {"text": "Very large file: app/fornecedores/c/[token]/CotacaoFornecedorForm.jsx (1117 lines)"}, "properties": {"repobilityId": "38adfb73a3c215ba", "scanner": "scanner-primary", "fingerprint": "c35df8be03655d24", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3f6dc6a3c2bf5e4a", "level": "note", "message": {"text": "Very large file: app/producao/pecas/PecasClient.jsx (1462 lines)"}, "properties": {"repobilityId": "808370da7c094616", "scanner": "scanner-primary", "fingerprint": "3f6dc6a3c2bf5e4a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5cb3b9576dcb8349", "level": "note", "message": {"text": "Very large file: app/producao/mes/MesClient.jsx (1702 lines)"}, "properties": {"repobilityId": "b6f1a3dd6610ce48", "scanner": "scanner-primary", "fingerprint": "5cb3b9576dcb8349", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-916934377614454a", "level": "note", "message": {"text": "Very large file: app/producao/programacao/corte/ProgramacaoCorteClient.jsx (2522 lines)"}, "properties": {"repobilityId": "79e307fbb3f86824", "scanner": "scanner-primary", "fingerprint": "916934377614454a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-cce6f8d622dd94c7", "level": "note", "message": {"text": "Very large file: app/producao/controle/ControleClient.jsx (1339 lines)"}, "properties": {"repobilityId": "25dddd64dff75940", "scanner": "scanner-primary", "fingerprint": "cce6f8d622dd94c7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-24b27659e12a73f7", "level": "note", "message": {"text": "Very large file: app/rm/nova/NovaRMClient.jsx (1159 lines)"}, "properties": {"repobilityId": "22d8d9c75243f726", "scanner": "scanner-primary", "fingerprint": "24b27659e12a73f7", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-237c71fb6705b169", "level": "note", "message": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx (1333 lines)"}, "properties": {"repobilityId": "945d35a55a90b267", "scanner": "scanner-primary", "fingerprint": "237c71fb6705b169", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-688c44cf29b82ce3", "level": "note", "message": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx (2985 lines)"}, "properties": {"repobilityId": "682845d71246b54f", "scanner": "scanner-primary", "fingerprint": "688c44cf29b82ce3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-f33abafe3f7d3062", "level": "note", "message": {"text": "Very large file: app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx (960 lines)"}, "properties": {"repobilityId": "cfc1351a75a5f3e3", "scanner": "scanner-primary", "fingerprint": "f33abafe3f7d3062", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-75b169cb1748419d", "level": "note", "message": {"text": "Very large file: app/comercial/[id]/OPDetailClient.jsx (2918 lines)"}, "properties": {"repobilityId": "cb6712e3b651d1c1", "scanner": "scanner-primary", "fingerprint": "75b169cb1748419d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-1defadfb1c29b2d6", "level": "note", "message": {"text": "Very large file: app/comercial/[id]/kickoff/KickoffClient.jsx (1069 lines)"}, "properties": {"repobilityId": "4e1d92f7a153c466", "scanner": "scanner-primary", "fingerprint": "1defadfb1c29b2d6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-175501df223b94a2", "level": "note", "message": {"text": "Very large file: app/indicadores/IndicadoresClient.jsx (1037 lines)"}, "properties": {"repobilityId": "e151386b9ef1baac", "scanner": "scanner-primary", "fingerprint": "175501df223b94a2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-faf0ca7b64b33032", "level": "note", "message": {"text": "Very large file: app/planejamento/cronogramas/CronogramasClient.jsx (3844 lines)"}, "properties": {"repobilityId": "b357af0960349f28", "scanner": "scanner-primary", "fingerprint": "faf0ca7b64b33032", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9537d736bfe0eb55", "level": "note", "message": {"text": "Very large file: app/rh/documentos/DocumentosClient.jsx (1209 lines)"}, "properties": {"repobilityId": "7a6a4e002c73ea5a", "scanner": "scanner-primary", "fingerprint": "9537d736bfe0eb55", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-4f5c318ded92948e", "level": "note", "message": {"text": "Very large file: app/expedicao/relatorio/RelatorioExpedicaoClient.jsx (1148 lines)"}, "properties": {"repobilityId": "21b6605cc00c8c3b", "scanner": "scanner-primary", "fingerprint": "4f5c318ded92948e", "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": "f8ec088fb5704e25", "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": "7feb316d61b206ad", "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": "a39924ceadd5c962", "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": "3ad3b21997d1ec3c", "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": "bd45c1799c28665e", "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": "5620c8590ff38d70", "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": "717ec457c8bba741", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "66dbc2d57945267f", "scanner": "scanner-primary", "fingerprint": "749d4bc1bd66df5f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-ea8f3013f588db25", "level": "note", "message": {"text": "Shallow git history limits provenance confidence"}, "properties": {"repobilityId": "10981251da0109eb", "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": "778fc298d0087090", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-122f91b7f2906dc4", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/settings.json"}, "properties": {"repobilityId": "a2967269048b6a9d", "scanner": "scanner-primary", "fingerprint": "122f91b7f2906dc4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-2c5f98b152cddb6d", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/launch.json"}, "properties": {"repobilityId": "0de48c0f4ab303d8", "scanner": "scanner-primary", "fingerprint": "2c5f98b152cddb6d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/launch.json"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-1149d2c4e4978a2b", "level": "none", "message": {"text": "Commented-code block (10 lines) in middleware.js:4"}, "properties": {"repobilityId": "1c160911a9b7a032", "scanner": "scanner-primary", "fingerprint": "1149d2c4e4978a2b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8bc3dc91a8bd6587", "level": "none", "message": {"text": "Commented-code block (7 lines) in next.config.js:19"}, "properties": {"repobilityId": "97b4df50eba4c174", "scanner": "scanner-primary", "fingerprint": "8bc3dc91a8bd6587", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b05eb15ec29861e8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/mes-sync-agent.js:264"}, "properties": {"repobilityId": "79c42d42a486d940", "scanner": "scanner-primary", "fingerprint": "b05eb15ec29861e8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-83345326fdaf436f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/importar-omie-crm.js:74"}, "properties": {"repobilityId": "024ae07ca2b6d29e", "scanner": "scanner-primary", "fingerprint": "83345326fdaf436f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a05a2cd4040236a2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 scripts/ska-explorar.js:43"}, "properties": {"repobilityId": "7f6f1c4cb9deeb13", "scanner": "scanner-primary", "fingerprint": "a05a2cd4040236a2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8d886a8e1a12b8ae", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/TorguinhoChat.jsx:214"}, "properties": {"repobilityId": "ad4af1305ac594ff", "scanner": "scanner-primary", "fingerprint": "8d886a8e1a12b8ae", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e9a3b1476084e4ff", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/FDAvulsosSection.jsx:325"}, "properties": {"repobilityId": "8d7e133276f5312c", "scanner": "scanner-primary", "fingerprint": "e9a3b1476084e4ff", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-5ad2a34577c516ba", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMHeaderActions.jsx:69"}, "properties": {"repobilityId": "f9c890897a47576a", "scanner": "scanner-primary", "fingerprint": "5ad2a34577c516ba", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6b95996315aba54e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 components/RMRowActions.jsx:42"}, "properties": {"repobilityId": "57505f87a0d6bdf7", "scanner": "scanner-primary", "fingerprint": "6b95996315aba54e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9ffaf46384a779de", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/compras/RMsTabelaSeletor.jsx:26"}, "properties": {"repobilityId": "c47c7ca78486090e", "scanner": "scanner-primary", "fingerprint": "9ffaf46384a779de", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e271996214dc2818", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:283"}, "properties": {"repobilityId": "c5d4a2d54d1cf97d", "scanner": "scanner-primary", "fingerprint": "e271996214dc2818", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-daaf8d3d2d74f07f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/painel-ops/[opId]/MapaCotacaoClient.jsx:195"}, "properties": {"repobilityId": "94e2487128d2f328", "scanner": "scanner-primary", "fingerprint": "daaf8d3d2d74f07f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24a16c64cd7783a7", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/compras/rm/[id]/page.js:158"}, "properties": {"repobilityId": "6d68e31c0c547ac6", "scanner": "scanner-primary", "fingerprint": "24a16c64cd7783a7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f9b938c3749255d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/compras/rm/[id]/RMComprasClient.jsx:3548"}, "properties": {"repobilityId": "edbfa62ea46b1c5a", "scanner": "scanner-primary", "fingerprint": "3f9b938c3749255d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0631d6a6bb98ac00", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/compras/rm/[id]/RMComprasClient.jsx:1813"}, "properties": {"repobilityId": "cdec02afc03daf5f", "scanner": "scanner-primary", "fingerprint": "0631d6a6bb98ac00", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-41b18b529b91a35f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/qualidade/QualidadeClient.jsx:55"}, "properties": {"repobilityId": "ae378a54e3c62c32", "scanner": "scanner-primary", "fingerprint": "41b18b529b91a35f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e6f033a66a654a8", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/frete/[token]/FreteFormClient.jsx:33"}, "properties": {"repobilityId": "9352fa793204c303", "scanner": "scanner-primary", "fingerprint": "9e6f033a66a654a8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9b4f9921847f3f17", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/fornecedores/estudo/[token]/EstudoCotacaoFormClient.jsx:35"}, "properties": {"repobilityId": "e3f9534dce1f4600", "scanner": "scanner-primary", "fingerprint": "9b4f9921847f3f17", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-24a92229e4df2f68", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/pecas/PecasClient.jsx:1200"}, "properties": {"repobilityId": "5e0463965fb1f15d", "scanner": "scanner-primary", "fingerprint": "24a92229e4df2f68", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3dc71f4977a6a75f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/consulta-estoque/[id]/ConsultaEstoqueResponder.jsx:55"}, "properties": {"repobilityId": "a7252ede8bcdb9fb", "scanner": "scanner-primary", "fingerprint": "3dc71f4977a6a75f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f26149be0e66ba42", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/programacao/corte/ProgramacaoCorteClient.jsx:1950"}, "properties": {"repobilityId": "905e95aa802ab3bc", "scanner": "scanner-primary", "fingerprint": "f26149be0e66ba42", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f25109659612984a", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/producao/programacao/montagem/MontagemClient.jsx:44"}, "properties": {"repobilityId": "f0eedfd3579c4e05", "scanner": "scanner-primary", "fingerprint": "f25109659612984a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-316d149e0de846c2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/producao/controle/ControleClient.jsx:198"}, "properties": {"repobilityId": "601fc5793a720198", "scanner": "scanner-primary", "fingerprint": "316d149e0de846c2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-82bf07c00f0eed17", "level": "note", "message": {"text": "Legacy-named symbol `recebidoLegacy` in app/api/compras/saldo-materiais/route.js:136"}, "properties": {"repobilityId": "dbc3b248a2a15409", "scanner": "scanner-primary", "fingerprint": "82bf07c00f0eed17", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-e525de549276fe6e", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/qualidade/data-books/secao/[secaoId]/popular-material/route.js:1"}, "properties": {"repobilityId": "49115295bfbb9ee2", "scanner": "scanner-primary", "fingerprint": "e525de549276fe6e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cb2ffeb270a2e309", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/qualidade/documentos/upload-token/route.js:1"}, "properties": {"repobilityId": "43b48dbcaa317085", "scanner": "scanner-primary", "fingerprint": "cb2ffeb270a2e309", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00b26c90ed057ae2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/qualidade/documentos/importar/route.js:34"}, "properties": {"repobilityId": "0b20cdf98afa5224", "scanner": "scanner-primary", "fingerprint": "00b26c90ed057ae2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d37cce9175fd6ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/op/[id]/gerar-pedidos/route.js:329"}, "properties": {"repobilityId": "70d08dc48d587015", "scanner": "scanner-primary", "fingerprint": "6d37cce9175fd6ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48f249934f1cbb55", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/producao/pecas/marcar-conjunto/route.js:1"}, "properties": {"repobilityId": "b031fea8eb90708c", "scanner": "scanner-primary", "fingerprint": "48f249934f1cbb55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d8106403bc757205", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/producao/pecas/importar-lpc-revisao/route.js:1"}, "properties": {"repobilityId": "848f1ff297d579d6", "scanner": "scanner-primary", "fingerprint": "d8106403bc757205", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-48c9a246d6d14648", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/producao/pecas/sharepoint-drives/route.js:39"}, "properties": {"repobilityId": "bb92e96797b891f9", "scanner": "scanner-primary", "fingerprint": "48c9a246d6d14648", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6d2e56664d3b3b7a", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/rm/route.js:75"}, "properties": {"repobilityId": "94868a4ab3123bc5", "scanner": "scanner-primary", "fingerprint": "6d2e56664d3b3b7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a1a05f798b74950", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/rm/[id]/gerar-pedido-direto/route.js:1"}, "properties": {"repobilityId": "0b7f9e44ee2daabc", "scanner": "scanner-primary", "fingerprint": "2a1a05f798b74950", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6952fe234aded825", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/api/financeiro/a-pagar-por-obra/route.js:1"}, "properties": {"repobilityId": "c04017a543f70b0c", "scanner": "scanner-primary", "fingerprint": "6952fe234aded825", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d35219447cabfe3b", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/comercial/op/[id]/kickoff/enviar/route.js:1"}, "properties": {"repobilityId": "da2df9632319a0e6", "scanner": "scanner-primary", "fingerprint": "d35219447cabfe3b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-aaaaa680f3a2b24d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-parafusos/route.js:84"}, "properties": {"repobilityId": "5c0c000842f641e7", "scanner": "scanner-primary", "fingerprint": "aaaaa680f3a2b24d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2f1cf4c533477f03", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar/route.js:100"}, "properties": {"repobilityId": "43b024c06054d76a", "scanner": "scanner-primary", "fingerprint": "2f1cf4c533477f03", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f258aac1992d0877", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/converter-dwg/route.js:89"}, "properties": {"repobilityId": "384d5f3961746832", "scanner": "scanner-primary", "fingerprint": "f258aac1992d0877", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0a6f8f055fd10836", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-acessorios/route.js:90"}, "properties": {"repobilityId": "f310cd05a93ceb5a", "scanner": "scanner-primary", "fingerprint": "0a6f8f055fd10836", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aa3ea14d9473d042", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/comercial/estudo/[id]/analisar-pintura/route.js:92"}, "properties": {"repobilityId": "7217cb608978f24e", "scanner": "scanner-primary", "fingerprint": "aa3ea14d9473d042", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-286aeb0f4a5e7125", "level": "note", "message": {"text": "Legacy-named symbol `recebidoLegacy` in app/api/planejamento/cronogramas/[id]/suprimentos/route.js:111"}, "properties": {"repobilityId": "fe1b2d41f025fa78", "scanner": "scanner-primary", "fingerprint": "286aeb0f4a5e7125", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-1c3bd0f2ee006642", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/rh/documentos/upload-token/route.js:1"}, "properties": {"repobilityId": "985140fed3667caa", "scanner": "scanner-primary", "fingerprint": "1c3bd0f2ee006642", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e3e6c8cb3b13435b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/romaneios/sharepoint/route.js:72"}, "properties": {"repobilityId": "06ad19d553cf3492", "scanner": "scanner-primary", "fingerprint": "e3e6c8cb3b13435b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-48d5cd30eb8f290d", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/estoque/diagnostico/route.js:1"}, "properties": {"repobilityId": "44f6c0f7565fbe66", "scanner": "scanner-primary", "fingerprint": "48d5cd30eb8f290d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-460bf450b8bfb2dc", "level": "none", "message": {"text": "Commented-code block (7 lines) in app/api/cotacao/[id]/lancar-manual/route.js:1"}, "properties": {"repobilityId": "09b93e30ad29bd99", "scanner": "scanner-primary", "fingerprint": "460bf450b8bfb2dc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a5229c7e9ce25b22", "level": "none", "message": {"text": "Commented-code block (8 lines) in app/api/pcp/fila-corte/route.js:1"}, "properties": {"repobilityId": "90d0538561ba3746", "scanner": "scanner-primary", "fingerprint": "a5229c7e9ce25b22", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0566e7b3ebab17b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/pcp/painel-corte/route.js:1"}, "properties": {"repobilityId": "17e2f1db92af7693", "scanner": "scanner-primary", "fingerprint": "0566e7b3ebab17b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-47edba41394630d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in app/api/expedicao/checklist/route.js:1"}, "properties": {"repobilityId": "d593ca3731530abf", "scanner": "scanner-primary", "fingerprint": "47edba41394630d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7c89417c38193efc", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/expedicao/programacao-cargas/route.js:80"}, "properties": {"repobilityId": "7adfe48ff6f367a3", "scanner": "scanner-primary", "fingerprint": "7c89417c38193efc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fcfcb644a7fc292d", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/api/pedido-omie/[id]/route.js:1"}, "properties": {"repobilityId": "d5151c5afc4a3969", "scanner": "scanner-primary", "fingerprint": "fcfcb644a7fc292d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dd01a03aecd0f04", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/categorias/route.js:34"}, "properties": {"repobilityId": "4b40e853c4a4db7f", "scanner": "scanner-primary", "fingerprint": "2dd01a03aecd0f04", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-e3589afadd5bdc7f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/api/omie/locais-estoque/route.js:28"}, "properties": {"repobilityId": "8872c2c6003819e6", "scanner": "scanner-primary", "fingerprint": "e3589afadd5bdc7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-da8c89bbe3ce4c90", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/_listagem.jsx:168"}, "properties": {"repobilityId": "ed2a0799a4dd9332", "scanner": "scanner-primary", "fingerprint": "da8c89bbe3ce4c90", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-36c2454243c29550", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/usuarios/[id]/page.js:135"}, "properties": {"repobilityId": "4138f67a71d0e4bd", "scanner": "scanner-primary", "fingerprint": "36c2454243c29550", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-651726135462542f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/admin/metas/MetasClient.jsx:203"}, "properties": {"repobilityId": "6d2f37222bde4678", "scanner": "scanner-primary", "fingerprint": "651726135462542f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-aef5422a025c6b51", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/financeiro/FinanceiroClient.jsx:355"}, "properties": {"repobilityId": "32c08bd6d6f686d9", "scanner": "scanner-primary", "fingerprint": "aef5422a025c6b51", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a84b999c1ee428e4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/OrcamentosClient.jsx:141"}, "properties": {"repobilityId": "494a8a14c0b8bf3c", "scanner": "scanner-primary", "fingerprint": "a84b999c1ee428e4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-c1efaa487fcc892f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaImpostos.jsx:138"}, "properties": {"repobilityId": "e62a4061136e11b4", "scanner": "scanner-primary", "fingerprint": "c1efaa487fcc892f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-85216bcb21d87a6b", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaAcessorios.jsx:990"}, "properties": {"repobilityId": "92eaba2d20ee9c2d", "scanner": "scanner-primary", "fingerprint": "85216bcb21d87a6b", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2b43a22a5ea9a26a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaFretes.jsx:423"}, "properties": {"repobilityId": "f41b90e0d82cd838", "scanner": "scanner-primary", "fingerprint": "2b43a22a5ea9a26a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2277b5b69448f799", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:135"}, "properties": {"repobilityId": "3f2107c2c21acbee", "scanner": "scanner-primary", "fingerprint": "2277b5b69448f799", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-af3c08f9987bff95", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCustos.jsx:210"}, "properties": {"repobilityId": "2d2a222970de079c", "scanner": "scanner-primary", "fingerprint": "af3c08f9987bff95", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-28e0095fe8481cd9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/EstudoDetalheClient.jsx:364"}, "properties": {"repobilityId": "8ece6d05a70e4c14", "scanner": "scanner-primary", "fingerprint": "28e0095fe8481cd9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-1a44765c30384fbb", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaPintura.jsx:530"}, "properties": {"repobilityId": "2c220ac4da475650", "scanner": "scanner-primary", "fingerprint": "1a44765c30384fbb", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-6c1516fd8c675c8c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaProdutividade.jsx:184"}, "properties": {"repobilityId": "daacf926d12abaa3", "scanner": "scanner-primary", "fingerprint": "6c1516fd8c675c8c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-3f2176d2e7d639e9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/orcamentos/propostas/[id]/AbaCronograma.jsx:181"}, "properties": {"repobilityId": "42a0fdddf4cd488f", "scanner": "scanner-primary", "fingerprint": "3f2176d2e7d639e9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-35d8df9f645d2b1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/OPDetailClient.jsx:512"}, "properties": {"repobilityId": "377a9e5a255fc937", "scanner": "scanner-primary", "fingerprint": "35d8df9f645d2b1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2dc3284b2e3d4ac2", "level": "none", "message": {"text": "Commented-code block (5 lines) in app/comercial/[id]/page.js:134"}, "properties": {"repobilityId": "4a1adeea9902112f", "scanner": "scanner-primary", "fingerprint": "2dc3284b2e3d4ac2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-64ef8ff1427c24e1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/comercial/[id]/kickoff/KickoffClient.jsx:114"}, "properties": {"repobilityId": "758516ecfc1db341", "scanner": "scanner-primary", "fingerprint": "64ef8ff1427c24e1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-804f96c0d202609f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/tarefas/TarefasClient.jsx:453"}, "properties": {"repobilityId": "a2f1de2a34c42db1", "scanner": "scanner-primary", "fingerprint": "804f96c0d202609f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-56310e147e2ddd60", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/CronogramasClient.jsx:445"}, "properties": {"repobilityId": "b800f1059a96d34d", "scanner": "scanner-primary", "fingerprint": "56310e147e2ddd60", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cf43b53c85c7aa8a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/cronogramas/resposta/[token]/page.js:63"}, "properties": {"repobilityId": "fec2c15721c72012", "scanner": "scanner-primary", "fingerprint": "cf43b53c85c7aa8a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-21cfe268f10b95e0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/planejamento/inicio-producao/InicioProducaoClient.jsx:125"}, "properties": {"repobilityId": "ace6cbfcec64fcda", "scanner": "scanner-primary", "fingerprint": "21cfe268f10b95e0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4b7d661cfba8c5d2", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/documentos/DocumentosClient.jsx:145"}, "properties": {"repobilityId": "842098c85f505554", "scanner": "scanner-primary", "fingerprint": "4b7d661cfba8c5d2", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4bc55cdc38835fde", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/vagas/VagasClient.jsx:58"}, "properties": {"repobilityId": "23ff60ecacaf6d4c", "scanner": "scanner-primary", "fingerprint": "4bc55cdc38835fde", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7271a421f13c7895", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/cargos/CargosClient.jsx:55"}, "properties": {"repobilityId": "a84ce8b6445e8a36", "scanner": "scanner-primary", "fingerprint": "7271a421f13c7895", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-8c1f227cc7ced1a5", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/acidentes/AcidentesClient.jsx:87"}, "properties": {"repobilityId": "a21112753b5d3f43", "scanner": "scanner-primary", "fingerprint": "8c1f227cc7ced1a5", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-08a4566fa2966a7f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/setores/SetoresClient.jsx:71"}, "properties": {"repobilityId": "372fcdd9a6c132c4", "scanner": "scanner-primary", "fingerprint": "08a4566fa2966a7f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-52326bfd2755751a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/afastamentos/AfastamentosClient.jsx:131"}, "properties": {"repobilityId": "417bb10a9c2150b5", "scanner": "scanner-primary", "fingerprint": "52326bfd2755751a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4467defd257e4dfe", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/treinamentos/TreinamentosClient.jsx:68"}, "properties": {"repobilityId": "52ea1a2c2ceaf687", "scanner": "scanner-primary", "fingerprint": "4467defd257e4dfe", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-ed417b7491abf450", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/rh/funcionarios/FuncionariosClient.jsx:147"}, "properties": {"repobilityId": "0fea7bdc954a3adc", "scanner": "scanner-primary", "fingerprint": "ed417b7491abf450", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f7fd896f4653b2ea", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/ExpedicaoClient.jsx:252"}, "properties": {"repobilityId": "437155498630b1ba", "scanner": "scanner-primary", "fingerprint": "f7fd896f4653b2ea", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-33d64ec7131f1eb4", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 app/expedicao/relatorio/RelatorioExpedicaoClient.jsx:132"}, "properties": {"repobilityId": "efe9f386c9b9f0bb", "scanner": "scanner-primary", "fingerprint": "33d64ec7131f1eb4", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-29551745395fa1e5", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/importar-lpc-merge.js:1"}, "properties": {"repobilityId": "fb6f1ad4faede266", "scanner": "scanner-primary", "fingerprint": "29551745395fa1e5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8b56f9e840ff7988", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-contas-receber.js:3"}, "properties": {"repobilityId": "040c766fb8a8a8cf", "scanner": "scanner-primary", "fingerprint": "8b56f9e840ff7988", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1ebb2e7efb4780a5", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/prisma.js:16"}, "properties": {"repobilityId": "64e0db9dd4c214f9", "scanner": "scanner-primary", "fingerprint": "1ebb2e7efb4780a5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eeb915316f101462", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-contas-pagas.js:3"}, "properties": {"repobilityId": "34122eab4d767c67", "scanner": "scanner-primary", "fingerprint": "eeb915316f101462", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0515379e1e6dc1bd", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/email.js:5"}, "properties": {"repobilityId": "33cdbed7e854735a", "scanner": "scanner-primary", "fingerprint": "0515379e1e6dc1bd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a4ef852d39c94de0", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-lpc.js:128"}, "properties": {"repobilityId": "e5f09730ff2b7993", "scanner": "scanner-primary", "fingerprint": "a4ef852d39c94de0", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-def883e84f66120d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/dwg-converter.js:49"}, "properties": {"repobilityId": "9adfd21b7384b813", "scanner": "scanner-primary", "fingerprint": "def883e84f66120d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7335469acff2c7b1", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-pedidos-abertos.js:4"}, "properties": {"repobilityId": "0b7582e72f5daf44", "scanner": "scanner-primary", "fingerprint": "7335469acff2c7b1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-19b1f947f6218acf", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/blob-url.js:3"}, "properties": {"repobilityId": "3333d7ce61b920d7", "scanner": "scanner-primary", "fingerprint": "19b1f947f6218acf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0544424a273bc7a4", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/databook-secoes.js:1"}, "properties": {"repobilityId": "a137d2d4454e719f", "scanner": "scanner-primary", "fingerprint": "0544424a273bc7a4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6e0033bab6ec34d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-recebimento.js:207"}, "properties": {"repobilityId": "694db8b738bbdf7c", "scanner": "scanner-primary", "fingerprint": "6e0033bab6ec34d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5e7f292991400c0d", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-recebimento.js:18"}, "properties": {"repobilityId": "f8d8ef1b3c53d5ff", "scanner": "scanner-primary", "fingerprint": "5e7f292991400c0d", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4853045f32461ebb", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/omie-export.js:3"}, "properties": {"repobilityId": "14c1bc20e7f23342", "scanner": "scanner-primary", "fingerprint": "4853045f32461ebb", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd688edb38f4af59", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/omie-export.js:59"}, "properties": {"repobilityId": "ff852d89427a7388", "scanner": "scanner-primary", "fingerprint": "cd688edb38f4af59", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-0efbbdc694d6d697", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/parse-le-form21.js:3"}, "properties": {"repobilityId": "ecb12f17ea48a437", "scanner": "scanner-primary", "fingerprint": "0efbbdc694d6d697", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-afe2f5ac8f760d9c", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/conjuntos-setor.js:1"}, "properties": {"repobilityId": "d6169bfa9e3f0e74", "scanner": "scanner-primary", "fingerprint": "afe2f5ac8f760d9c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-01dc8380ebd83275", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/product-matcher.js:5"}, "properties": {"repobilityId": "404f064fdc65c425", "scanner": "scanner-primary", "fingerprint": "01dc8380ebd83275", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e814a4d95328bf3", "level": "none", "message": {"text": "Commented-code block (6 lines) in lib/omie-estoque.js:3"}, "properties": {"repobilityId": "2bf851a7cf52c21e", "scanner": "scanner-primary", "fingerprint": "1e814a4d95328bf3", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-dc1e97bbced3cf74", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint.js:43"}, "properties": {"repobilityId": "6d176a0217741ab4", "scanner": "scanner-primary", "fingerprint": "dc1e97bbced3cf74", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-7e5fdcdd7d4c62d9", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/cotacao-estoque.js:3"}, "properties": {"repobilityId": "52e4bbf3164ca467", "scanner": "scanner-primary", "fingerprint": "7e5fdcdd7d4c62d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-298f321b47c796c2", "level": "none", "message": {"text": "Commented-code block (9 lines) in lib/faturamento-direto.js:3"}, "properties": {"repobilityId": "5a88bbd6aea24868", "scanner": "scanner-primary", "fingerprint": "298f321b47c796c2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1dcbdc3f150cf56f", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-pedido-compra.js:322"}, "properties": {"repobilityId": "544aa0ed4257c7fd", "scanner": "scanner-primary", "fingerprint": "1dcbdc3f150cf56f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-331bbe0818eb75e3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-rh.js:18"}, "properties": {"repobilityId": "eddd47c341c74551", "scanner": "scanner-primary", "fingerprint": "331bbe0818eb75e3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9e06a480cba11815", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/omie-pedido-venda.js:156"}, "properties": {"repobilityId": "ebe804fb54bd6321", "scanner": "scanner-primary", "fingerprint": "9e06a480cba11815", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-92ac342593048048", "level": "none", "message": {"text": "Commented-code block (8 lines) in lib/pdf-parser-server.js:35"}, "properties": {"repobilityId": "86e9a805ebe7e21e", "scanner": "scanner-primary", "fingerprint": "92ac342593048048", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c559ab074c07a145", "level": "none", "message": {"text": "Commented-code block (7 lines) in lib/sigissweb.js:6"}, "properties": {"repobilityId": "c156d4a2436b1cd5", "scanner": "scanner-primary", "fingerprint": "c559ab074c07a145", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8df8b22a7c03eb1a", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 lib/sharepoint-qualidade.js:35"}, "properties": {"repobilityId": "96e34c8b98dd4914", "scanner": "scanner-primary", "fingerprint": "8df8b22a7c03eb1a", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-4ce640a1f376fadd", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/pmp-corte.js:1"}, "properties": {"repobilityId": "99b3a07f07d72952", "scanner": "scanner-primary", "fingerprint": "4ce640a1f376fadd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5cf220f4bc0e11e6", "level": "none", "message": {"text": "Commented-code block (5 lines) in lib/assistente/system-prompt.js:15"}, "properties": {"repobilityId": "afe0f81a870853f9", "scanner": "scanner-primary", "fingerprint": "5cf220f4bc0e11e6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}