{"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-6abf1244eba2fb8d", "name": "`dangerouslySetInnerHTML` used in a React component \u2014 next.config.ts:12", "shortDescription": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 next.config.ts:12"}, "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-9829c2490fa6eff9", "name": "Stray `console.log` in TS/JS \u2014 scripts/analisar-guias.ts:113", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analisar-guias.ts:113"}, "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-5a403cb38b3249c6", "name": "Stray `console.log` in TS/JS \u2014 scripts/sincronizar-obrigacoes-pastas.ts:343", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sincronizar-obrigacoes-pastas.ts:343"}, "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-7f6dd5c2451b60bf", "name": "Stray `console.log` in TS/JS \u2014 scripts/backfill-gestao-certidoes.ts:81", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-gestao-certidoes.ts:81"}, "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-ac2057e53bc05da8", "name": "Stray `console.log` in TS/JS \u2014 scripts/auto-detectar-guias.ts:438", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-detectar-guias.ts:438"}, "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-f084a74913589f5c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/lixeira/page.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lixeira/page.tsx:236"}, "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-1629f7995258b45d", "name": "Stray `console.log` in TS/JS \u2014 src/app/api/clientes-portal/[id]/route.ts:106", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/clientes-portal/[id]/route.ts:106"}, "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-d95fb591e6b357e2", "name": "TODO/FIXME marker in shipping code \u2014 src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:323", "shortDescription": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:323"}, "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-487d6f9aada8e770", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/GestaoCertidoes.tsx:312", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/GestaoCertidoes.tsx:312"}, "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-28c2943492b64ea2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/page.tsx:599", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/page.tsx:599"}, "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-20841890eeb1c482", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/empresas/page.tsx:344", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/empresas/page.tsx:344"}, "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-a95b320c903fd7a3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:539", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:539"}, "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-c8d39a8862eec839", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-contabil/controle/page.tsx:673", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-contabil/controle/page.tsx:673"}, "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-7fbecffac3ebc3b7", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalHistoricoVencimento.tsx:161", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalHistoricoVencimento.tsx:161"}, "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-c86498eb91fceac0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalConferenciaCelula.tsx:259", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalConferenciaCelula.tsx:259"}, "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-fd8b98ed11c7ccaf", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEncontrarCnpjs.tsx:296", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEncontrarCnpjs.tsx:296"}, "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-e1a55409d8e9af04", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEmailsCliente.tsx:203", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEmailsCliente.tsx:203"}, "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-194cc75f8dcc3c97", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalDetalhesEmpresa.tsx:849", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalDetalhesEmpresa.tsx:849"}, "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-c249104333f8941b", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalCentralExtratos.tsx:173", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalCentralExtratos.tsx: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-064de37430986756", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:512", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:512"}, "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-737e1ef50a1ffafa", "name": "Stray `console.log` in TS/JS \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:336", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:336"}, "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-3af06b23f989a7bd", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/AppShell.tsx:531", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/AppShell.tsx:531"}, "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-014d9aa7a75ec919", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/PainelConectarGmail.tsx:145", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/PainelConectarGmail.tsx:145"}, "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-08529014ebbd1d03", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalGerenciarBancos.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalGerenciarBancos.tsx:179"}, "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-b58cf7da3f8e3f2f", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalVisualizadorArquivoCore.tsx:268", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalVisualizadorArquivoCore.tsx:268"}, "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-ef26ee7e94755747", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalAdicionarDocumento.tsx:282", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalAdicionarDocumento.tsx:282"}, "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-918a1348d2382d97", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos/page.tsx:607", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos/page.tsx:607"}, "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-7fddefd2ec926dab", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/analises/page.tsx:403", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/analises/page.tsx:403"}, "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-469fe1b8a3eee290", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/page.tsx:236", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/page.tsx:236"}, "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-14554c2e27be5a84", "name": "Stray `console.log` in TS/JS \u2014 src/app/dev/importar-extratos-contabil/page.tsx:313", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dev/importar-extratos-contabil/page.tsx:313"}, "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-4dcad76e39ca2d1e", "name": "Stray `console.log` in TS/JS \u2014 src/app/portal/PortalContext.tsx:266", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/app/portal/PortalContext.tsx:266"}, "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-330b322632752ce2", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/page.tsx:266", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/page.tsx:266"}, "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-d1274277baeba37e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/components/EmpresaPicker.tsx:41", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/components/EmpresaPicker.tsx:41"}, "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-ba022a354a575e26", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/documentos/[id]/page.tsx:222", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/documentos/[id]/page.tsx: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-77f383e5bc586ae3", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/page.tsx:403", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/page.tsx:403"}, "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-66749b2a9fdd6664", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/page.tsx:1389", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/page.tsx:1389"}, "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-3da2be6ece5b054e", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/StatusPortalCliente.tsx:118", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/StatusPortalCliente.tsx:118"}, "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-9e3138939751f84c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:612", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:612"}, "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-c5eb85675d264338", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/auto-problemas/page.tsx:470", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/auto-problemas/page.tsx:470"}, "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-cd348533aa532cbb", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/usuarios/page.tsx:283", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/usuarios/page.tsx: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-fca3edb3067456b0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/hoje/page.tsx:653", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/hoje/page.tsx:653"}, "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-2759cffc2d11ac17", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/servicos/page.tsx:179", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/servicos/page.tsx:179"}, "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-ddcec60eb0fcc67c", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/page.tsx:407", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/page.tsx:407"}, "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-9086e6a7da84e10a", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/processar/PageClient.tsx:478", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/processar/PageClient.tsx:478"}, "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-2267ec78624f68b8", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/tarefas/page.tsx:375", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/tarefas/page.tsx: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-4d3d9a91af8132e9", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/tags/page.tsx:347", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tags/page.tsx: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-2fce213bee7afd20", "name": "`truncate` class without `title=` for hover reveal \u2014 src/app/calendario/page.tsx:214", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/calendario/page.tsx:214"}, "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-9074449ef2ea4254", "name": "Insecure pattern 'node_child_process' in scripts/seed-relatorios.mjs:21", "shortDescription": {"text": "Insecure pattern 'node_child_process' in scripts/seed-relatorios.mjs:21"}, "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-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-d8ae1ae322ce512b", "name": "Very large file: src/app/dashboard/page.tsx (1433 lines)", "shortDescription": {"text": "Very large file: src/app/dashboard/page.tsx (1433 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-682c70aa82f21aa1", "name": "Very large file: src/app/components/ModalDetalhesEmpresa.tsx (1606 lines)", "shortDescription": {"text": "Very large file: src/app/components/ModalDetalhesEmpresa.tsx (1606 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-e68877139723b0b3", "name": "Very large file: src/app/components/ModalCadastrarEmpresa.tsx (1533 lines)", "shortDescription": {"text": "Very large file: src/app/components/ModalCadastrarEmpresa.tsx (1533 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-729bddcb9944c50a", "name": "Very large file: src/app/dev/importar-extratos-contabil/page.tsx (965 lines)", "shortDescription": {"text": "Very large file: src/app/dev/importar-extratos-contabil/page.tsx (965 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-b78314e252a47b02", "name": "Very large file: src/app/vencimentos-fiscais/checklist/page.tsx (2486 lines)", "shortDescription": {"text": "Very large file: src/app/vencimentos-fiscais/checklist/page.tsx (2486 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-3a1a53c13e4999b9", "name": "Very large file: src/app/vencimentos-fiscais/envio/page.tsx (2481 lines)", "shortDescription": {"text": "Very large file: src/app/vencimentos-fiscais/envio/page.tsx (2481 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-d3a36e81c275d622", "name": "Very large file: src/app/context/SistemaContext.tsx (1973 lines)", "shortDescription": {"text": "Very large file: src/app/context/SistemaContext.tsx (1973 lines)"}, "fullDescription": {"text": "Files with >800 lines often hide complexity hotspots and discourage tests."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8b48593a31fb7fc4", "name": "Very large file: src/app/obrigacoes/page.tsx (1406 lines)", "shortDescription": {"text": "Very large file: src/app/obrigacoes/page.tsx (1406 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-92f16678361f1697", "name": "Very large file: src/lib/db.ts (4440 lines)", "shortDescription": {"text": "Very large file: src/lib/db.ts (4440 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": "18 test file(s) for 204 source file(s) (ratio 0.09). Consider adding integration or unit tests for critical paths."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-141b30a41e03817b", "name": "No license file detected", "shortDescription": {"text": "No license file detected"}, "fullDescription": {"text": "No LICENSE/COPYING/NOTICE file was found. Generated repositories often omit licensing, which blocks reuse and automated intake."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3ab5d313dda8e5f9", "name": "Debug logging residue appears in source files", "shortDescription": {"text": "Debug logging residue appears in source files"}, "fullDescription": {"text": "Found 342 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 103 placeholder/mock markers across 36 source files. This often means the repo looks complete while core flows still use generated scaffolding or fake data."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-9d79c4077342a7d0", "name": "Runtime service client appears to use placeholder configuration", "shortDescription": {"text": "Runtime service client appears to use placeholder configuration"}, "fullDescription": {"text": "A runtime source file appears to wire Supabase/Firebase/AI/payment-style clients to placeholder URLs, keys, or fallback values. In the Fable corpus this often means the UI/API shape is present while the backend service is not actually configured."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-2d0c7b7ab8f8aacf", "name": "Critical user flow still appears backed by mock or placeholder data", "shortDescription": {"text": "Critical user flow still appears backed by mock or placeholder data"}, "fullDescription": {"text": "A payment/auth/admin/order/billing-style flow contains mock, fake, TODO, dummy, or placeholder markers in runtime source. In the Fable corpus this is a high-leverage completeness smell: the app can look finished while the money, identity, or tenant flow is still scaffolded."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-b9088664ace7f748", "name": "Composite production-readiness gap", "shortDescription": {"text": "Composite production-readiness gap"}, "fullDescription": {"text": "Multiple low-cost hardening controls are missing together: license, ci. Opus verification showed these co-occurring gaps are a better readiness signal than reading each flag in isolation."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-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. Treat this as a contract gap: the agent is guided, but the generated output is not yet guarded by the controls that make it repeatable."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ea8f3013f588db25", "name": "Shallow git history limits provenance confidence", "shortDescription": {"text": "Shallow git history limits provenance confidence"}, "fullDescription": {"text": "The repository is a shallow clone. Origin/evolution analysis cannot distinguish fresh generation, imported legacy code, or long-lived human code with high confidence."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-8424db9c75e04ba4", "name": "Very short observed git history", "shortDescription": {"text": "Very short observed git history"}, "fullDescription": {"text": "The repo has multiple source files but two or fewer visible commits. This is not a failure by itself, but it lowers confidence in evolution-based diagnosis."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-17d866d91a7c451e", "name": "Agent instruction/config may expose a secret: CLAUDE.md", "shortDescription": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "fullDescription": {"text": "Agent-facing files are routinely pasted into LLM/tool contexts. Move literal tokens, keys, and passwords into a secret manager or document them as placeholders only."}, "properties": {"scanner": "scanner-primary", "layer": "security", "severity": "high", "confidence": 1.0}}, {"id": "scanner-c9f01bdde17c13ab", "name": "Commented-code block (6 lines) in vitest.config.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in vitest.config.ts: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-77da665fbe400b70", "name": "Commented-code block (5 lines) in next.config.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in next.config.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-024244b05869a9d4", "name": "Commented-code block (5 lines) in scripts/watcher-certidoes.mjs:11", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/watcher-certidoes.mjs:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-680f6d0e6803c8d8", "name": "Commented-code block (5 lines) in scripts/seed-codigos-receita.mjs:9", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-codigos-receita.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff988bcdec0a4c04", "name": "Commented-code block (11 lines) in scripts/reset-auto-envio-testes.mjs:9", "shortDescription": {"text": "Commented-code block (11 lines) in scripts/reset-auto-envio-testes.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-34b4626794a2232b", "name": "Commented-code block (5 lines) in scripts/seed-email-teste-empresas.mjs:8", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-email-teste-empresas.mjs:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-652efd8df6f79941", "name": "Commented-code block (5 lines) in scripts/seed-relatorios.mjs:11", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-relatorios.mjs:11"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3b593d01b3e265ed", "name": "Commented-code block (5 lines) in scripts/remove-relatorios.mjs:1", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/remove-relatorios.mjs: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-fbab7faedf47d1cd", "name": "Commented-code block (6 lines) in scripts/backfill-gestao-certidoes.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/backfill-gestao-certidoes.ts: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-604326e174d1b891", "name": "Commented-code block (6 lines) in scripts/importar-codigos-fiscal.mjs:7", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/importar-codigos-fiscal.mjs:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-053cea70ac571372", "name": "Commented-code block (6 lines) in scripts/auditar-codigos-fiscal.mjs:10", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/auditar-codigos-fiscal.mjs:10"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5429a6e4fa5d3f2e", "name": "Commented-code block (6 lines) in scripts/watcher-guias.mjs:7", "shortDescription": {"text": "Commented-code block (6 lines) in scripts/watcher-guias.mjs:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-82d1d7af4c77e2a1", "name": "Commented-code block (5 lines) in scripts/seed-certidoes-relacao.mjs:9", "shortDescription": {"text": "Commented-code block (5 lines) in scripts/seed-certidoes-relacao.mjs:9"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5d39f68ac730a68", "name": "Commented-code block (7 lines) in scripts/descobrir-codigos-fiscal.mjs:6", "shortDescription": {"text": "Commented-code block (7 lines) in scripts/descobrir-codigos-fiscal.mjs: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-c20c3606fa27d599", "name": "Commented-code block (5 lines) in src/app/api/checklist-cadastro/auto-registrar/_detectar.ts:227", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/checklist-cadastro/auto-registrar/_detectar.ts:227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b0d9357fa4c40077", "name": "Commented-code block (7 lines) in src/app/api/checklist-cadastro/auto-registrar/_auto-enviar.ts:1", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/checklist-cadastro/auto-registrar/_auto-enviar.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a442d18893550ba", "name": "Commented-code block (8 lines) in src/app/api/checklist-cadastro/enviar/route.ts:1", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/api/checklist-cadastro/enviar/route.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-6b6444d0d12190a0", "name": "Commented-code block (5 lines) in src/app/api/clientes-portal/[id]/route.ts:74", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/clientes-portal/[id]/route.ts:74"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-76fc779da5ed130d", "name": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/aprovar-e-enviar/route.ts:4", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/aprovar-e-enviar/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-879b1eba77f87399", "name": "Commented-code block (7 lines) in src/app/api/admin/guias-auto/listar/route.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/admin/guias-auto/listar/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-85803bd06646243d", "name": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/acao/route.ts:3", "shortDescription": {"text": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/acao/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e154c3c65ec29c7a", "name": "Commented-code block (5 lines) in src/app/api/admin/users/[id]/password/route.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/admin/users/[id]/password/route.ts:49"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-bf542a01f08a66d9", "name": "Commented-code block (6 lines) in src/app/api/checklist-fiscal/_shared.ts:130", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/api/checklist-fiscal/_shared.ts:130"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51676fcc656f124b", "name": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2f0f9a52dc475cf6", "name": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-lote.ts:4", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-lote.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8871df55a91b6eab", "name": "Commented-code block (12 lines) in src/app/api/checklist-fiscal/auto-enviar/route.ts:4", "shortDescription": {"text": "Commented-code block (12 lines) in src/app/api/checklist-fiscal/auto-enviar/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a71dc21a3cfc1553", "name": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-envio.ts:326", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-envio.ts:326"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-24aad62b12b0742d", "name": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/heartbeat/route.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/heartbeat/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-7eb000a7467e7a25", "name": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/enviar-anexo/route.ts:24", "shortDescription": {"text": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/enviar-anexo/route.ts:24"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3f759442cc50678c", "name": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/enviar-multiplos-anexos/route.ts:4", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/enviar-multiplos-anexos/route.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-5156e0ad8db85881", "name": "Commented-code block (7 lines) in src/app/api/cron/alertar-pendencias-auto/route.ts:3", "shortDescription": {"text": "Commented-code block (7 lines) in src/app/api/cron/alertar-pendencias-auto/route.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d78573d705760766", "name": "Commented-code block (6 lines) in src/app/dashboard/page.tsx:89", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/dashboard/page.tsx:89"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-3058f20691302484", "name": "Commented-code block (5 lines) in src/app/utils/validation.ts:36", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/utils/validation.ts:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-51cff8f723328693", "name": "Commented-code block (5 lines) in src/app/utils/validarGuia.ts:123", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/utils/validarGuia.ts:123"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-efa20aa744db3643", "name": "Commented-code block (5 lines) in src/app/vencimentos-contabil/controle/page.tsx:234", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/vencimentos-contabil/controle/page.tsx:234"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b7e104dcfe6e0cea", "name": "Commented-code block (6 lines) in src/app/components/ModalHistoricoVencimento.tsx:125", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/components/ModalHistoricoVencimento.tsx:125"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1af05be72fd7ed99", "name": "Commented-code block (5 lines) in src/app/components/AppShell.tsx:36", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/components/AppShell.tsx:36"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2dc26ab1fca7b44f", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/components/PainelConectarGmail.tsx:92", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/components/PainelConectarGmail.tsx: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-d6b1fd12399405e8", "name": "Commented-code block (5 lines) in src/app/dev/importar-extratos-contabil/page.tsx:167", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/dev/importar-extratos-contabil/page.tsx:167"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-9f7a3d347b7b43a2", "name": "Commented-code block (5 lines) in src/app/hooks/useEntityLoaders.ts:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/hooks/useEntityLoaders.ts:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1a1880f5025cbc9", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/portal/components/PushPrompt.tsx:186", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/portal/components/PushPrompt.tsx:186"}, "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-cef6dd708a2e12cf", "name": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/page.tsx:117", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/page.tsx:117"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4a3ff1006ba8124e", "name": "Commented-code block (8 lines) in src/app/vencimentos-fiscais/checklist/page.tsx:29", "shortDescription": {"text": "Commented-code block (8 lines) in src/app/vencimentos-fiscais/checklist/page.tsx:29"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-2a28f36f5d476f0c", "name": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/envio/page.tsx:227", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/envio/page.tsx:227"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-4b78f85ff5f6a37e", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:1577", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:1577"}, "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-f54fbd6ed868dc55", "name": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/auto-problemas/page.tsx:3", "shortDescription": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/auto-problemas/page.tsx:3"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-677ebad908449bd5", "name": "Commented-code block (6 lines) in src/app/context/SistemaContext.tsx:463", "shortDescription": {"text": "Commented-code block (6 lines) in src/app/context/SistemaContext.tsx:463"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a03017bb8cde911c", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/page.tsx:189", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/page.tsx:189"}, "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-826c6cb92a3764bd", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/processar/PageClient.tsx:219", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/processar/PageClient.tsx:219"}, "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-2a6ed32825423ac4", "name": "Commented-code block (5 lines) in src/lib/uuid.ts:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/uuid.ts:1"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ff805f31a2f6f4b7", "name": "Commented-code block (5 lines) in src/lib/fileValidation.ts:7", "shortDescription": {"text": "Commented-code block (5 lines) in src/lib/fileValidation.ts:7"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b1777e38e1173438", "name": "Commented-code block (6 lines) in src/lib/alertasAutoEnvio.ts:4", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/alertasAutoEnvio.ts:4"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69ec87c0ea83da5f", "name": "Commented-code block (6 lines) in src/lib/db.ts:818", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/db.ts:818"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-cd7b1b70d2427519", "name": "Commented-code block (6 lines) in src/lib/logger.ts:8", "shortDescription": {"text": "Commented-code block (6 lines) in src/lib/logger.ts:8"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/23176"}, "properties": {"repository": "yasyas0703/Controle-Empresas", "repoUrl": "https://github.com/yasyas0703/Controle-Empresas", "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-6abf1244eba2fb8d", "level": "warning", "message": {"text": "`dangerouslySetInnerHTML` used in a React component \u2014 next.config.ts:12"}, "properties": {"repobilityId": "127af77fca094f42", "scanner": "scanner-primary", "fingerprint": "6abf1244eba2fb8d", "layer": "frontend", "severity": "medium", "confidence": 1.0, "tags": ["frontend-quality", "fq.dangerous-html"]}}, {"ruleId": "scanner-9829c2490fa6eff9", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/analisar-guias.ts:113"}, "properties": {"repobilityId": "ba2250928dd8c532", "scanner": "scanner-primary", "fingerprint": "9829c2490fa6eff9", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-5a403cb38b3249c6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/sincronizar-obrigacoes-pastas.ts:343"}, "properties": {"repobilityId": "55a0c21fa01bcf80", "scanner": "scanner-primary", "fingerprint": "5a403cb38b3249c6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-7f6dd5c2451b60bf", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/backfill-gestao-certidoes.ts:81"}, "properties": {"repobilityId": "ba642fb85b47367d", "scanner": "scanner-primary", "fingerprint": "7f6dd5c2451b60bf", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-ac2057e53bc05da8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 scripts/auto-detectar-guias.ts:438"}, "properties": {"repobilityId": "cd51cfbe6f348788", "scanner": "scanner-primary", "fingerprint": "ac2057e53bc05da8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f084a74913589f5c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/lixeira/page.tsx:236"}, "properties": {"repobilityId": "fb90e8d3745d7486", "scanner": "scanner-primary", "fingerprint": "f084a74913589f5c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-1629f7995258b45d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/api/clientes-portal/[id]/route.ts:106"}, "properties": {"repobilityId": "434b5e9ef583070a", "scanner": "scanner-primary", "fingerprint": "1629f7995258b45d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-d95fb591e6b357e2", "level": "none", "message": {"text": "TODO/FIXME marker in shipping code \u2014 src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:323"}, "properties": {"repobilityId": "af755d80c10e5b9a", "scanner": "scanner-primary", "fingerprint": "d95fb591e6b357e2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.todo-marker"]}}, {"ruleId": "scanner-487d6f9aada8e770", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/GestaoCertidoes.tsx:312"}, "properties": {"repobilityId": "a25779fbf4a12b5b", "scanner": "scanner-primary", "fingerprint": "487d6f9aada8e770", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-28c2943492b64ea2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-cadastro/controle/page.tsx:599"}, "properties": {"repobilityId": "4db0e91a67616311", "scanner": "scanner-primary", "fingerprint": "28c2943492b64ea2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-20841890eeb1c482", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/empresas/page.tsx:344"}, "properties": {"repobilityId": "59d46446d093a7a1", "scanner": "scanner-primary", "fingerprint": "20841890eeb1c482", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-a95b320c903fd7a3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dashboard/page.tsx:539"}, "properties": {"repobilityId": "4ba209c1bd3eacfd", "scanner": "scanner-primary", "fingerprint": "a95b320c903fd7a3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c8d39a8862eec839", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-contabil/controle/page.tsx:673"}, "properties": {"repobilityId": "0e8ba594926a027a", "scanner": "scanner-primary", "fingerprint": "c8d39a8862eec839", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7fbecffac3ebc3b7", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalHistoricoVencimento.tsx:161"}, "properties": {"repobilityId": "3dc823869468546b", "scanner": "scanner-primary", "fingerprint": "7fbecffac3ebc3b7", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c86498eb91fceac0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalConferenciaCelula.tsx:259"}, "properties": {"repobilityId": "6c5ef1fb8be050ef", "scanner": "scanner-primary", "fingerprint": "c86498eb91fceac0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fd8b98ed11c7ccaf", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEncontrarCnpjs.tsx:296"}, "properties": {"repobilityId": "f8d93519d93b0f8b", "scanner": "scanner-primary", "fingerprint": "fd8b98ed11c7ccaf", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-e1a55409d8e9af04", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalEmailsCliente.tsx:203"}, "properties": {"repobilityId": "e630e4023188939e", "scanner": "scanner-primary", "fingerprint": "e1a55409d8e9af04", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-194cc75f8dcc3c97", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalDetalhesEmpresa.tsx:849"}, "properties": {"repobilityId": "5f9a57159beb50ed", "scanner": "scanner-primary", "fingerprint": "194cc75f8dcc3c97", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c249104333f8941b", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalCentralExtratos.tsx:173"}, "properties": {"repobilityId": "3131961d9ee50043", "scanner": "scanner-primary", "fingerprint": "c249104333f8941b", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-064de37430986756", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:512"}, "properties": {"repobilityId": "5f76f671e840ccca", "scanner": "scanner-primary", "fingerprint": "064de37430986756", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-737e1ef50a1ffafa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/components/ModalImportarResponsabilidadesPorDep.tsx:336"}, "properties": {"repobilityId": "7822e249a1818585", "scanner": "scanner-primary", "fingerprint": "737e1ef50a1ffafa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-3af06b23f989a7bd", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/AppShell.tsx:531"}, "properties": {"repobilityId": "dd95513f0d757706", "scanner": "scanner-primary", "fingerprint": "3af06b23f989a7bd", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-014d9aa7a75ec919", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/PainelConectarGmail.tsx:145"}, "properties": {"repobilityId": "19a045ce04b3baf2", "scanner": "scanner-primary", "fingerprint": "014d9aa7a75ec919", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-08529014ebbd1d03", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalGerenciarBancos.tsx:179"}, "properties": {"repobilityId": "065f1f361dff3dee", "scanner": "scanner-primary", "fingerprint": "08529014ebbd1d03", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-b58cf7da3f8e3f2f", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalVisualizadorArquivoCore.tsx:268"}, "properties": {"repobilityId": "1c380b7e6c87263f", "scanner": "scanner-primary", "fingerprint": "b58cf7da3f8e3f2f", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ef26ee7e94755747", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/components/ModalAdicionarDocumento.tsx:282"}, "properties": {"repobilityId": "eb8dbf0f3a04db15", "scanner": "scanner-primary", "fingerprint": "ef26ee7e94755747", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-918a1348d2382d97", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos/page.tsx:607"}, "properties": {"repobilityId": "0b9892fe3202d3c1", "scanner": "scanner-primary", "fingerprint": "918a1348d2382d97", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-7fddefd2ec926dab", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/analises/page.tsx:403"}, "properties": {"repobilityId": "f2ee59a767635f4d", "scanner": "scanner-primary", "fingerprint": "7fddefd2ec926dab", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-469fe1b8a3eee290", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/dev/page.tsx:236"}, "properties": {"repobilityId": "c37c48c220f8f12c", "scanner": "scanner-primary", "fingerprint": "469fe1b8a3eee290", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-14554c2e27be5a84", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/dev/importar-extratos-contabil/page.tsx:313"}, "properties": {"repobilityId": "a7a81b662534d36a", "scanner": "scanner-primary", "fingerprint": "14554c2e27be5a84", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-4dcad76e39ca2d1e", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/app/portal/PortalContext.tsx:266"}, "properties": {"repobilityId": "dd669dfe93b75421", "scanner": "scanner-primary", "fingerprint": "4dcad76e39ca2d1e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-330b322632752ce2", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/page.tsx:266"}, "properties": {"repobilityId": "5c96b979076e6f93", "scanner": "scanner-primary", "fingerprint": "330b322632752ce2", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-d1274277baeba37e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/components/EmpresaPicker.tsx:41"}, "properties": {"repobilityId": "6d9056e4b79f0252", "scanner": "scanner-primary", "fingerprint": "d1274277baeba37e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ba022a354a575e26", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/portal/documentos/[id]/page.tsx:222"}, "properties": {"repobilityId": "d0c0bf4a9f3bada2", "scanner": "scanner-primary", "fingerprint": "ba022a354a575e26", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-77f383e5bc586ae3", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/page.tsx:403"}, "properties": {"repobilityId": "93e364201c631145", "scanner": "scanner-primary", "fingerprint": "77f383e5bc586ae3", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-66749b2a9fdd6664", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/page.tsx:1389"}, "properties": {"repobilityId": "c7d426eb8458c938", "scanner": "scanner-primary", "fingerprint": "66749b2a9fdd6664", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-3da2be6ece5b054e", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/checklist/StatusPortalCliente.tsx:118"}, "properties": {"repobilityId": "4841fa235d5affc8", "scanner": "scanner-primary", "fingerprint": "3da2be6ece5b054e", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9e3138939751f84c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:612"}, "properties": {"repobilityId": "2b8f171149840979", "scanner": "scanner-primary", "fingerprint": "9e3138939751f84c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-c5eb85675d264338", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/vencimentos-fiscais/auto-problemas/page.tsx:470"}, "properties": {"repobilityId": "dbd7a47281eb16ba", "scanner": "scanner-primary", "fingerprint": "c5eb85675d264338", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-cd348533aa532cbb", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/usuarios/page.tsx:283"}, "properties": {"repobilityId": "79d6630b9f984fd0", "scanner": "scanner-primary", "fingerprint": "cd348533aa532cbb", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-fca3edb3067456b0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/hoje/page.tsx:653"}, "properties": {"repobilityId": "01cb49846929b0e2", "scanner": "scanner-primary", "fingerprint": "fca3edb3067456b0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2759cffc2d11ac17", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/servicos/page.tsx:179"}, "properties": {"repobilityId": "09f193ed65de2790", "scanner": "scanner-primary", "fingerprint": "2759cffc2d11ac17", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-ddcec60eb0fcc67c", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/page.tsx:407"}, "properties": {"repobilityId": "b3dd1b6bbc1c044c", "scanner": "scanner-primary", "fingerprint": "ddcec60eb0fcc67c", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9086e6a7da84e10a", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/processar/PageClient.tsx:478"}, "properties": {"repobilityId": "fe8565d589d4e5e4", "scanner": "scanner-primary", "fingerprint": "9086e6a7da84e10a", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2267ec78624f68b8", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/obrigacoes/tarefas/page.tsx:375"}, "properties": {"repobilityId": "6f781d5296c32a6c", "scanner": "scanner-primary", "fingerprint": "2267ec78624f68b8", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-4d3d9a91af8132e9", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/tags/page.tsx:347"}, "properties": {"repobilityId": "8033be348728aed4", "scanner": "scanner-primary", "fingerprint": "4d3d9a91af8132e9", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-2fce213bee7afd20", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/app/calendario/page.tsx:214"}, "properties": {"repobilityId": "cb1591a731434ce6", "scanner": "scanner-primary", "fingerprint": "2fce213bee7afd20", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-9074449ef2ea4254", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in scripts/seed-relatorios.mjs:21"}, "properties": {"repobilityId": "5f471d2c00043b96", "scanner": "scanner-primary", "fingerprint": "9074449ef2ea4254", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "scripts/seed-relatorios.mjs"}, "region": {"startLine": 21}}}]}, {"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-d8ae1ae322ce512b", "level": "note", "message": {"text": "Very large file: src/app/dashboard/page.tsx (1433 lines)"}, "properties": {"repobilityId": "d1018ecc2e88ff7e", "scanner": "scanner-primary", "fingerprint": "d8ae1ae322ce512b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-682c70aa82f21aa1", "level": "note", "message": {"text": "Very large file: src/app/components/ModalDetalhesEmpresa.tsx (1606 lines)"}, "properties": {"repobilityId": "dae24dcf31a87a0b", "scanner": "scanner-primary", "fingerprint": "682c70aa82f21aa1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-e68877139723b0b3", "level": "note", "message": {"text": "Very large file: src/app/components/ModalCadastrarEmpresa.tsx (1533 lines)"}, "properties": {"repobilityId": "752d154244f971a7", "scanner": "scanner-primary", "fingerprint": "e68877139723b0b3", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-729bddcb9944c50a", "level": "note", "message": {"text": "Very large file: src/app/dev/importar-extratos-contabil/page.tsx (965 lines)"}, "properties": {"repobilityId": "cfb374d4d9e1a230", "scanner": "scanner-primary", "fingerprint": "729bddcb9944c50a", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b78314e252a47b02", "level": "note", "message": {"text": "Very large file: src/app/vencimentos-fiscais/checklist/page.tsx (2486 lines)"}, "properties": {"repobilityId": "6fa8f6b2311abb7f", "scanner": "scanner-primary", "fingerprint": "b78314e252a47b02", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3a1a53c13e4999b9", "level": "note", "message": {"text": "Very large file: src/app/vencimentos-fiscais/envio/page.tsx (2481 lines)"}, "properties": {"repobilityId": "219d583cebf7ae75", "scanner": "scanner-primary", "fingerprint": "3a1a53c13e4999b9", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-d3a36e81c275d622", "level": "note", "message": {"text": "Very large file: src/app/context/SistemaContext.tsx (1973 lines)"}, "properties": {"repobilityId": "c0c07cae43cfbcdc", "scanner": "scanner-primary", "fingerprint": "d3a36e81c275d622", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-8b48593a31fb7fc4", "level": "note", "message": {"text": "Very large file: src/app/obrigacoes/page.tsx (1406 lines)"}, "properties": {"repobilityId": "7ac797f11081a591", "scanner": "scanner-primary", "fingerprint": "8b48593a31fb7fc4", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-92f16678361f1697", "level": "note", "message": {"text": "Very large file: src/lib/db.ts (4440 lines)"}, "properties": {"repobilityId": "b6da9df073336f64", "scanner": "scanner-primary", "fingerprint": "92f16678361f1697", "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": "3b81fea8c9cdc891", "scanner": "scanner-primary", "fingerprint": "141b30a41e03817b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["license", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-3ab5d313dda8e5f9", "level": "note", "message": {"text": "Debug logging residue appears in source files"}, "properties": {"repobilityId": "e66e841333d0f68b", "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": "cb0343666620ec96", "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": "daf5c65fbab03a8c", "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": "71d648d81b13e154", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-b9088664ace7f748", "level": "note", "message": {"text": "Composite production-readiness gap"}, "properties": {"repobilityId": "d10f00573173703f", "scanner": "scanner-primary", "fingerprint": "b9088664ace7f748", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["production-readiness", "repo-hardening", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "7d3be1b85f7ad689", "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": "ec4f881fbdccfa7a", "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": "f78f3089536531c2", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-17d866d91a7c451e", "level": "error", "message": {"text": "Agent instruction/config may expose a secret: CLAUDE.md"}, "properties": {"repobilityId": "ccce5984e58a48f0", "scanner": "scanner-primary", "fingerprint": "17d866d91a7c451e", "layer": "security", "severity": "high", "confidence": 1.0, "tags": ["agent-instructions", "secrets", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": "CLAUDE.md"}, "region": {"startLine": 46}}}]}, {"ruleId": "scanner-c9f01bdde17c13ab", "level": "none", "message": {"text": "Commented-code block (6 lines) in vitest.config.ts:5"}, "properties": {"repobilityId": "dd6e4c307436143f", "scanner": "scanner-primary", "fingerprint": "c9f01bdde17c13ab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-77da665fbe400b70", "level": "none", "message": {"text": "Commented-code block (5 lines) in next.config.ts:3"}, "properties": {"repobilityId": "fb502e99d74ff744", "scanner": "scanner-primary", "fingerprint": "77da665fbe400b70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-024244b05869a9d4", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/watcher-certidoes.mjs:11"}, "properties": {"repobilityId": "17c71c780dc83cc6", "scanner": "scanner-primary", "fingerprint": "024244b05869a9d4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-680f6d0e6803c8d8", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-codigos-receita.mjs:9"}, "properties": {"repobilityId": "2bff9f1bab3619a1", "scanner": "scanner-primary", "fingerprint": "680f6d0e6803c8d8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff988bcdec0a4c04", "level": "none", "message": {"text": "Commented-code block (11 lines) in scripts/reset-auto-envio-testes.mjs:9"}, "properties": {"repobilityId": "3b4e1f1431a2109a", "scanner": "scanner-primary", "fingerprint": "ff988bcdec0a4c04", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-34b4626794a2232b", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-email-teste-empresas.mjs:8"}, "properties": {"repobilityId": "7f757ea17357855f", "scanner": "scanner-primary", "fingerprint": "34b4626794a2232b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-652efd8df6f79941", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-relatorios.mjs:11"}, "properties": {"repobilityId": "3544faa333079e8f", "scanner": "scanner-primary", "fingerprint": "652efd8df6f79941", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3b593d01b3e265ed", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/remove-relatorios.mjs:1"}, "properties": {"repobilityId": "323f37bf0febf541", "scanner": "scanner-primary", "fingerprint": "3b593d01b3e265ed", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-fbab7faedf47d1cd", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/backfill-gestao-certidoes.ts:5"}, "properties": {"repobilityId": "9447527c9d1667bf", "scanner": "scanner-primary", "fingerprint": "fbab7faedf47d1cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-604326e174d1b891", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/importar-codigos-fiscal.mjs:7"}, "properties": {"repobilityId": "b116b300a9eb0b8f", "scanner": "scanner-primary", "fingerprint": "604326e174d1b891", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-053cea70ac571372", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/auditar-codigos-fiscal.mjs:10"}, "properties": {"repobilityId": "b7b428d037a074d9", "scanner": "scanner-primary", "fingerprint": "053cea70ac571372", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5429a6e4fa5d3f2e", "level": "none", "message": {"text": "Commented-code block (6 lines) in scripts/watcher-guias.mjs:7"}, "properties": {"repobilityId": "9270e6f7e429979d", "scanner": "scanner-primary", "fingerprint": "5429a6e4fa5d3f2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-82d1d7af4c77e2a1", "level": "none", "message": {"text": "Commented-code block (5 lines) in scripts/seed-certidoes-relacao.mjs:9"}, "properties": {"repobilityId": "fc443e929291f464", "scanner": "scanner-primary", "fingerprint": "82d1d7af4c77e2a1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f5d39f68ac730a68", "level": "none", "message": {"text": "Commented-code block (7 lines) in scripts/descobrir-codigos-fiscal.mjs:6"}, "properties": {"repobilityId": "7e07d56e9eac0512", "scanner": "scanner-primary", "fingerprint": "f5d39f68ac730a68", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c20c3606fa27d599", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/checklist-cadastro/auto-registrar/_detectar.ts:227"}, "properties": {"repobilityId": "ae2b19f1a1c930e4", "scanner": "scanner-primary", "fingerprint": "c20c3606fa27d599", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0d9357fa4c40077", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/checklist-cadastro/auto-registrar/_auto-enviar.ts:1"}, "properties": {"repobilityId": "abfe1e82149097c4", "scanner": "scanner-primary", "fingerprint": "b0d9357fa4c40077", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a442d18893550ba", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/api/checklist-cadastro/enviar/route.ts:1"}, "properties": {"repobilityId": "db5accce2f798f4a", "scanner": "scanner-primary", "fingerprint": "2a442d18893550ba", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-6b6444d0d12190a0", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/clientes-portal/[id]/route.ts:74"}, "properties": {"repobilityId": "fef6b2b5847dbdfd", "scanner": "scanner-primary", "fingerprint": "6b6444d0d12190a0", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76fc779da5ed130d", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/aprovar-e-enviar/route.ts:4"}, "properties": {"repobilityId": "b9565a0b97e0850e", "scanner": "scanner-primary", "fingerprint": "76fc779da5ed130d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-879b1eba77f87399", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/admin/guias-auto/listar/route.ts:4"}, "properties": {"repobilityId": "9e46200ab8683bf0", "scanner": "scanner-primary", "fingerprint": "879b1eba77f87399", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-85803bd06646243d", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/app/api/admin/guias-auto/acao/route.ts:3"}, "properties": {"repobilityId": "cc85aa61f00b7c46", "scanner": "scanner-primary", "fingerprint": "85803bd06646243d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e154c3c65ec29c7a", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/admin/users/[id]/password/route.ts:49"}, "properties": {"repobilityId": "d1448494c0777103", "scanner": "scanner-primary", "fingerprint": "e154c3c65ec29c7a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-bf542a01f08a66d9", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/api/checklist-fiscal/_shared.ts:130"}, "properties": {"repobilityId": "542356cb170b4d74", "scanner": "scanner-primary", "fingerprint": "bf542a01f08a66d9", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51676fcc656f124b", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/auto-enviar/_identificar.ts:4"}, "properties": {"repobilityId": "88e8a379c7b54528", "scanner": "scanner-primary", "fingerprint": "51676fcc656f124b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2f0f9a52dc475cf6", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-lote.ts:4"}, "properties": {"repobilityId": "021130e783469145", "scanner": "scanner-primary", "fingerprint": "2f0f9a52dc475cf6", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8871df55a91b6eab", "level": "none", "message": {"text": "Commented-code block (12 lines) in src/app/api/checklist-fiscal/auto-enviar/route.ts:4"}, "properties": {"repobilityId": "787676f87d785115", "scanner": "scanner-primary", "fingerprint": "8871df55a91b6eab", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a71dc21a3cfc1553", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/_shared-envio.ts:326"}, "properties": {"repobilityId": "43a590e8b9a29fad", "scanner": "scanner-primary", "fingerprint": "a71dc21a3cfc1553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-24aad62b12b0742d", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/api/checklist-fiscal/auto-enviar/heartbeat/route.ts:3"}, "properties": {"repobilityId": "1dabb8aed37fddea", "scanner": "scanner-primary", "fingerprint": "24aad62b12b0742d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-7eb000a7467e7a25", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/app/api/checklist-fiscal/enviar-anexo/route.ts:24"}, "properties": {"repobilityId": "488a3020bc3441a6", "scanner": "scanner-primary", "fingerprint": "7eb000a7467e7a25", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3f759442cc50678c", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/checklist-fiscal/enviar-multiplos-anexos/route.ts:4"}, "properties": {"repobilityId": "0b380e3c7f93f238", "scanner": "scanner-primary", "fingerprint": "3f759442cc50678c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5156e0ad8db85881", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/app/api/cron/alertar-pendencias-auto/route.ts:3"}, "properties": {"repobilityId": "6e6d1be710dafc8a", "scanner": "scanner-primary", "fingerprint": "5156e0ad8db85881", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d78573d705760766", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/dashboard/page.tsx:89"}, "properties": {"repobilityId": "be5ecbd8ece254f2", "scanner": "scanner-primary", "fingerprint": "d78573d705760766", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3058f20691302484", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/utils/validation.ts:36"}, "properties": {"repobilityId": "18c61ed5d840c066", "scanner": "scanner-primary", "fingerprint": "3058f20691302484", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-51cff8f723328693", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/utils/validarGuia.ts:123"}, "properties": {"repobilityId": "ef5e43664652447a", "scanner": "scanner-primary", "fingerprint": "51cff8f723328693", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-efa20aa744db3643", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/vencimentos-contabil/controle/page.tsx:234"}, "properties": {"repobilityId": "cde0424c09d8697c", "scanner": "scanner-primary", "fingerprint": "efa20aa744db3643", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b7e104dcfe6e0cea", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/components/ModalHistoricoVencimento.tsx:125"}, "properties": {"repobilityId": "e06b9b54abef03e4", "scanner": "scanner-primary", "fingerprint": "b7e104dcfe6e0cea", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1af05be72fd7ed99", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/components/AppShell.tsx:36"}, "properties": {"repobilityId": "ef40011c29c106b8", "scanner": "scanner-primary", "fingerprint": "1af05be72fd7ed99", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2dc26ab1fca7b44f", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/components/PainelConectarGmail.tsx:92"}, "properties": {"repobilityId": "7614f159bf6e0783", "scanner": "scanner-primary", "fingerprint": "2dc26ab1fca7b44f", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-d6b1fd12399405e8", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/dev/importar-extratos-contabil/page.tsx:167"}, "properties": {"repobilityId": "293033f9a0b62a2c", "scanner": "scanner-primary", "fingerprint": "d6b1fd12399405e8", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f7a3d347b7b43a2", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/hooks/useEntityLoaders.ts:3"}, "properties": {"repobilityId": "765141263a7a7e05", "scanner": "scanner-primary", "fingerprint": "9f7a3d347b7b43a2", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1a1880f5025cbc9", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/portal/components/PushPrompt.tsx:186"}, "properties": {"repobilityId": "a401605b7d816d08", "scanner": "scanner-primary", "fingerprint": "b1a1880f5025cbc9", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-cef6dd708a2e12cf", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/page.tsx:117"}, "properties": {"repobilityId": "2c47cf28b556ae67", "scanner": "scanner-primary", "fingerprint": "cef6dd708a2e12cf", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4a3ff1006ba8124e", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/app/vencimentos-fiscais/checklist/page.tsx:29"}, "properties": {"repobilityId": "9a6b23239780e8e4", "scanner": "scanner-primary", "fingerprint": "4a3ff1006ba8124e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2a28f36f5d476f0c", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/envio/page.tsx:227"}, "properties": {"repobilityId": "124d4322b41643b5", "scanner": "scanner-primary", "fingerprint": "2a28f36f5d476f0c", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-4b78f85ff5f6a37e", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/vencimentos-fiscais/envio/page.tsx:1577"}, "properties": {"repobilityId": "03b482cdf0e83a57", "scanner": "scanner-primary", "fingerprint": "4b78f85ff5f6a37e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-f54fbd6ed868dc55", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/app/vencimentos-fiscais/auto-problemas/page.tsx:3"}, "properties": {"repobilityId": "58150a81fa56202d", "scanner": "scanner-primary", "fingerprint": "f54fbd6ed868dc55", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-677ebad908449bd5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/app/context/SistemaContext.tsx:463"}, "properties": {"repobilityId": "8306787ed84754c5", "scanner": "scanner-primary", "fingerprint": "677ebad908449bd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a03017bb8cde911c", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/page.tsx:189"}, "properties": {"repobilityId": "535b2e2f8e09b4ee", "scanner": "scanner-primary", "fingerprint": "a03017bb8cde911c", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-826c6cb92a3764bd", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/app/obrigacoes/processar/PageClient.tsx:219"}, "properties": {"repobilityId": "c46f21f6a4238f40", "scanner": "scanner-primary", "fingerprint": "826c6cb92a3764bd", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-2a6ed32825423ac4", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/uuid.ts:1"}, "properties": {"repobilityId": "1b61ca83468d31f4", "scanner": "scanner-primary", "fingerprint": "2a6ed32825423ac4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ff805f31a2f6f4b7", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/lib/fileValidation.ts:7"}, "properties": {"repobilityId": "3942e4bdf20debb4", "scanner": "scanner-primary", "fingerprint": "ff805f31a2f6f4b7", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b1777e38e1173438", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/alertasAutoEnvio.ts:4"}, "properties": {"repobilityId": "d1d53a9c4f6e90e8", "scanner": "scanner-primary", "fingerprint": "b1777e38e1173438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69ec87c0ea83da5f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/db.ts:818"}, "properties": {"repobilityId": "81b5f9aa3007d28f", "scanner": "scanner-primary", "fingerprint": "69ec87c0ea83da5f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-cd7b1b70d2427519", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/lib/logger.ts:8"}, "properties": {"repobilityId": "7bf37c0e3b9dcf81", "scanner": "scanner-primary", "fingerprint": "cd7b1b70d2427519", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}]}]}