Repository navigation
Open
Labels
workertarefa que diz respeito ao simulador em sandbox da aplicação, denominado `worker`tarefa que diz respeito ao simulador em sandbox da aplicação, denominado `worker`
Milestone
Description
T-311 - Gravar no worker as fontes de dados de cada execução
- Componente:
worker. - Depende de: T-309 no
develope T-310 implantada antes desta. - Data máxima: 13/11/2026
- Estimativa: 3 pontos (Fibonacci)
Entregável
- Metadados do manifesto mantidos com as bases carregadas na subida.
- Registro das fontes montado para cada execução e gravado em
resultados_simulacao.fontes. - Testes do registro, da gravação e do fluxo do consumidor.
Descrição
O worker confere as bases contra o manifesto dos baselines na subida, mas não registra o que usou em cada execução. Esta tarefa grava esse registro no resultado, no formato de contracts/domain/resultado-fontes.schema.json.
Contexto e decisões tomadas
carregar_bases(worker/app/execucao/bases.py) lê o manifesto, confere o sha256 dos arquivos deARQUIVOSe guarda os registros emBasesDoWorker. Os metadados do manifesto são descartados depois da conferência.- O resultado é inserido por
worker/app/repositorio/resultados.pynum únicoINSERT, porque o worker não temUPDATE. - O registro tem as competências do comando
executar-codigo, os cinco arquivos de base com o sha256 do manifesto, o baseline de cada competência com o sha256 e a versão e a data de congelamento do manifesto. - O registro vai nos resultados de
sucesso,assercao_violadaeerro_codigo, que executaram sobre as bases. Fica nulo emerro_infra. - O harness do sandbox confere os baselines contra o manifesto, mas não o sha256 dos arquivos de base. O registro afirma o que o worker conferiu. As duas imagens copiam os dados do mesmo diretório do repositório.
Escopo
Dentro do escopo
bases.py,resultados.py, o ponto do consumidor que monta a gravação e os testes.
Fora do escopo
- O conteúdo dos eventos
executar-codigoesimulacao-concluida. - Conferência de sha256 dentro do sandbox.
- A consulta de duplicidade (
_CONSULTAemresultados.py), que não muda.
Requisitos
- Guardar em
BasesDoWorker, ou num objeto ao lado, a versão e o congelamento do manifesto, o sha256 dos arquivos deARQUIVOSe o arquivo e o sha256 do baseline de cada competência, lidos na mesma conferência da subida. - Montar o registro das fontes de uma execução a partir desses metadados e das competências do comando, na ordem do comando.
- Acrescentar
fontesaoINSERTderesultados.py, comCAST(:fontes AS jsonb), preenchido nos desfechos do contexto e nulo emerro_infra. - Validar nos testes o registro gravado contra
contracts/domain/resultado-fontes.schema.json. - Nenhum log ou label de métrica inclui o registro. Se um log da gravação citar as fontes, cita só a versão do manifesto.
Contexto técnico
- Entradas: o manifesto lido na subida e as competências do comando.
- Saídas:
resultados_simulacao.fontespreenchida. - Componentes afetados:
worker/app/execucao/bases.py,worker/app/repositorio/resultados.pye o consumidor emworker/app/mensageria/consumidor.py. - Restrições: nenhum
UPDATE; o registro não carrega dados das bases; o código gerado continua sem acesso às fontes. - Referências:
worker/AGENTS.md(worker/AGENTS.md), manifesto dos baselines (worker/sandbox/data/domrock/baselines/manifesto.json),worker/Dockerfile(worker/Dockerfile),worker/sandbox/Dockerfile(worker/sandbox/Dockerfile).
Critérios de aceitação
- Uma execução de duas competências grava as fontes com os cinco arquivos, os dois baselines e a versão do manifesto, válidas no schema.
- Um resultado
erro_infraé gravado sem fontes. - A conferência do sha256 na subida continua derrubando o worker quando um arquivo difere do manifesto.
- Um comando repetido continua sem gravar segunda linha.
Definição de concluído (DoD)
verify.shdo worker sem falha, incluindo os testes de integração com o Postgres.- Uma simulação local gravando
fontes, conferida na consulta de auditoria.
Metadata
Metadata
Assignees
Labels
workertarefa que diz respeito ao simulador em sandbox da aplicação, denominado `worker`tarefa que diz respeito ao simulador em sandbox da aplicação, denominado `worker`
Activity