{"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-91bdea6880095f0e", "name": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/frontend/__tests__/closing-reports/strea", "shortDescription": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/frontend/__tests__/closing-reports/streaming-api.test.ts:85"}, "fullDescription": {"text": "React Flow edge labels render with a white rectangle behind the text by default, which scatters bright boxes across a dark canvas. Either drop the label, or override `.react-flow__edge-textbg` and `.react-flow__edge-text` in your stylesheet.\n\nWhy: P-H in CHECKLIST.md \u2014 vendor edge labels bleed white through a dark canvas.\nRule id: fq.edge-label.no-bg"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-9381460415df1ea0", "name": "`truncate` class without `title=` for hover reveal \u2014 src/frontend/components/closing-reports/TimelineExposicao.tsx:435", "shortDescription": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/frontend/components/closing-reports/TimelineExposicao.tsx:435"}, "fullDescription": {"text": "A truncated value should reveal the full text on hover. Pass the full string via `title={...}` so the user can read it.\n\nWhy: P2 in CHECKLIST.md \u2014 truncate without hover-reveal.\nRule id: fq.truncate.no-title"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "info", "confidence": 1.0}}, {"id": "scanner-f5e07670b6c51a13", "name": "Stray `console.log` in TS/JS \u2014 src/backend/index.ts:42", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/index.ts:42"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0d366ee82b8e9f2", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rpfin028-recipe.ts:329", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rpfin028-recipe.ts:329"}, "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-e0be8fcdc0957df6", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento.ts:40", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento.ts:40"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-f61dee5a5334f492", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/reconcile-rel-fin-adiantamento.ts:175", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/reconcile-rel-fin-adiantamento.ts:175"}, "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-fbd74ea339380005", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-4.ts:23", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-4.ts:23"}, "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-90987a9526aa9969", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-3.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-3.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-c0dacecc75ae4fd0", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-4.ts:54", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-4.ts:54"}, "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-236a7a3d6ce4f3e6", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/live-run-rel-fin-adiantamento.ts:50", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/live-run-rel-fin-adiantamento.ts:50"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-93ab40a96e1d1be8", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-2.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-2.ts:51"}, "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-925c54a4167047ab", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-5.ts:21", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-5.ts:21"}, "fullDescription": {"text": "Replace with the toast helper, an error boundary, or remove. `console.warn` / `console.error` are acceptable.\n\nWhy: Hygiene \u2014 easy to leak debug output.\nRule id: fq.console-leak"}, "properties": {"scanner": "scanner-primary", "layer": "frontend", "severity": "low", "confidence": 1.0}}, {"id": "scanner-922364a4374f0e51", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/inspect-divergencia-xlsx.ts:10", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/inspect-divergencia-xlsx.ts:10"}, "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-94b9a48d791610aa", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-2.ts:22", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-2.ts:22"}, "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-adb7f07262e4a5f4", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database.ts:61", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database.ts:61"}, "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-87acb742275cd72d", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-5.ts:20", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-5.ts:20"}, "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-b8d9288946ac505b", "name": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-3.ts:51", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-3.ts:51"}, "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-a21b7bbc787ffff4", "name": "Stray `console.log` in TS/JS \u2014 src/backend/utils/index.ts:147", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/utils/index.ts:147"}, "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-b24fb50c085311f2", "name": "Stray `console.log` in TS/JS \u2014 src/backend/services/conexos.ts:127", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/services/conexos.ts:127"}, "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-17b3f1495675ee53", "name": "Stray `console.log` in TS/JS \u2014 src/backend/domain/libs/logger/Logger.ts:3", "shortDescription": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/domain/libs/logger/Logger.ts:3"}, "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-c45af59910dbff16", "name": "Insecure pattern 'node_child_process' in .claude/settings.json:65", "shortDescription": {"text": "Insecure pattern 'node_child_process' in .claude/settings.json:65"}, "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-64192a3c67110d01", "name": "GitHub Actions workflow grants broad write permissions", "shortDescription": {"text": "GitHub Actions workflow grants broad write permissions"}, "fullDescription": {"text": "CI tokens with write permissions increase blast radius when an action, dependency, or PR workflow is compromised. Prefer job-level least-privilege permissions."}, "properties": {"scanner": "scanner-primary", "layer": "cicd", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-da0ca15efd09862b", "name": "Very large file: src/backend/domain/client/ConexosClient.test.ts (3009 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/client/ConexosClient.test.ts (3009 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-9b88810fc7207072", "name": "Very large file: src/backend/domain/client/ConexosClient.ts (3057 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/client/ConexosClient.ts (3057 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-5d5a3821cff80112", "name": "Very large file: src/backend/domain/service/RelatorioAdiantamentoService.test.ts (1503 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/RelatorioAdiantamentoService.test.ts (1503 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-b40f8b971895d2b2", "name": "Very large file: src/backend/domain/service/FechamentoMensalService.ts (1659 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/FechamentoMensalService.ts (1659 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-a90774ac722db142", "name": "Very large file: src/backend/domain/service/XlsxExportService.ts (1252 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/XlsxExportService.ts (1252 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-3b641577615849b6", "name": "Very large file: src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts (1604 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts (1604 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-b8bba26d28a18b0f", "name": "Very large file: src/backend/domain/service/VariacaoCambialService.test.ts (3047 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/VariacaoCambialService.test.ts (3047 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-a10b644a710538de", "name": "Very large file: src/backend/domain/service/XlsxExportService.test.ts (2013 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/XlsxExportService.test.ts (2013 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-fc3ff0189b2f7490", "name": "Very large file: src/backend/domain/service/FechamentoMensalService.test.ts (3918 lines)", "shortDescription": {"text": "Very large file: src/backend/domain/service/FechamentoMensalService.test.ts (3918 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-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 141 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 35 placeholder/mock markers across 16 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-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. 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-f5db7aff3390f188", "name": "Agent authority lacks a verifier contract: .claude/commands/bpmn-analyze.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/bpmn-analyze.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-153f470d7f84f622", "name": "Agent authority lacks a verifier contract: .claude/commands/bpmn-edit.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/bpmn-edit.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-6779c8641dd88af8", "name": "Agent authority lacks a verifier contract: .claude/commands/arch-review.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/commands/arch-review.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-ec5b13efd0fe2618", "name": "Agent authority lacks a verifier contract: .claude/agents/info-gap-broker.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/info-gap-broker.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-a94817a07b029756", "name": "Agent authority lacks a verifier contract: .claude/agents/qa-consolidator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/qa-consolidator.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-24a653c5a2a4f69e", "name": "Agent authority lacks a verifier contract: .claude/agents/codebase-navigator.md", "shortDescription": {"text": "Agent authority lacks a verifier contract: .claude/agents/codebase-navigator.md"}, "fullDescription": {"text": "This agent instruction grants code or shell authority but does not state the verification gate that decides promotion. The recurring safe pattern is: LLM proposes; deterministic tests/build/security checks verify; only verified code promotes."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-d9556147d50b100a", "name": "Commented-code block (7 lines) in src/frontend/jest.config.js:14", "shortDescription": {"text": "Commented-code block (7 lines) in src/frontend/jest.config.js:14"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-00224754da929299", "name": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/streaming-api.test.ts:132", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/streaming-api.test.ts:132"}, "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-058fe37aafe733fa", "name": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-juros-vs-esperado.test.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-juros-vs-esperado.test.tsx: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-c28673a26b5c600f", "name": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaRelatorioAdiantamento.test.tsx:1", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaRelatorioAdiantamento.test.tsx: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-a0254baa349dc171", "name": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/TabelaFechamentoMensal.test.tsx:298", "shortDescription": {"text": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/TabelaFechamentoMensal.test.tsx:298"}, "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-066d89d3db5a9697", "name": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaVariacaoCambial.test.tsx:6", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaVariacaoCambial.test.tsx: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-f2e80239ca742105", "name": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/page-relatorio-adiantamento.test.tsx:1", "shortDescription": {"text": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/page-relatorio-adiantamento.test.tsx: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-b0e16b8d58d85009", "name": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-fechamento-mensal.test.tsx:144", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-fechamento-mensal.test.tsx:144"}, "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-f426ec0719936874", "name": "Commented-code block (5 lines) in src/frontend/components/closing-reports/DrilldownProcesso.tsx:41", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/components/closing-reports/DrilldownProcesso.tsx:41"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-e93875d23cf0b5bc", "name": "Commented-code block (5 lines) in src/frontend/components/closing-reports/ExportarRelatorioModal.tsx:116", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/components/closing-reports/ExportarRelatorioModal.tsx:116"}, "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-a65fd53dd3c2e4e1", "name": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/variacao-cambial/page.tsx:42", "shortDescription": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/variacao-cambial/page.tsx:42"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-2661b359e207bea2", "name": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/juros-vs-esperado/page.tsx:60", "shortDescription": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/juros-vs-esperado/page.tsx:60"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-b942d75b4e8fc5c1", "name": "Commented-code block (5 lines) in src/frontend/app/closing-reports/juros-vs-esperado/page.tsx:117", "shortDescription": {"text": "Commented-code block (5 lines) in src/frontend/app/closing-reports/juros-vs-esperado/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-17ff45db65d25941", "name": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:68", "shortDescription": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:68"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-58d6b129ace14c58", "name": "Commented-code block (7 lines) in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:200", "shortDescription": {"text": "Commented-code block (7 lines) in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:200"}, "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-9038f7043dbc0072", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/api.ts:31", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/api.ts:31"}, "fullDescription": {"text": "Bare `fetch(...)` will throw an unhandled rejection on network failure. Wrap in try/catch, attach a `.catch(...)`, or pass an AbortSignal with a timeout."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "medium", "confidence": 1.0}}, {"id": "scanner-88fe66b8932e7d45", "name": "Commented-code block (6 lines) in src/frontend/lib/utils.ts:19", "shortDescription": {"text": "Commented-code block (6 lines) in src/frontend/lib/utils.ts:19"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-d2b88b1662d860ef", "name": "Commented-code block (6 lines) in src/frontend/lib/closing-reports/api.ts:295", "shortDescription": {"text": "Commented-code block (6 lines) in src/frontend/lib/closing-reports/api.ts:295"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-1c4fd85da08722c1", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/closing-reports/relatorio-adiantamento-filtros.ts:12", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/closing-reports/relatorio-adiantamento-filtros.ts:12"}, "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-9cb4a30dee55081d", "name": "Commented-code block (9 lines) in src/backend/jest.config.cjs:17", "shortDescription": {"text": "Commented-code block (9 lines) in src/backend/jest.config.cjs:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-0be71dea0616c758", "name": "Commented-code block (5 lines) in src/backend/scripts/reconcile-rel-fin-adiantamento.ts:108", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/scripts/reconcile-rel-fin-adiantamento.ts:108"}, "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-b499f4ed0178b142", "name": "Commented-code block (5 lines) in src/backend/http/auth.test.ts:273", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/http/auth.test.ts:273"}, "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-76ef03ad0040f547", "name": "Commented-code block (6 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.test.", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.test.ts:113"}, "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-5192014a6553c929", "name": "Commented-code block (7 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.ts:71", "shortDescription": {"text": "Commented-code block (7 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.ts:71"}, "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-3a4a3567ced0fc95", "name": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-relatorio-adiantamento/handler.ts:76", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-relatorio-adiantamento/handler.ts:76"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a8deb55b4b60526d", "name": "Commented-code block (8 lines) in src/backend/lambda/api/closing-reports/gerar-fechamento-mensal/handler.ts:68", "shortDescription": {"text": "Commented-code block (8 lines) in src/backend/lambda/api/closing-reports/gerar-fechamento-mensal/handler.ts:68"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-69516ba0d3b0d29b", "name": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-variacao-cambial/handler.ts:17", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-variacao-cambial/handler.ts:17"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-b456474aa6fcb4ec", "name": "Commented-code block (5 lines) in src/backend/services/conexos.ts:185", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/services/conexos.ts:185"}, "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-81f78008c9246524", "name": "Legacy-named symbol `buildLegacy` in src/backend/domain/client/ConexosClient.test.ts:6", "shortDescription": {"text": "Legacy-named symbol `buildLegacy` in src/backend/domain/client/ConexosClient.test.ts:6"}, "fullDescription": {"text": "Names with suffixes like `_old`, `_v1`, `_deprecated` usually indicate replaced-but-not-removed code (typical AI-coder leftover). Confirm and delete, or rename if it's the active version."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-224f04eaa44db2d5", "name": "Commented-code block (6 lines) in src/backend/domain/client/ConexosClient.test.ts:274", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/client/ConexosClient.test.ts:274"}, "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-2d0e77e17418a438", "name": "Commented-code block (11 lines) in src/backend/domain/client/ConexosClient.ts:1015", "shortDescription": {"text": "Commented-code block (11 lines) in src/backend/domain/client/ConexosClient.ts:1015"}, "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-f173552b9f8e8553", "name": "Commented-code block (6 lines) in src/backend/domain/constants/PlanosAdiantamento.test.ts:5", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/constants/PlanosAdiantamento.test.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-1e92926654f0e1cd", "name": "Commented-code block (5 lines) in src/backend/domain/service/JurosCompostoDiarioBuilder.test.ts:49", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/JurosCompostoDiarioBuilder.test.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-9783513728df3fd5", "name": "Commented-code block (5 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.test.ts:478", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.test.ts:478"}, "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-43767f0cfa19bb45", "name": "Commented-code block (10 lines) in src/backend/domain/service/EstoqueJurosTradingService.test.ts:610", "shortDescription": {"text": "Commented-code block (10 lines) in src/backend/domain/service/EstoqueJurosTradingService.test.ts:610"}, "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-62d5310455d7e7d3", "name": "`fetch()` without try/.catch or AbortSignal \u2014 src/backend/domain/service/AdiantamentoRecipeCalculator.ts:79", "shortDescription": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/backend/domain/service/AdiantamentoRecipeCalculator.ts:79"}, "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-a7d793eeab55383e", "name": "Commented-code block (5 lines) in src/backend/domain/service/VariacaoCambialService.ts:228", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/VariacaoCambialService.ts:228"}, "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-d4667fdacf35391e", "name": "Commented-code block (7 lines) in src/backend/domain/service/FechamentoMensalCache.test.ts:271", "shortDescription": {"text": "Commented-code block (7 lines) in src/backend/domain/service/FechamentoMensalCache.test.ts:271"}, "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-ad6d11b056570d2e", "name": "Commented-code block (5 lines) in src/backend/domain/service/RelatorioAdiantamentoService.ts:188", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/RelatorioAdiantamentoService.ts:188"}, "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-13fe1dfdea55ad70", "name": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.ts:103", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.ts:103"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-a736ea1e24d7c847", "name": "Commented-code block (5 lines) in src/backend/domain/service/ExposicaoFifoService.test.ts:801", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/ExposicaoFifoService.test.ts:801"}, "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-8d308232353c5a97", "name": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.pri1153.test.ts:271", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.pri1153.test.ts:271"}, "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-eefb9e0ec5b1f746", "name": "Commented-code block (10 lines) in src/backend/domain/service/XlsxExportService.ts:36", "shortDescription": {"text": "Commented-code block (10 lines) in src/backend/domain/service/XlsxExportService.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-9f5b3ee07eec7645", "name": "Commented-code block (5 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts:243", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts:243"}, "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-e389ee67446cc350", "name": "Commented-code block (6 lines) in src/backend/domain/service/VariacaoCambialService.test.ts:440", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/service/VariacaoCambialService.test.ts:440"}, "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-c87af1714b542686", "name": "Commented-code block (7 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.ts:421", "shortDescription": {"text": "Commented-code block (7 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.ts:421"}, "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-a1286957ed6bf3e1", "name": "Commented-code block (8 lines) in src/backend/domain/service/ExposicaoFifoService.ts:169", "shortDescription": {"text": "Commented-code block (8 lines) in src/backend/domain/service/ExposicaoFifoService.ts:169"}, "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-5653afb7bc514f75", "name": "Commented-code block (6 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.ts:118", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.ts:118"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-ebf1b60cb3e574cd", "name": "Commented-code block (5 lines) in src/backend/domain/service/EstagioProcessoService.test.ts:92", "shortDescription": {"text": "Commented-code block (5 lines) in src/backend/domain/service/EstagioProcessoService.test.ts:92"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-943c52876c2eee05", "name": "Commented-code block (6 lines) in src/backend/domain/service/EstoqueJurosTradingService.ts:197", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/service/EstoqueJurosTradingService.ts:197"}, "fullDescription": {"text": "A long run of `//` or `#` lines usually means abandoned code. Delete or move to git history. Keeps the canvas + dead-code detection honest."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "info", "confidence": 1.0}}, {"id": "scanner-8429fa41a4295d4a", "name": "Commented-code block (7 lines) in src/backend/domain/service/XlsxExportService.test.ts:155", "shortDescription": {"text": "Commented-code block (7 lines) in src/backend/domain/service/XlsxExportService.test.ts:155"}, "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-9cb9d6aa6600831f", "name": "Commented-code block (6 lines) in src/backend/domain/service/FechamentoMensalService.test.ts:49", "shortDescription": {"text": "Commented-code block (6 lines) in src/backend/domain/service/FechamentoMensalService.test.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-d0b17c8c07a7421d", "name": "8 env vars used in code but missing from .env.example", "shortDescription": {"text": "8 env vars used in code but missing from .env.example"}, "fullDescription": {"text": "Drift between code and config docs. The first few: `BCB_CDI_FALLBACK`, `CONEXOS_FIL_COD`, `CONEXOS_HTTP_TIMEOUT_MS`, `CONEXOS_USN_COD`, `DEBUG_VERBOSE`, `NEXT_PUBLIC_DEV_AUTH_BYPASS`, `NODE_ENV`, `TZ`. Add them (with a placeholder/comment) to .env.example so onboarding doesn't break."}, "properties": {"scanner": "scanner-primary", "layer": "quality", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a80d61848afcb6a9", "name": "Dangling fetch: GET /imp021/list (src/backend/domain/client/ConexosClient.test.ts:464)", "shortDescription": {"text": "Dangling fetch: GET /imp021/list (src/backend/domain/client/ConexosClient.test.ts:464)"}, "fullDescription": {"text": "`src/backend/domain/client/ConexosClient.test.ts:464` calls `GET /imp021/list` but no backend route matches that path. This is a runtime 404 waiting to happen.\n\nTool: helper:request\nNormalized path used for matching: `/imp021/list`\nIf this points at an external API, prefix it with `https://` so the matcher skips it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "high", "confidence": 1.0}}, {"id": "scanner-7d45146c67e84bb5", "name": "Unused endpoint: USE /closing-reports", "shortDescription": {"text": "Unused endpoint: USE /closing-reports"}, "fullDescription": {"text": "`src/backend/index.ts` declares `USE /closing-reports` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-3b91d35a808f6082", "name": "Unused endpoint: USE /analysis", "shortDescription": {"text": "Unused endpoint: USE /analysis"}, "fullDescription": {"text": "`src/backend/index.ts` declares `USE /analysis` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-0a1efe41700ca781", "name": "Unused endpoint: USE /processes", "shortDescription": {"text": "Unused endpoint: USE /processes"}, "fullDescription": {"text": "`src/backend/index.ts` declares `USE /processes` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-bd4bb940299217a9", "name": "Unused endpoint: GET /:priCod", "shortDescription": {"text": "Unused endpoint: GET /:priCod"}, "fullDescription": {"text": "`src/backend/routes/analysis.ts` declares `GET /:priCod` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-1e2b795ee70f4f39", "name": "Unused endpoint: POST /fechamento-mensal", "shortDescription": {"text": "Unused endpoint: POST /fechamento-mensal"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `POST /fechamento-mensal` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-4c3e45afffdf88fc", "name": "Unused endpoint: POST /juros-vs-esperado", "shortDescription": {"text": "Unused endpoint: POST /juros-vs-esperado"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `POST /juros-vs-esperado` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-ae1679f6653119aa", "name": "Unused endpoint: POST /variacao-cambial", "shortDescription": {"text": "Unused endpoint: POST /variacao-cambial"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `POST /variacao-cambial` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-eea9bcc8e94d1002", "name": "Unused endpoint: POST /relatorio-adiantamento", "shortDescription": {"text": "Unused endpoint: POST /relatorio-adiantamento"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `POST /relatorio-adiantamento` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-04753e816bb57093", "name": "Unused endpoint: GET /available-months", "shortDescription": {"text": "Unused endpoint: GET /available-months"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `GET /available-months` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-a5953ca938665738", "name": "Unused endpoint: GET /filiais", "shortDescription": {"text": "Unused endpoint: GET /filiais"}, "fullDescription": {"text": "`src/backend/routes/closing-reports.ts` declares `GET /filiais` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}, {"id": "scanner-5baa8971ebe192a1", "name": "Unused endpoint: GET /", "shortDescription": {"text": "Unused endpoint: GET /"}, "fullDescription": {"text": "`src/backend/routes/processes.ts` declares `GET /` but no frontend code we scanned calls it. This is fine if the endpoint serves external clients (mobile app, third-party, server-side webhooks). Otherwise it's dead code \u2014 consider removing or documenting who consumes it."}, "properties": {"scanner": "scanner-primary", "layer": "api", "severity": "low", "confidence": 1.0}}]}}, "automationDetails": {"id": "repobility/17641"}, "properties": {"repository": "Quartano-Level/fechamento-processos", "repoUrl": "https://github.com/Quartano-Level/fechamento-processos", "branch": "main"}, "results": [{"ruleId": "scanner-91bdea6880095f0e", "level": "note", "message": {"text": "React Flow edge with `label=` but no project-wide edge-label CSS override \u2014 src/frontend/__tests__/closing-reports/streaming-api.test.ts:85"}, "properties": {"repobilityId": "dce4d99cde60a777", "scanner": "scanner-primary", "fingerprint": "91bdea6880095f0e", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.edge-label.no-bg"]}}, {"ruleId": "scanner-9381460415df1ea0", "level": "none", "message": {"text": "`truncate` class without `title=` for hover reveal \u2014 src/frontend/components/closing-reports/TimelineExposicao.tsx:435"}, "properties": {"repobilityId": "0d73ff1fa88218e1", "scanner": "scanner-primary", "fingerprint": "9381460415df1ea0", "layer": "frontend", "severity": "info", "confidence": 1.0, "tags": ["frontend-quality", "fq.truncate.no-title"]}}, {"ruleId": "scanner-f5e07670b6c51a13", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/index.ts:42"}, "properties": {"repobilityId": "7b8234f18ca17da3", "scanner": "scanner-primary", "fingerprint": "f5e07670b6c51a13", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0d366ee82b8e9f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rpfin028-recipe.ts:329"}, "properties": {"repobilityId": "fede5ba61d4ecf91", "scanner": "scanner-primary", "fingerprint": "c0d366ee82b8e9f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-e0be8fcdc0957df6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento.ts:40"}, "properties": {"repobilityId": "5c616998b75d7389", "scanner": "scanner-primary", "fingerprint": "e0be8fcdc0957df6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-f61dee5a5334f492", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/reconcile-rel-fin-adiantamento.ts:175"}, "properties": {"repobilityId": "c384810531c31ac1", "scanner": "scanner-primary", "fingerprint": "f61dee5a5334f492", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-fbd74ea339380005", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-4.ts:23"}, "properties": {"repobilityId": "d356aaa08519959e", "scanner": "scanner-primary", "fingerprint": "fbd74ea339380005", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-90987a9526aa9969", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-3.ts:21"}, "properties": {"repobilityId": "71bb2c173de55c3c", "scanner": "scanner-primary", "fingerprint": "90987a9526aa9969", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c0dacecc75ae4fd0", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-4.ts:54"}, "properties": {"repobilityId": "21c708bdd2ac8256", "scanner": "scanner-primary", "fingerprint": "c0dacecc75ae4fd0", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-236a7a3d6ce4f3e6", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/live-run-rel-fin-adiantamento.ts:50"}, "properties": {"repobilityId": "c51b5fe42674f66d", "scanner": "scanner-primary", "fingerprint": "236a7a3d6ce4f3e6", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-93ab40a96e1d1be8", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-2.ts:51"}, "properties": {"repobilityId": "a46912dc80ae1ce5", "scanner": "scanner-primary", "fingerprint": "93ab40a96e1d1be8", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-925c54a4167047ab", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-5.ts:21"}, "properties": {"repobilityId": "57dc855e8632848a", "scanner": "scanner-primary", "fingerprint": "925c54a4167047ab", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-922364a4374f0e51", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/inspect-divergencia-xlsx.ts:10"}, "properties": {"repobilityId": "2fd06329b79e5a90", "scanner": "scanner-primary", "fingerprint": "922364a4374f0e51", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-94b9a48d791610aa", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-fin-adiantamento-2.ts:22"}, "properties": {"repobilityId": "d07c434b6673cfab", "scanner": "scanner-primary", "fingerprint": "94b9a48d791610aa", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-adb7f07262e4a5f4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database.ts:61"}, "properties": {"repobilityId": "6bfdd62ae71e509e", "scanner": "scanner-primary", "fingerprint": "adb7f07262e4a5f4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-87acb742275cd72d", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-5.ts:20"}, "properties": {"repobilityId": "dfc4bc36c4afe1fb", "scanner": "scanner-primary", "fingerprint": "87acb742275cd72d", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b8d9288946ac505b", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/scripts/probe-rel-adto-database-3.ts:51"}, "properties": {"repobilityId": "83f0cec3d9b2f0c2", "scanner": "scanner-primary", "fingerprint": "b8d9288946ac505b", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-a21b7bbc787ffff4", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/utils/index.ts:147"}, "properties": {"repobilityId": "600712c51330c6bf", "scanner": "scanner-primary", "fingerprint": "a21b7bbc787ffff4", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-b24fb50c085311f2", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/services/conexos.ts:127"}, "properties": {"repobilityId": "7a7a5940cf5984b9", "scanner": "scanner-primary", "fingerprint": "b24fb50c085311f2", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-17b3f1495675ee53", "level": "note", "message": {"text": "Stray `console.log` in TS/JS \u2014 src/backend/domain/libs/logger/Logger.ts:3"}, "properties": {"repobilityId": "abc0e185ce9b54dd", "scanner": "scanner-primary", "fingerprint": "17b3f1495675ee53", "layer": "frontend", "severity": "low", "confidence": 1.0, "tags": ["frontend-quality", "fq.console-leak"]}}, {"ruleId": "scanner-c45af59910dbff16", "level": "warning", "message": {"text": "Insecure pattern 'node_child_process' in .claude/settings.json:65"}, "properties": {"repobilityId": "54e6da7d4a7159e4", "scanner": "scanner-primary", "fingerprint": "c45af59910dbff16", "layer": "security", "severity": "medium", "confidence": 1.0, "tags": ["owasp", "node_child_process"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/settings.json"}, "region": {"startLine": 65}}}]}, {"ruleId": "scanner-64192a3c67110d01", "level": "warning", "message": {"text": "GitHub Actions workflow grants broad write permissions"}, "properties": {"repobilityId": "87338a8bfcb6f435", "scanner": "scanner-primary", "fingerprint": "64192a3c67110d01", "layer": "cicd", "severity": "medium", "confidence": 1.0, "tags": ["supply-chain", "github-actions", "least-privilege"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".github/workflows/ci.yml"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-da0ca15efd09862b", "level": "note", "message": {"text": "Very large file: src/backend/domain/client/ConexosClient.test.ts (3009 lines)"}, "properties": {"repobilityId": "d539504484b143c6", "scanner": "scanner-primary", "fingerprint": "da0ca15efd09862b", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-9b88810fc7207072", "level": "note", "message": {"text": "Very large file: src/backend/domain/client/ConexosClient.ts (3057 lines)"}, "properties": {"repobilityId": "8cad773be628eb02", "scanner": "scanner-primary", "fingerprint": "9b88810fc7207072", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-5d5a3821cff80112", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/RelatorioAdiantamentoService.test.ts (1503 lines)"}, "properties": {"repobilityId": "d0014505891901e3", "scanner": "scanner-primary", "fingerprint": "5d5a3821cff80112", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b40f8b971895d2b2", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/FechamentoMensalService.ts (1659 lines)"}, "properties": {"repobilityId": "9c5dffd0bd194982", "scanner": "scanner-primary", "fingerprint": "b40f8b971895d2b2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a90774ac722db142", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/XlsxExportService.ts (1252 lines)"}, "properties": {"repobilityId": "722ccf2ee27aadfc", "scanner": "scanner-primary", "fingerprint": "a90774ac722db142", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-3b641577615849b6", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts (1604 lines)"}, "properties": {"repobilityId": "a8129ce780d0a472", "scanner": "scanner-primary", "fingerprint": "3b641577615849b6", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-b8bba26d28a18b0f", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/VariacaoCambialService.test.ts (3047 lines)"}, "properties": {"repobilityId": "db1a2f90eac7ea79", "scanner": "scanner-primary", "fingerprint": "b8bba26d28a18b0f", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-a10b644a710538de", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/XlsxExportService.test.ts (2013 lines)"}, "properties": {"repobilityId": "1ef39da5e5a93be2", "scanner": "scanner-primary", "fingerprint": "a10b644a710538de", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-fc3ff0189b2f7490", "level": "note", "message": {"text": "Very large file: src/backend/domain/service/FechamentoMensalService.test.ts (3918 lines)"}, "properties": {"repobilityId": "dbed6a6e0dd91043", "scanner": "scanner-primary", "fingerprint": "fc3ff0189b2f7490", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["complexity"]}}, {"ruleId": "scanner-141b30a41e03817b", "level": "note", "message": {"text": "No license file detected"}, "properties": {"repobilityId": "a3ad2319d734a518", "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": "8d72ea479c2f165a", "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": "d88b126387725444", "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": "34e3d08227cb4129", "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": "31bef85c070c0aec", "scanner": "scanner-primary", "fingerprint": "2d0c7b7ab8f8aacf", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["placeholder", "mock-data", "critical-flow", "generated-repo-pattern"]}}, {"ruleId": "scanner-749d4bc1bd66df5f", "level": "warning", "message": {"text": "Agent instructions exist but release-hardening basics are missing"}, "properties": {"repobilityId": "1b97f78ce710da45", "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": "f74cb4db32897ddc", "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": "bad08ef0e6701e2b", "scanner": "scanner-primary", "fingerprint": "8424db9c75e04ba4", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["provenance", "git-history", "generated-repo-pattern"]}}, {"ruleId": "scanner-f5db7aff3390f188", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/bpmn-analyze.md"}, "properties": {"repobilityId": "f5f5637b72038552", "scanner": "scanner-primary", "fingerprint": "f5db7aff3390f188", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/bpmn-analyze.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-153f470d7f84f622", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/bpmn-edit.md"}, "properties": {"repobilityId": "1478da0c830320c7", "scanner": "scanner-primary", "fingerprint": "153f470d7f84f622", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/bpmn-edit.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-6779c8641dd88af8", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/commands/arch-review.md"}, "properties": {"repobilityId": "c605c9bff0f42c6a", "scanner": "scanner-primary", "fingerprint": "6779c8641dd88af8", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/commands/arch-review.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-ec5b13efd0fe2618", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/info-gap-broker.md"}, "properties": {"repobilityId": "4f4ee3e1393fa5eb", "scanner": "scanner-primary", "fingerprint": "ec5b13efd0fe2618", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/info-gap-broker.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-a94817a07b029756", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/qa-consolidator.md"}, "properties": {"repobilityId": "7dba14d1f2ef9c3b", "scanner": "scanner-primary", "fingerprint": "a94817a07b029756", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/qa-consolidator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-24a653c5a2a4f69e", "level": "warning", "message": {"text": "Agent authority lacks a verifier contract: .claude/agents/codebase-navigator.md"}, "properties": {"repobilityId": "adc2692104e2fd93", "scanner": "scanner-primary", "fingerprint": "24a653c5a2a4f69e", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["agent-instructions", "verification", "claude_instruction"]}, "locations": [{"physicalLocation": {"artifactLocation": {"uri": ".claude/agents/codebase-navigator.md"}, "region": {"startLine": 1}}}]}, {"ruleId": "scanner-d9556147d50b100a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/frontend/jest.config.js:14"}, "properties": {"repobilityId": "4a694ebe2ac105af", "scanner": "scanner-primary", "fingerprint": "d9556147d50b100a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-00224754da929299", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/streaming-api.test.ts:132"}, "properties": {"repobilityId": "13fb77373f72c6d3", "scanner": "scanner-primary", "fingerprint": "00224754da929299", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-058fe37aafe733fa", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-juros-vs-esperado.test.tsx:1"}, "properties": {"repobilityId": "d059359f8ba05ee3", "scanner": "scanner-primary", "fingerprint": "058fe37aafe733fa", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c28673a26b5c600f", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaRelatorioAdiantamento.test.tsx:1"}, "properties": {"repobilityId": "6c59da26f22be140", "scanner": "scanner-primary", "fingerprint": "c28673a26b5c600f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a0254baa349dc171", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/TabelaFechamentoMensal.test.tsx:298"}, "properties": {"repobilityId": "8760194b50bb9a81", "scanner": "scanner-primary", "fingerprint": "a0254baa349dc171", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-066d89d3db5a9697", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/TabelaVariacaoCambial.test.tsx:6"}, "properties": {"repobilityId": "7ab1c98a691c835c", "scanner": "scanner-primary", "fingerprint": "066d89d3db5a9697", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f2e80239ca742105", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/frontend/__tests__/closing-reports/page-relatorio-adiantamento.test.tsx:1"}, "properties": {"repobilityId": "54501edeabb204db", "scanner": "scanner-primary", "fingerprint": "f2e80239ca742105", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b0e16b8d58d85009", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/__tests__/closing-reports/page-fechamento-mensal.test.tsx:144"}, "properties": {"repobilityId": "014042b3f9211cb4", "scanner": "scanner-primary", "fingerprint": "b0e16b8d58d85009", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f426ec0719936874", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/components/closing-reports/DrilldownProcesso.tsx:41"}, "properties": {"repobilityId": "ab49ca52232b0267", "scanner": "scanner-primary", "fingerprint": "f426ec0719936874", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e93875d23cf0b5bc", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/components/closing-reports/ExportarRelatorioModal.tsx:116"}, "properties": {"repobilityId": "7199b6a4a674e249", "scanner": "scanner-primary", "fingerprint": "e93875d23cf0b5bc", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a65fd53dd3c2e4e1", "level": "note", "message": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/variacao-cambial/page.tsx:42"}, "properties": {"repobilityId": "a1e0db119e123ceb", "scanner": "scanner-primary", "fingerprint": "a65fd53dd3c2e4e1", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-2661b359e207bea2", "level": "note", "message": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/juros-vs-esperado/page.tsx:60"}, "properties": {"repobilityId": "1ef8f54e812addfd", "scanner": "scanner-primary", "fingerprint": "2661b359e207bea2", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-b942d75b4e8fc5c1", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/frontend/app/closing-reports/juros-vs-esperado/page.tsx:117"}, "properties": {"repobilityId": "ee6c59a74a41cd45", "scanner": "scanner-primary", "fingerprint": "b942d75b4e8fc5c1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-17ff45db65d25941", "level": "note", "message": {"text": "Legacy-named symbol `dataBaseLegacy` in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:68"}, "properties": {"repobilityId": "26cecfa712594fe4", "scanner": "scanner-primary", "fingerprint": "17ff45db65d25941", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-58d6b129ace14c58", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/frontend/app/closing-reports/fechamento-mensal/page.tsx:200"}, "properties": {"repobilityId": "6ee4ca54de67c62c", "scanner": "scanner-primary", "fingerprint": "58d6b129ace14c58", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9038f7043dbc0072", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/api.ts:31"}, "properties": {"repobilityId": "d2b12400cbc98436", "scanner": "scanner-primary", "fingerprint": "9038f7043dbc0072", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-88fe66b8932e7d45", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/frontend/lib/utils.ts:19"}, "properties": {"repobilityId": "d1347eac9b51e0ac", "scanner": "scanner-primary", "fingerprint": "88fe66b8932e7d45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d2b88b1662d860ef", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/frontend/lib/closing-reports/api.ts:295"}, "properties": {"repobilityId": "f967b7411f464bb9", "scanner": "scanner-primary", "fingerprint": "d2b88b1662d860ef", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1c4fd85da08722c1", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/frontend/lib/closing-reports/relatorio-adiantamento-filtros.ts:12"}, "properties": {"repobilityId": "9ec459ec70c9d6c2", "scanner": "scanner-primary", "fingerprint": "1c4fd85da08722c1", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-9cb4a30dee55081d", "level": "none", "message": {"text": "Commented-code block (9 lines) in src/backend/jest.config.cjs:17"}, "properties": {"repobilityId": "60efb48162eebcc8", "scanner": "scanner-primary", "fingerprint": "9cb4a30dee55081d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-0be71dea0616c758", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/scripts/reconcile-rel-fin-adiantamento.ts:108"}, "properties": {"repobilityId": "eecd13ffdbdb1181", "scanner": "scanner-primary", "fingerprint": "0be71dea0616c758", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b499f4ed0178b142", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/http/auth.test.ts:273"}, "properties": {"repobilityId": "e807492224633c0c", "scanner": "scanner-primary", "fingerprint": "b499f4ed0178b142", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-76ef03ad0040f547", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.test.ts:113"}, "properties": {"repobilityId": "452783d02d98c746", "scanner": "scanner-primary", "fingerprint": "76ef03ad0040f547", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5192014a6553c929", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/backend/lambda/api/closing-reports/gerar-juros-calculado-vs-esperado/handler.ts:71"}, "properties": {"repobilityId": "aef1991c1c36d556", "scanner": "scanner-primary", "fingerprint": "5192014a6553c929", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-3a4a3567ced0fc95", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-relatorio-adiantamento/handler.ts:76"}, "properties": {"repobilityId": "26a884ce9803fc54", "scanner": "scanner-primary", "fingerprint": "3a4a3567ced0fc95", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a8deb55b4b60526d", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/backend/lambda/api/closing-reports/gerar-fechamento-mensal/handler.ts:68"}, "properties": {"repobilityId": "5f338c5d3a5aa155", "scanner": "scanner-primary", "fingerprint": "a8deb55b4b60526d", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-69516ba0d3b0d29b", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/lambda/api/closing-reports/gerar-variacao-cambial/handler.ts:17"}, "properties": {"repobilityId": "024f1507f6e75650", "scanner": "scanner-primary", "fingerprint": "69516ba0d3b0d29b", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-b456474aa6fcb4ec", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/services/conexos.ts:185"}, "properties": {"repobilityId": "f8ef3b0bc17fc587", "scanner": "scanner-primary", "fingerprint": "b456474aa6fcb4ec", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-81f78008c9246524", "level": "note", "message": {"text": "Legacy-named symbol `buildLegacy` in src/backend/domain/client/ConexosClient.test.ts:6"}, "properties": {"repobilityId": "6936fa4a03e963c9", "scanner": "scanner-primary", "fingerprint": "81f78008c9246524", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "legacy-marker", "dead-code"]}}, {"ruleId": "scanner-224f04eaa44db2d5", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/client/ConexosClient.test.ts:274"}, "properties": {"repobilityId": "ba640145ba0e2f0b", "scanner": "scanner-primary", "fingerprint": "224f04eaa44db2d5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-2d0e77e17418a438", "level": "none", "message": {"text": "Commented-code block (11 lines) in src/backend/domain/client/ConexosClient.ts:1015"}, "properties": {"repobilityId": "cb10e953a9ba19c7", "scanner": "scanner-primary", "fingerprint": "2d0e77e17418a438", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-f173552b9f8e8553", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/constants/PlanosAdiantamento.test.ts:5"}, "properties": {"repobilityId": "edef939971495fb5", "scanner": "scanner-primary", "fingerprint": "f173552b9f8e8553", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-1e92926654f0e1cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/JurosCompostoDiarioBuilder.test.ts:49"}, "properties": {"repobilityId": "d9090ea65a7c56d0", "scanner": "scanner-primary", "fingerprint": "1e92926654f0e1cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9783513728df3fd5", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.test.ts:478"}, "properties": {"repobilityId": "2bafa3cc4fc1c49b", "scanner": "scanner-primary", "fingerprint": "9783513728df3fd5", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-43767f0cfa19bb45", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/backend/domain/service/EstoqueJurosTradingService.test.ts:610"}, "properties": {"repobilityId": "be87ce72f8c73165", "scanner": "scanner-primary", "fingerprint": "43767f0cfa19bb45", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-62d5310455d7e7d3", "level": "warning", "message": {"text": "`fetch()` without try/.catch or AbortSignal \u2014 src/backend/domain/service/AdiantamentoRecipeCalculator.ts:79"}, "properties": {"repobilityId": "02419579366dd0ad", "scanner": "scanner-primary", "fingerprint": "62d5310455d7e7d3", "layer": "quality", "severity": "medium", "confidence": 1.0, "tags": ["integrity", "fragile-runtime", "robustness"]}}, {"ruleId": "scanner-a7d793eeab55383e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/VariacaoCambialService.ts:228"}, "properties": {"repobilityId": "893a335c7f83b2fb", "scanner": "scanner-primary", "fingerprint": "a7d793eeab55383e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d4667fdacf35391e", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/backend/domain/service/FechamentoMensalCache.test.ts:271"}, "properties": {"repobilityId": "c4ef76a25c62328c", "scanner": "scanner-primary", "fingerprint": "d4667fdacf35391e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ad6d11b056570d2e", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/RelatorioAdiantamentoService.ts:188"}, "properties": {"repobilityId": "22eaaff957c50119", "scanner": "scanner-primary", "fingerprint": "ad6d11b056570d2e", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-13fe1dfdea55ad70", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.ts:103"}, "properties": {"repobilityId": "771adb6314a946f2", "scanner": "scanner-primary", "fingerprint": "13fe1dfdea55ad70", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a736ea1e24d7c847", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/ExposicaoFifoService.test.ts:801"}, "properties": {"repobilityId": "fe1a3cc934fde692", "scanner": "scanner-primary", "fingerprint": "a736ea1e24d7c847", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8d308232353c5a97", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/FechamentoMensalService.pri1153.test.ts:271"}, "properties": {"repobilityId": "54be8b0a4514e172", "scanner": "scanner-primary", "fingerprint": "8d308232353c5a97", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-eefb9e0ec5b1f746", "level": "none", "message": {"text": "Commented-code block (10 lines) in src/backend/domain/service/XlsxExportService.ts:36"}, "properties": {"repobilityId": "9aa21056036e5812", "scanner": "scanner-primary", "fingerprint": "eefb9e0ec5b1f746", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9f5b3ee07eec7645", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.test.ts:243"}, "properties": {"repobilityId": "f65f6192a4097eda", "scanner": "scanner-primary", "fingerprint": "9f5b3ee07eec7645", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-e389ee67446cc350", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/service/VariacaoCambialService.test.ts:440"}, "properties": {"repobilityId": "cff7ea6991081db5", "scanner": "scanner-primary", "fingerprint": "e389ee67446cc350", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-c87af1714b542686", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/backend/domain/service/LancamentoFinanceiroBaixaService.ts:421"}, "properties": {"repobilityId": "40d947be3f15565f", "scanner": "scanner-primary", "fingerprint": "c87af1714b542686", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-a1286957ed6bf3e1", "level": "none", "message": {"text": "Commented-code block (8 lines) in src/backend/domain/service/ExposicaoFifoService.ts:169"}, "properties": {"repobilityId": "837b6ba507d44f2d", "scanner": "scanner-primary", "fingerprint": "a1286957ed6bf3e1", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-5653afb7bc514f75", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/service/JurosCalculadoVsEsperadoService.ts:118"}, "properties": {"repobilityId": "39561a8fbba0fb82", "scanner": "scanner-primary", "fingerprint": "5653afb7bc514f75", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-ebf1b60cb3e574cd", "level": "none", "message": {"text": "Commented-code block (5 lines) in src/backend/domain/service/EstagioProcessoService.test.ts:92"}, "properties": {"repobilityId": "b4fffb86980446b9", "scanner": "scanner-primary", "fingerprint": "ebf1b60cb3e574cd", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-943c52876c2eee05", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/service/EstoqueJurosTradingService.ts:197"}, "properties": {"repobilityId": "609dc6f7d0270ea6", "scanner": "scanner-primary", "fingerprint": "943c52876c2eee05", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-8429fa41a4295d4a", "level": "none", "message": {"text": "Commented-code block (7 lines) in src/backend/domain/service/XlsxExportService.test.ts:155"}, "properties": {"repobilityId": "9e5a66d771d994f0", "scanner": "scanner-primary", "fingerprint": "8429fa41a4295d4a", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-9cb9d6aa6600831f", "level": "none", "message": {"text": "Commented-code block (6 lines) in src/backend/domain/service/FechamentoMensalService.test.ts:49"}, "properties": {"repobilityId": "c0b3cfacdbedd76c", "scanner": "scanner-primary", "fingerprint": "9cb9d6aa6600831f", "layer": "quality", "severity": "info", "confidence": 1.0, "tags": ["integrity", "commented-code", "dead-code"]}}, {"ruleId": "scanner-d0b17c8c07a7421d", "level": "note", "message": {"text": "8 env vars used in code but missing from .env.example"}, "properties": {"repobilityId": "17fe720e8247f9df", "scanner": "scanner-primary", "fingerprint": "d0b17c8c07a7421d", "layer": "quality", "severity": "low", "confidence": 1.0, "tags": ["integrity", "config-drift"]}}, {"ruleId": "scanner-a80d61848afcb6a9", "level": "error", "message": {"text": "Dangling fetch: GET /imp021/list (src/backend/domain/client/ConexosClient.test.ts:464)"}, "properties": {"repobilityId": "f78f03fa603a1bd7", "scanner": "scanner-primary", "fingerprint": "a80d61848afcb6a9", "layer": "api", "severity": "high", "confidence": 1.0, "tags": ["wiring", "dangling-fetch", "helper:request"]}}, {"ruleId": "scanner-7d45146c67e84bb5", "level": "note", "message": {"text": "Unused endpoint: USE /closing-reports"}, "properties": {"repobilityId": "004f2bda9321b425", "scanner": "scanner-primary", "fingerprint": "7d45146c67e84bb5", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-3b91d35a808f6082", "level": "note", "message": {"text": "Unused endpoint: USE /analysis"}, "properties": {"repobilityId": "74d816eb9deac90a", "scanner": "scanner-primary", "fingerprint": "3b91d35a808f6082", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-0a1efe41700ca781", "level": "note", "message": {"text": "Unused endpoint: USE /processes"}, "properties": {"repobilityId": "7b552fcc642aae50", "scanner": "scanner-primary", "fingerprint": "0a1efe41700ca781", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-bd4bb940299217a9", "level": "note", "message": {"text": "Unused endpoint: GET /:priCod"}, "properties": {"repobilityId": "40ceb95de96aeafb", "scanner": "scanner-primary", "fingerprint": "bd4bb940299217a9", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-1e2b795ee70f4f39", "level": "note", "message": {"text": "Unused endpoint: POST /fechamento-mensal"}, "properties": {"repobilityId": "bd3b78acd4de3040", "scanner": "scanner-primary", "fingerprint": "1e2b795ee70f4f39", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-4c3e45afffdf88fc", "level": "note", "message": {"text": "Unused endpoint: POST /juros-vs-esperado"}, "properties": {"repobilityId": "1e8d419e966ddd34", "scanner": "scanner-primary", "fingerprint": "4c3e45afffdf88fc", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-ae1679f6653119aa", "level": "note", "message": {"text": "Unused endpoint: POST /variacao-cambial"}, "properties": {"repobilityId": "dd5e983acc787dfc", "scanner": "scanner-primary", "fingerprint": "ae1679f6653119aa", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-eea9bcc8e94d1002", "level": "note", "message": {"text": "Unused endpoint: POST /relatorio-adiantamento"}, "properties": {"repobilityId": "7e0b35888e46278e", "scanner": "scanner-primary", "fingerprint": "eea9bcc8e94d1002", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-04753e816bb57093", "level": "note", "message": {"text": "Unused endpoint: GET /available-months"}, "properties": {"repobilityId": "8876802694f9d139", "scanner": "scanner-primary", "fingerprint": "04753e816bb57093", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-a5953ca938665738", "level": "note", "message": {"text": "Unused endpoint: GET /filiais"}, "properties": {"repobilityId": "edc50c8ea8fb115c", "scanner": "scanner-primary", "fingerprint": "a5953ca938665738", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}, {"ruleId": "scanner-5baa8971ebe192a1", "level": "note", "message": {"text": "Unused endpoint: GET /"}, "properties": {"repobilityId": "94f50374868533a7", "scanner": "scanner-primary", "fingerprint": "5baa8971ebe192a1", "layer": "api", "severity": "low", "confidence": 1.0, "tags": ["wiring", "unused-endpoint"]}}]}]}