Auditoria de código morto, deduplicação e dívida — v1.10.1¶
Data: 2026-08-10. Escopo: Python, FastAPI, React/TypeScript, extensão, scripts, testes e documentação.
Método¶
Foram confrontados rg --files, imports Python, referências de rotas, consumidores do PromptRegistry, scripts de release, OpenAPI, árvore TanStack gerada, testes e documentação. Um arquivo sem import direto não foi classificado como morto quando era entrypoint, fixture, migration, asset, gerador ou contrato de pacote.
Resultado¶
| Achado | Evidência | Decisão |
|---|---|---|
routeTree.gen.ts parece duplicar rotas |
gerado pelo plugin TanStack e consumido por router.tsx |
manter; não editar manualmente |
scripts v1.9.9 parecem antigos |
são reprodução histórica de assets e migração, referenciados por docs | manter como histórico, fora da jornada 1.10.1 |
| stores JSON de oportunidades, Radar, fontes e Perfil | possuem leitores e writers ativos | não são código morto; dívida de migração documentada |
apps/web/src/lib/api/client.ts e types.ts são grandes |
importados por todas as rotas existentes | vivos; novos domínios foram separados em career-workflows.ts |
| componentes Radix Dialog/Sheet | agora consumidos por preferências, onboarding, menu e ajuda | duplicação de modal manual reduzida |
| scores fixos do Dashboard | valores 78/74/81/66/18 sem origem real | removidos; o painel usa somente match_score persistido |
| fontes Google Fonts | dependência remota no CSS | removida; pilha de fontes locais/sistema |
Código removido¶
Não houve remoção em massa: nenhum módulo inteiro pôde ser provado morto com segurança. Foram removidos o modal móvel artesanal do shell, o componente privado MiniScore e os scores fictícios associados. Arquivos gerados, migrations e scripts históricos foram preservados.
Duplicações corrigidas¶
- pairing e CSRF agora são escopados pela origem da API;
- novos contratos de Interview/Career usam um cliente de domínio separado;
- Opportunity e Taxonomy usam um único repositório SQLite v7;
- ajuda, preferências e navegação usam metadados e catálogos compartilhados;
- JSON Resume e registros profissionais deixaram de compartilhar semanticamente
certificates.
Dívida real restante¶
client.tsetypes.tsdevem ser particionados incrementalmente;- stores JSON antigos continuam sendo a verdade dos contratos antigos até uma migração própria;
- tradução integral do conteúdo histórico das rotas deve avançar por domínio; shell, navegação e fluxos 1.10.1 já usam catálogo tipado;
- scripts históricos de screenshot podem ser movidos para uma pasta de arquivo em uma release futura.
Nenhum dos três arquivos protegidos por hash foi tratado como candidato de limpeza.