Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion contracts/domain/comum.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
"sugestao_adaptacao",
"explicacao"
],
"description": "Vocabulário das etapas da trilha no grafo atual. extracao_parametros registra a extração dos parâmetros da regra e validacao_dominio registra sua validação de domínio. confirmacao é gravado pela API quando o usuário corrige a regra. geracao_codigo cobre geração, derivação e correção do código. delegacao_worker grava uma linha por código; as execuções candidatas da busca da meta não geram linha. decisao cobre a decisão sobre o resultado e o encerramento da busca da meta maior. sugestao_adaptacao grava uma linha por resultado inviável analisado. interpretacao_resultado e explicacao estão reservados e nenhum nó os produz hoje."
"description": "Vocabulário das etapas da trilha no grafo atual. extracao_parametros registra a extração dos parâmetros da regra e validacao_dominio registra sua validação de domínio. confirmacao é gravado pela API quando o usuário corrige a regra. geracao_codigo cobre geração, derivação e correção do código. delegacao_worker grava uma linha por código; as execuções candidatas da busca da meta não geram linha. decisao cobre a decisão sobre o resultado e o encerramento da busca da meta maior. sugestao_adaptacao grava uma linha por resultado inviável analisado. explicacao roda depois da decisão, somente em simulação com sucesso, e registra o desfecho da geração e da conferência da narrativa. interpretacao_resultado está reservado e nenhum nó o produz hoje."
}
}
}
78 changes: 78 additions & 0 deletions contracts/domain/resultado-fontes.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://synapse.local/contracts/domain/resultado-fontes.schema.json",
"title": "Fontes de dados do resultado da simulação",
"description": "Coluna resultados_simulacao.fontes. Identifica as bases que o worker conferiu contra o manifesto antes de executar. As imagens do worker e do sandbox copiam os dados do mesmo diretório do repositório, worker/sandbox/data/domrock. O registro contém somente referências e identificação das bases, sem seu conteúdo. A linha imutável do resultado o vincula ao código, à versão da regra, à simulação e ao horário da execução.",
"type": "object",
"required": ["manifesto", "competencias", "arquivos", "baselines"],
"properties": {
"manifesto": {
"type": "object",
"description": "Identificação do manifesto dos baselines usado na conferência.",
"required": ["versao", "congelamento"],
"properties": {
"versao": {
"type": "integer",
"minimum": 1,
"description": "Versão registrada no manifesto."
},
"congelamento": {
"type": "string",
"format": "date",
"description": "Data de congelamento registrada no manifesto."
}
}
},
"competencias": {
"type": "array",
"minItems": 1,
"uniqueItems": true,
"items": { "$ref": "comum.schema.json#/$defs/competencia" },
"description": "Competências históricas processadas pela execução."
},
"arquivos": {
"type": "array",
"minItems": 1,
"description": "Arquivos de base conferidos pelo worker contra fontes_sha256 do manifesto.",
"items": {
"type": "object",
"required": ["nome", "sha256"],
"properties": {
"nome": {
"type": "string",
"minLength": 1,
"description": "Nome relativo ao diretório das bases, como registrado em fontes_sha256."
},
"sha256": { "$ref": "#/$defs/sha256" }
}
}
},
"baselines": {
"type": "array",
"minItems": 1,
"description": "Referências dos baselines congelados das competências processadas, com arquivo e sha256 registrados no manifesto.",
"items": {
"type": "object",
"required": ["competencia", "arquivo", "sha256"],
"properties": {
"competencia": { "$ref": "comum.schema.json#/$defs/competencia" },
"arquivo": {
"type": "string",
"minLength": 1,
"description": "Caminho do baseline relativo ao diretório das bases, como registrado no manifesto."
},
"sha256": { "$ref": "#/$defs/sha256" }
}
}
}
},
"$defs": {
"sha256": {
"type": "string",
"minLength": 64,
"maxLength": 64,
"pattern": "^[0-9a-f]{64}$",
"description": "SHA-256 com 64 caracteres hexadecimais minúsculos."
}
}
}
5 changes: 5 additions & 0 deletions contracts/domain/trilha-conclusao.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,11 @@
"minimum": 0,
"description": "Nó decisao, na linha que encerra a busca da meta maior. Quantidade de candidatas simuladas na busca. A presença de desfecho_busca distingue esta linha da decisão sobre o resultado. As execuções candidatas não têm linha própria na trilha e ficam em resultados_simulacao com proposito = 'busca_meta'."
},
"desfecho_explicacao": {
"type": "string",
"enum": ["conferida", "reprovada", "sem_resposta", "provedor_indisponivel"],
"description": "Nó explicacao. conferida significa que o texto foi gravado e seus números correspondem aos valores apurados. reprovada significa que o texto foi gravado para auditoria, mas algum número citado não corresponde ao apurado. sem_resposta significa que o modelo não devolveu texto. provedor_indisponivel significa que a indisponibilidade do provedor impediu obter o texto. Só conferida produz narrativa exibível ao profissional de RH. Nos demais desfechos, a falha de explicação degrada a rastreabilidade sem invalidar o resultado da simulação."
},
"encaminhamento": {
"type": "string",
"description": "Nó decisao: para onde o fluxo seguiu.",
Expand Down
4 changes: 2 additions & 2 deletions contracts/events/no-concluido.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"resultado_id": {
"type": "string",
"format": "uuid",
"description": "Referência ao resultado sobre o qual a etapa agiu. Na decisao, é o resultado decidido. Na sugestao_adaptacao, é o resultado inviável analisado. Na linha decisao que encerra a busca da meta maior, é a candidata vencedora; fica ausente quando a busca termina sem solução. Na geracao_codigo com modo_geracao igual a correcao, é o resultado que falhou. Na geracao_codigo com modo_geracao igual a derivado, é o resultado de sucesso da versão de origem. Nas demais etapas, fica ausente."
"description": "Referência ao resultado sobre o qual a etapa agiu. Na decisao, é o resultado decidido. Na sugestao_adaptacao, é o resultado inviável analisado. Na linha decisao que encerra a busca da meta maior, é a candidata vencedora; fica ausente quando a busca termina sem solução. Na geracao_codigo com modo_geracao igual a correcao, é o resultado que falhou. Na geracao_codigo com modo_geracao igual a derivado, é o resultado de sucesso da versão de origem. Na explicacao, é o resultado explicado, inclusive quando a etapa termina sem texto ou com o texto reprovado. Nas demais etapas, fica ausente."
},
"prompt_id": {
"type": "string",
Expand All @@ -63,7 +63,7 @@
"explicacao_id": {
"type": "string",
"format": "uuid",
"description": "Linha de explicacoes produzida pelo nó de explicação. Ausente nos demais nós, e também quando não houve narrativa utilizável (US05, cenário 2)."
"description": "Linha de explicacoes produzida pelo nó explicacao. Presente sempre que a etapa gravou uma linha, tanto com narrativa conferida quanto reprovada na conferência numérica. Ausente nos demais nós e, na explicacao, quando o modelo não devolveu texto, inclusive por indisponibilidade do provedor. A linha da etapa também traz resultado_id com o resultado explicado."
}
},
"examples": [
Expand Down
44 changes: 44 additions & 0 deletions contracts/examples/domain/resultado-fontes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"manifesto": {
"versao": 2,
"congelamento": "2026-09-17"
},
"competencias": [
"2025-10",
"2025-11"
],
"arquivos": [
{
"nome": "rh.jsonl",
"sha256": "c52c5955e534e95664239e68ced2e1ca8c649fec8c57a96f4f5195cb112046b9"
},
{
"nome": "vendas.jsonl",
"sha256": "1a77fb4fd30315cd2acb63a5b09703f0ba74c358efe1a705f685f4f8617fd39a"
},
{
"nome": "comissoes.jsonl",
"sha256": "602601c76c51fefd1a022c60a29c5c963d1b7996232f5030f454b7e8b10ba3ec"
},
{
"nome": "eventos_rh.jsonl",
"sha256": "ba3fac163ef6fe98c18a74847dda0b9061fb3fbf8c4610c683d2f64e41af595b"
},
{
"nome": "regras_competencia.jsonl",
"sha256": "e8d5a18d0d2d0513e18d318cd0b215804595aa49191e82f73fa63ba9b976631f"
}
],
"baselines": [
{
"competencia": "2025-10",
"arquivo": "baselines/baseline-2025-10.jsonl",
"sha256": "ce040f196eddcbd5cde89e135f3a06a1250267c0ad81d6bbfe18be2d971f7ee6"
},
{
"competencia": "2025-11",
"arquivo": "baselines/baseline-2025-11.jsonl",
"sha256": "f8ca7380bd494a455453f847bdbae70f0be4b80034d6cd0430093a3193f7c848"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"resumo": "narrativa gravada e conferida contra os valores apurados",
"desfecho_explicacao": "conferida"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"resumo": "indisponibilidade do provedor impediu obter a narrativa",
"desfecho_explicacao": "provedor_indisponivel"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"resumo": "narrativa gravada para auditoria e reprovada por citar número não apurado",
"desfecho_explicacao": "reprovada"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"resumo": "modelo não devolveu texto para explicar o resultado",
"desfecho_explicacao": "sem_resposta"
}
14 changes: 14 additions & 0 deletions contracts/examples/events/no-concluido-explicacao-conferida.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"evento_id": "4d8e2cbf-da15-5058-8845-8a91b0fdd557",
"job_id": "3f2b1c40-0d18-4a51-9f2e-6c1d9a77b021",
"no": "explicacao",
"concluido_em": "2025-11-24T15:30:01Z",
"conclusao": {
"resumo": "narrativa gravada e conferida contra os valores apurados",
"desfecho_explicacao": "conferida"
},
"regra_id": "9c7d3e21-4a6b-4c8d-9e0f-1a2b3c4d5e6f",
"resultado_id": "d18f2a47-7db3-4edc-a6b3-4d8900d59a21",
"prompt_id": "1a2b3c4d-5e6f-4071-8293-a4b5c6d7e8f9",
"explicacao_id": "eaa58f82-b012-5023-9ca5-4e28ec727714"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"evento_id": "b7554168-bf45-5023-8aaa-38e199682151",
"job_id": "3f2b1c40-0d18-4a51-9f2e-6c1d9a77b021",
"no": "explicacao",
"concluido_em": "2025-11-24T15:30:04Z",
"conclusao": {
"resumo": "indisponibilidade do provedor impediu obter a narrativa",
"desfecho_explicacao": "provedor_indisponivel"
},
"regra_id": "9c7d3e21-4a6b-4c8d-9e0f-1a2b3c4d5e6f",
"resultado_id": "d18f2a47-7db3-4edc-a6b3-4d8900d59a21",
"prompt_id": "1a2b3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
}
14 changes: 14 additions & 0 deletions contracts/examples/events/no-concluido-explicacao-reprovada.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"evento_id": "1108d50f-ff2d-58dd-b427-c38adbdc137c",
"job_id": "3f2b1c40-0d18-4a51-9f2e-6c1d9a77b021",
"no": "explicacao",
"concluido_em": "2025-11-24T15:30:02Z",
"conclusao": {
"resumo": "narrativa gravada para auditoria e reprovada por citar número não apurado",
"desfecho_explicacao": "reprovada"
},
"regra_id": "9c7d3e21-4a6b-4c8d-9e0f-1a2b3c4d5e6f",
"resultado_id": "d18f2a47-7db3-4edc-a6b3-4d8900d59a21",
"prompt_id": "1a2b3c4d-5e6f-4071-8293-a4b5c6d7e8f9",
"explicacao_id": "bfec331a-9f2b-5143-81f4-702e7556d27c"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"evento_id": "01f35e9f-f672-56d3-bcc5-4c67f5d0a470",
"job_id": "3f2b1c40-0d18-4a51-9f2e-6c1d9a77b021",
"no": "explicacao",
"concluido_em": "2025-11-24T15:30:03Z",
"conclusao": {
"resumo": "modelo não devolveu texto para explicar o resultado",
"desfecho_explicacao": "sem_resposta"
},
"regra_id": "9c7d3e21-4a6b-4c8d-9e0f-1a2b3c4d5e6f",
"resultado_id": "d18f2a47-7db3-4edc-a6b3-4d8900d59a21",
"prompt_id": "1a2b3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
}
11 changes: 10 additions & 1 deletion contracts/examples/manifesto.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,15 @@
"events/meta-venda-sugerida.json": "events/meta-venda-sugerida.schema.json",
"events/meta-venda-sugerida-sem-solucao.json": "events/meta-venda-sugerida.schema.json",
"events/sugestao-adaptacao-proposta-tentativa.json": "events/sugestao-adaptacao-proposta.schema.json",
"events/etapa-alterada-sem-alternativa.json": "events/etapa-alterada.schema.json"
"events/etapa-alterada-sem-alternativa.json": "events/etapa-alterada.schema.json",
"domain/resultado-fontes.json": "domain/resultado-fontes.schema.json",
"domain/trilha-conclusao-explicacao-conferida.json": "domain/trilha-conclusao.schema.json",
"events/no-concluido-explicacao-conferida.json": "events/no-concluido.schema.json",
"domain/trilha-conclusao-explicacao-reprovada.json": "domain/trilha-conclusao.schema.json",
"events/no-concluido-explicacao-reprovada.json": "events/no-concluido.schema.json",
"domain/trilha-conclusao-explicacao-sem-resposta.json": "domain/trilha-conclusao.schema.json",
"events/no-concluido-explicacao-sem-resposta.json": "events/no-concluido.schema.json",
"domain/trilha-conclusao-explicacao-provedor-indisponivel.json": "domain/trilha-conclusao.schema.json",
"events/no-concluido-explicacao-provedor-indisponivel.json": "events/no-concluido.schema.json"
}
}
Loading
Loading