Requisitos · Plataforma

Mensageria — requisitos para a plataforma

O que o Nexio exige de evento, entrega de mensagem e execução fora de requisição — e como provar que foi atendido. Esta página registra o problema, não a solução: mecanismo e transporte são do estudo do time do Gryd.IO. Cada requisito tem a razão ao lado, critério de aceite testável e a evidência de código que o motivou.

9 requisitos · 27 critérios de aceite · 14 evidências código do Gryd.IO conferido no commit e4eb5a4f solução: estudo da plataforma v1.6 · 12/09/2026

Ponto de partida

O problema

Um ato de negócio do Nexio — aprovar uma requisição, aplicar a troca de conta bancária de um fornecedor, revogar um papel — produz duas coisas de natureza diferente. A primeira é o efeito de que o ato depende: o empenho no orçamento, a versão do token. A segunda é tudo o que acontece por causa dele: o aviso ao requisitante, o pacote ao ERP, a métrica. As duas não podem ter a mesma garantia, e hoje o framework não separa uma da outra.

O efeito que precisa ser atômico com o ato acontece na mesma transação — pelo próprio caso de uso, por chamada síncrona declarada entre contextos (.Contracts) ou pelo contrato de desfecho do motor; o evento de domínio é publicado depois do commit e serve para notificar, medir e integrar — nunca para produzir efeito de que o ato dependa.

Sem isso · aviso de algo que não aconteceu

Publicado dentro da transação, o aviso sai antes de o banco confirmar: o aprovador recebe “aprovado” de uma decisão que reverteu. E o consumidor lento segura a trava no ponto mais disputado do sistema, a raiz da aprovação.

Sem isso · mensagem que some ou sai em dobro

Com API e Worker em processos separados e mais de uma réplica, o que está só em memória some no reinício e sai uma vez por réplica. Um pedido aprovado que nunca chega ao ERP não dá erro nenhum — quem descobre é o fornecedor.

Sem isso · leitura de todos os tenants

Fora de uma requisição HTTP não há tenant resolvido, e sem tenant o filtro global hoje libera todas as linhas (E-03). Todo consumidor e todo job rodam exatamente nessa condição.

Sem isso · pedido em dobro, acesso que sobra

Entrega “pelo menos uma vez” sem idempotência no destino cria segundo pedido e segundo pagamento no ERP. E invalidar token como reação pós-commit deixa quem perdeu o papel com acesso sempre que a reação falhar.

O prazo não é “quando houver volume”: o Worker da Arquitetura sobe no primeiro job, e a Requisition é o primeiro agregado que grava empenho na aprovação e publica evento. O que cada requisito bloqueia está em O que cada um bloqueia.

Fronteira

O que a spec diz e o que o estudo decide

A spec do Nexio diz o que precisa ser verdade e como provar. A escolha de mecanismo e transporte é do estudo da plataforma; nenhuma tecnologia citada nesta página é decisão.

Quem decide o quê
AssuntoDecide a spec do NexioDecide o estudo da plataforma
Efeito atômicoQuais efeitos são atômicos com o ato, e por qual dos três caminhos — nas páginas donas (ex.: RN-AP-38 do Fluxo de Aprovação)—
EventoQuais eventos existem, o nome (<entidade>.<verbo-no-passado>) e quem consomeComo o evento é coletado, registrado com o commit e publicado depois dele
EntregaNada se perde; duplicata é prevista; consumidor idempotente (A1.2)Armazenamento, transporte, política de nova tentativa, destino da mensagem morta
OrdemOnde a ordem muda o resultado e qual é a chave (A1.4)Como a ordem se sustenta com várias instâncias
Contexto de execuçãoTenant restaurado, leitura sem tenant falha fechada, usuário só como dado (A1.3)Onde o tenant viaja e como é restaurado
Integração externaEstado “aguardando”, chave natural e ExternalRef (A1.5, A1.6)O adaptador genérico e a conciliação de desfecho incerto
OperaçãoO teto de custo operacional (A1.9)As peças, a observabilidade e a consulta operacional

Fora do requisito, de propósito: entrega exatamente uma vez; ordem global; publicação em leque antes de existir o segundo consumidor do mesmo evento; reconstrução de estado a partir do histórico; job executando comando em nome de usuário — a execução delegada é requisito da v2, na demanda de plataforma.

Requisitos

Os nove requisitos

Cada requisito tem ao menos um critério de aceite na seção seguinte. Requisito sem critério testável não entra nesta página.

A1.1

Efeito atômico na transação; evento só depois do commit

A frase canônica acima vale sem exceção de mecanismo. Todo evento de domínio é publicado depois do commit da unidade de trabalho que o produziu. Rollback não publica nada. Falha de consumidor não desfaz o ato nem volta ao chamador como erro. Nenhum consumidor produz efeito de que o ato dependa — a única exceção declarada é a A1.7.

Por quê: publicar antes do commit avisa decisão que reverteu e alonga a trava da aprovação · Aceite: CA-01 a CA-04 · Evidência: E-01

A1.2

Publicação garantida: nada se perde, duplicata é prevista

O evento é registrado atomicamente com o commit do ato — os dois existem, ou nenhum. A entrega é pelo menos uma vez, e todo consumidor é idempotente por um identificador estável da mensagem. Nova tentativa transitória não perde evento: se a gravação é repetida pela estratégia de execução, os eventos coletados na primeira tentativa continuam lá. Queda do processo entre o commit e a entrega não perde a mensagem. Vale igual para aviso imediato e aviso agendado: reinício não apaga, réplica não duplica.

Por quê: com dois processos e réplicas, o que está só em memória some no reinício e sai n vezes · Aceite: CA-05 a CA-09 · Evidência: E-02, E-05, E-06

A1.3

Tenant e identidade restaurados; sem tenant, falha fechada

Todo consumidor e todo job executam com o tenant capturado no registro da mensagem ou no enfileiramento, e restaurado na execução. Leitura de dado de tenant sem tenant em vigor não devolve nada ou falha — nunca devolve os dados de todos os tenants —, e esse é o comportamento padrão de todo host, não uma opção a ligar. Varredura que precisa enxergar todos os tenants desliga o filtro explicitamente e processa cada item com o tenant dele. O usuário que causou o fato viaja como dado, para a trilha; nunca como identidade autenticada. Nenhum job executa comando em nome de usuário na v1.

Por quê: o filtro de tenant é a última defesa entre clientes, e hoje libera tudo quando falta contexto · Aceite: CA-10 a CA-13 · Evidência: E-03, E-04, E-07, E-14

A1.4

Ordem só onde muda o resultado

Ordem é garantida somente dentro de uma chave declarada, e só para os tipos de mensagem que a declaram. Na v1 o único caso é o pacote de integração com o ERP, com chave no documento de origem. Dentro da chave, mensagem que falhou e aguarda nova tentativa, ou que esgotou as tentativas, não é ultrapassada por outra da mesma chave: a chave para, com alerta, até a da frente sair ou ser tratada por pessoa. Entre chaves não há ordem, e uma chave parada não segura as outras. Caso novo de ordem entra com a chave declarada na página dona.

Por quê: um cancelamento que chega ao ERP antes da criação deixa o pedido vivo lá; ordem global serializaria o sistema para resolver um caso · Aceite: CA-14 a CA-16 · Evidência: E-08

A1.5

Mensagem que não pode sair fica visível como “aguardando”

Condição de negócio que impede a saída não descarta a mensagem nem deixa de produzi-la. O caso de uso escolhe o dado utilizável — na carência de conta bancária, a conta anterior, que continua vigente e pagável durante a janela (ver Fornecedor) — e só quando não há dado utilizável a mensagem fica aguardando, com motivo e condição de liberação, e sai sozinha quando a condição se resolve. Mensagem que esgotou as tentativas fica visível e parada, com alerta; reprocessar ou descartar é ato de pessoa, com permissão própria, motivo obrigatório no descarte e registro de quem fez. Expurgo só alcança mensagem entregue. O mesmo vale para a repetição, depois do commit, de ato de pessoa — a guarda legal e a eliminação do Anexo repetidas no arquivo, com o autor do ato viajando como dado e gravado no destino marcado como declarado, com o executor de serviço, nunca como usuário autenticado nem como o job: recusa transitória do destino, como a trilha durável indisponível, deixa a repetição aguardando com o motivo, nunca descartada e nunca dada por concluída sem o efeito. Recusa definitiva do destino não pode chegar depois de o ato irreversível ter sido gravado e publicado: o consumidor pergunta ao destino, antes de gravar, a mesma pré-condição que o destino conferirá — consulta sem efeito, com a mesma resposta — e recusa o ato na hora. Mas conferir antes não basta: consulta que não reserva precisa de trava comum com o efeito que ela prevê — a conferência e o efeito disputam o mesmo registro —, senão o consumidor publica sobre um retrato já vencido; o que muda entre a consulta e a repetição fica visível como bloqueado, com código estável que o consumidor grava e mostra, nunca como concluído.

Por quê: pedido aprovado que nunca chega ao ERP, sem erro e sem estado, é descoberto pelo fornecedor que não recebeu · Aceite: CA-17 a CA-19 · Evidência: E-09

A1.6

Idempotência no destino externo

Todo efeito em sistema externo carrega a chave natural do documento do Nexio e grava o ExternalRef devolvido. Reentrega não cria segundo pedido nem segundo pagamento: o adaptador usa a chave de idempotência do destino quando ele oferece, e consulta pela chave natural antes de criar quando não oferece. Efeito externo de desfecho incerto — o processo caiu durante o envio — não é reenviado às cegas: vai para conciliação pela chave natural.

Por quê: “pelo menos uma vez” até o ERP, sem isso, é risco de pedido e pagamento em dobro · Aceite: CA-20, CA-21 · Evidência: E-10

A1.7

Invalidação de token na transação da revogação

Revogar papel ou permissão de um usuário incrementa a versão do token (TokenVersion) na mesma transação da revogação — é a exceção declarada à regra de que reação vem depois do commit. Propagar a revogação para cache ou lista de bloqueio pode ser posterior; a fonte da verdade, não. Depois do commit, o token antigo é recusado mesmo que nenhum consumidor tenha rodado.

Por quê: controle de acesso não se aproxima — se a invalidação for reação e a reação falhar, quem perdeu o acesso continua com ele · Aceite: CA-22 a CA-24 · Evidência: E-11

A1.8

A escada de escala continua de pé

A solução não pode eliminar o degrau 4 da escada de escala — instância por contexto: um contexto do mesmo tenant em instância de banco própria. Todo banco onde uma mensagem pode ser registrada tem entrega; nenhum fica sem quem o drene. Se a solução exigir uma conexão só por tenant, o estudo registra essa decisão na Arquitetura antes da adoção, revogando o degrau 4 de forma explícita — nunca por efeito colateral.

Por quê: o degrau 4 é a saída de escala mais barata que a fronteira do ADR 1 comprou, e a mudança atinge todos os produtos do Gryd.IO · Aceite: CA-25 · Evidência: E-12

A1.9

Proporcional a um time de uma a três pessoas

Restrição do estudo. Nenhuma peça nova para o time operar além dos serviços gerenciados do ADR 7 — ou, havendo, o custo em horas por mês declarado. Uma consulta só responde “o que está aguardando, em falha e parado”, por tenant e por tipo, com a idade da mais antiga como sinal de saúde. Os critérios de aceite desta página rodam automatizados contra o banco real na suíte da plataforma.

Por quê: duas respostas para “o que está preso” é um operador cruzando dois sistemas por cliente, com centenas de clientes · Aceite: CA-26, CA-27 · Evidência: E-13

Como provar

Critérios de aceite

Cada linha é um teste automatizado. Verde sem prova de que a guarda rodou não conta: todo teste de tenant, permissão e ordem afirma também que o mecanismo executou — contador ou asserção dentro do consumidor. O spike da plataforma registrou uma suíte verde com a guarda de permissão executando zero vezes (E-07).

27 critérios, por requisito
IDCenárioResultado esperadoReq.
CA-01Ato que coleta evento e sofre rollbackNenhum consumidor recebe; nenhuma mensagem fica registradaA1.1
CA-02Consumidor lê o agregado ao receber o eventoLê a versão confirmada; nunca estado anterior ao commitA1.1
CA-03Consumidor lança exceçãoO ato continua gravado; o chamador recebe sucesso; a falha fica registrada e medidaA1.1
CA-04Teste de arquitetura sobre plataforma e produtoNenhum caminho publica evento antes do commit; um caminho novo assim quebra o buildA1.1
CA-05Processo morto entre o commit e a entregaDepois do reinício, a mensagem é entregueA1.2
CA-06Falha transitória na gravação, repetida pela estratégia de execuçãoTodo evento coletado é entregue; nenhum some na segunda tentativaA1.2
CA-07A mesma mensagem entregue duas vezes ao mesmo consumidorEfeito uma vez sóA1.2
CA-08Aviso agendado com duas réplicas do WorkerUm envioA1.2
CA-09Reinício com avisos imediatos e agendados pendentesTodos saem depois do reinício; nenhum agendado sai antes do horárioA1.2
CA-10Consumidor ou job sem tenant lê entidade de tenant, com dois tenants populadosZero linhas ou erro; nunca linha de outro tenantA1.3
CA-11Mensagens dos tenants A e B processadas em sequência no mesmo processoCada execução enxerga só o próprio tenant; nada do contexto da anterior sobraA1.3
CA-12Configuração padrão de cada host (API, Worker, Portal), sem ajuste, lida numa requisição, dentro de um job e dentro de um consumidorLeitura sem tenant falha fechada nos três fluxos — o resultado não depende do fluxo em que o host arrancouA1.3
CA-13Consumidor tenta executar ato que exige permissão usando o usuário causador da mensagemRecusado: o usuário é dado da trilha, não identidadeA1.3
CA-14M1 e M2 da mesma chave; M1 falha e aguarda nova tentativa; quatro instânciasM2 não é entregue antes de M1A1.4
CA-15M1 esgota as tentativasA chave para com alerta; M2 continua sem entregaA1.4
CA-16Chave K1 parada; chegam mensagens da chave K2K2 é entregue normalmenteA1.4
CA-17Pedido aprovado de fornecedor com conta nova em carência e conta anterior vigenteO pacote sai com a conta anteriorA1.5
CA-18Fornecedor sem nenhuma conta utilizávelMensagem aguardando, visível com motivo; sai sem ação manual quando a conta fica utilizável; nunca descartadaA1.5
CA-19Reprocessar ou descartar mensagem paradaSó por pessoa com a permissão; descarte sem motivo é recusado; o ato fica registrado com o autorA1.5
CA-20O mesmo pacote entregue duas vezes a um simulador de ERPUm documento no ERP; ExternalRef gravado uma vezA1.6
CA-21Processo cai depois de o ERP aceitar e antes de registrar a entregaA retomada não cria segundo documento: concilia pela chave naturalA1.6
CA-22Revogar papel e usar o token antigo logo após o commitRecusado com 401A1.7
CA-23O mesmo cenário, com o consumidor pós-commit forçado a falharO token antigo continua recusadoA1.7
CA-24Revogação que sofre rollbackTokenVersion inalterada; o token continua válidoA1.7
CA-25Mesmo tenant com dois contextos em duas instâncias de banco; uma mensagem registrada em cadaAs duas são entreguesA1.8
CA-26Consulta operacional únicaLista aguardando, em falha e parado, por tenant e tipo, com a idade da mais antigaA1.9
CA-27Relatório do estudoDeclara as peças novas a operar e as horas por mês, e anexa a execução de CA-01 a CA-26 contra banco realA1.9

Evidência

O que o código mostra

Conferido no Gryd.IO, branch feature/grydfiles-scanner-obrigatorio, commit e4eb5a4f (11/09/2026). Comparado com 25775a68 e d6c5e9fa, que ficaram fora do histórico desse commit, mudaram em src/ só FileScannerRequirement.cs, GrydFilesBuilder.cs e GrydFilesServiceCollectionExtensions.cs, do GrydFiles; fora do GrydFiles, nada desde 2bc811df — e colhido dos dois estudos anteriores da plataforma — o de eventos e outbox e o spike de biblioteca de mensageria —, cujo diagnóstico passa a viver aqui. As linhas descrevem o estado do código, não uma escolha.

14 evidências
IDOndeO que mostraReq.
E-01GrydAuthDbContext.cs:200, 232, 247O único contexto do framework que despacha evento abre a transação, publica entre gravar e confirmar, e regrava o que os consumidores mudaram, até dez rodadas. Evento dentro da transação, e efeito por reação.A1.1
E-02GrydAuthDbContext.cs:433Se a publicação falha, os eventos voltam ao agregado para a nova tentativa ser segura. A coleta proposta no estudo de eventos limpava o agregado e descartava a fila em falha — perderia evento no retry.A1.2
E-03TenantQueryFilterExtensions.cs:136–142 · MultiTenancyOptions.cs:91Sem tenant e sem escopo, o predicado vale !RequireTenantOnRead, e a opção nasce false: todas as linhas de todos os tenants. No fluxo HTTP normal o ramo não é alcançado; em consumidor e job, é. É o achado de prioridade zero do estudo de eventos.A1.3
E-04JobExecutionAdapters.cs:40, 43–51 · JobExecutionContext.cs:18A execução de job resolve o escritor de contexto de tenant e não o usa; o contexto de execução tem TenantId, mas o adaptador o monta sem preenchê-lo; não há implementação de IJobFilter.A1.3
E-05GrydNotifications.Infrastructure/ServiceCollectionExtensions.cs:132–148 · GrydNotificationsOptions.cs:30Com DurableDelivery — desligado por padrão —, fila e agendamento de aviso gravam a intenção de entrega com a notificação, e o laço de entrega só roda onde RunBackgroundServices está ligado. Sem a opção, continuam em memória.A1.2
E-06GrydNotifications.Scheduling/ServiceCollectionExtensions.cs:31–32 · GrydJobs.Infrastructure/ServiceCollectionExtensions.cs:58Já existe também o agendador de aviso sobre GrydJobs, com armazenamento persistente.A1.2
E-07DurableNotificationProcessor.cs:50–56 · spike, “O que aconteceu com a tenancy”Um consumidor já restaura o tenant da mensagem e liga a leitura exigindo tenant — o padrão existe, num lugar só. O spike mediu que escrita de contexto ambiente feita em passo assíncrono se perde em silêncio, e registrou uma suíte verde com a guarda de permissão executando zero vezes.A1.3
E-08estudo de eventos, “Entrega, ordem e idempotência” · PostgresOutbox.cs:29A reclamação proposta no estudo só pulava chave com mensagem morta: mensagem em falha, esperando nova tentativa, era ultrapassada. A primitiva do Core no commit conferido bloqueia a chave enquanto houver mensagem anterior não concluída.A1.4
E-09estudo de eventos, “Como um produto usa”, item 6A carência bancária foi escrita como “conta em carência não gera linha, e sem linha não há pacote”: pedido aprovado que nunca chega ao ERP, sem estado. O Fornecedor diz que a conta anterior continua vigente e pagável durante a janela.A1.5
E-10estudo de eventos, “Entrega, ordem e idempotência” · PostgresOutbox.cs:42, 66O estudo deixava a idempotência ao consumidor (“o defeito será dele”). A primitiva do Core já marca efeito externo de desfecho incerto como ReconciliationRequired em vez de reenviar.A1.6
E-11AuthorizationAffectingEventHandler.cs:43 · GrydAuthTokenProcessor.cs:241A versão do token é incrementada por um consumidor do evento de mudança de autorização e conferida a cada requisição. Hoje é atômica só porque o evento é publicado dentro da transação (E-01): mover a publicação para depois do commit sem mover este incremento é regressão de segurança.A1.7
E-12MultiTenancyDatabaseOptions.cs:12 · spike, critério 6O modo por módulo (Hybrid) continua no código. O spike montou um tenant com dois módulos em bancos diferentes, e o segundo banco ficou sem nenhuma tabela de entrega — mensagem gravada ali nunca sairia. O estudo de eventos propunha “um tenant, uma conexão”, que elimina o degrau 4.A1.8
E-13estudo de eventos, “Ciclo de vida da mensagem” · Arquitetura, ADR 7O próprio estudo recusava duas tabelas respondendo “o que está preso”; a pilha que ele propunha somava banco, agendador de jobs, biblioteca de mensageria, cache e fila gerenciada para um time de três.A1.9
E-14MultiTenancyServiceCollectionExtensions.cs:48 · TenantDataFilterAccessor.cs:28 · ITenantDataFilter.cs:31 · FileScanJob.cs:107, :122 · ScheduledReportJob.cs:90–91, 107–119A exigência de tenant na leitura é estado por fluxo de execução, gravado no fluxo do arranque: job ou consumidor que roda em outro fluxo pode encontrá-la desligada, e o teste de fumaça feito numa requisição não prova nada dentro de um job. O desligamento do filtro está disponível a qualquer código, e a varredura de arquivo o desliga na execução inteira e lê com a consulta que ignora os filtros. O envio agendado de relatório mostra o padrão que A1.3 pede: desliga o filtro só para ler o agendamento, que é quem nomeia o tenant, e executa com o tenant dele.A1.3

Caminhos relativos a src/ do Gryd.IO. Afirmação nova sobre o framework entra nesta tabela com o commit em que foi conferida.

Sequência

O que cada requisito bloqueia

Nenhum requisito é “para quando houver escala”. Cada um tem um marco concreto do produto que não acontece sem ele. O mesmo quadro abre a demanda de plataforma de 11/09/2026 (item P1).

RequisitoBloqueiaAté a plataforma entregar
A1.1 · A1.7A Requisition — primeiro agregado que grava empenho na aprovação e publica evento. Os dois entram na mesma entrega: publicar depois do commit sem mover o incremento da versão do token abre acesso.Nada substitui: sem A1.1, a Requisition não começa.
A1.2A primeira entrada em produção — que já nasce com a API em mais de uma réplica, o Worker em processo à parte e aviso de aprovação; é nela que entram também a entrega do veredito do GrydFiles ao Anexo e o aviso de troca de conta bancária. Não bloqueia o desenvolvimento da Requisição.Nenhum paliativo no Nexio. O framework já tem peças candidatas (E-05, E-06); se servem, quem prova é o estudo.
A1.3O primeiro job ou consumidor do Nexio — virada de exercício do Orçamento, agendamento do motor de aprovação, jobs de guarda e de órfãos do Anexo, consumidor do estado do dono do Anexo —, e só com o regime ao lado em pé. O regime é do Nexio e não espera a plataforma, então não segura o desenvolvimento da Requisição. A entrega da plataforma é exigida onde o regime não alcança — job ou consumidor de módulo do framework que desliga o filtro, como a varredura e a entrega do veredito do GrydFiles —, antes da primeira Requisição com anexo.Todo job do Nexio carrega tenantId (e onBehalfOfUserId, como dado, quando houver) no payload, abre o escopo explicitamente e liga de novo a exigência de tenant na leitura, que vale por fluxo e não por host (E-14). Teste de fumaça — consulta sem tenant, com dois tenants populados, devolve zero linhas — numa requisição na API e no Portal e, no Worker, dentro de um job e dentro de um consumidor. Nenhum código do Nexio fora do Migrator desliga o filtro (tabela de hosts e asserções da Arquitetura).
A1.4 · A1.5 · A1.6A primeira integração de saída (ERP).Não há integração antes disso; ela espera o primeiro cliente que a exija.
A1.8A adoção de qualquer mecanismo.—
A1.9A aceitação do estudo.—

Saída

O que o estudo devolve

1 · A escolha, com o porquê

Mecanismo e transporte escolhidos, registrados pela plataforma. A Arquitetura passa a citá-los como constatação nos ADRs 4 e 6 — sem virar requisito do Nexio.

2 · A prova

CA-01 a CA-26 automatizados e verdes contra banco real, cada teste de guarda com o contador de que a guarda rodou.

3 · O custo de operar

As peças novas e as horas por mês de um time de três (CA-27). Peça sem esse número não entra.

4 · O degrau 4

Confirmação de que a escada de escala continua de pé (CA-25) — ou a decisão de revogá-la, registrada na Arquitetura antes da adoção.

Revisões

Histórico de revisões

VersãoDataO que mudou
v1.612/09/2026Correção da validação R6. Menor de redação: o bloqueio da entrega do veredito fala da Requisição em prosa, como o resto da página — nenhum requisito, critério de aceite ou evidência mudou nesta rodada.
v1.512/09/2026Correção da validação R5. Lição da eliminação a pedido do titular incorporada ao acervo de mensageria pela demanda de plataforma: consulta de pré-condição sem reserva precisa de trava comum com o efeito que ela prevê, ou o consumidor publica sobre um retrato vencido. Prosa: a Requisição em português onde não é o nome do agregado.
v1.411/09/2026Correção da validação R4. E-14: o envio agendado de relatório desliga o filtro só para ler o agendamento e executa com o tenant dele — é o padrão da A1.3, não exceção; a varredura de arquivo também lê com a consulta que ignora os filtros. A1.5: a repetição pós-commit grava o autor marcado como declarado, e o consumidor confere a pré-condição do destino antes de gravar ato irreversível. Evidências reconferidas no commit e4eb5a4f.
v1.311/09/2026Correção da validação R3. Quando a A1.3 bloqueia — uma resposta só, a mesma da Arquitetura e da demanda de plataforma: o primeiro job ou consumidor do Nexio, com o regime provisório em pé, sem segurar a Requisition; a entrega da plataforma é exigida onde o regime não alcança, antes da primeira Requisição com anexo. O regime ganha a exigência de tenant religada por fluxo, o teste de fumaça dentro de job e de consumidor e a proibição de desligar o filtro fora do Migrator; E-14 nova e CA-12 lido nos três fluxos. A1.5 cobre a repetição pós-commit de ato de pessoa com o autor como dado. Evidências reconferidas no commit d6c5e9fa.
v1.211/09/2026Correção da validação R2. A publicação garantida (A1.2) bloqueia a primeira entrada em produção, não o desenvolvimento da Requisition — mesma resposta da Arquitetura e da demanda de plataforma. O regime até a plataforma entregar ganha o teste de fumaça de leitura sem tenant por host. Evidências reconferidas no commit 25775a68.
v1.111/09/2026Evidências reconferidas no commit 2bc811df: o contexto de execução de job tem o campo de tenant e não o recebe (E-04). Quadro do que cada requisito bloqueia com os consumidores já declarados e sem antecipar o resultado do estudo.
v1.010/09/2026Criação. Reúne o problema, os requisitos e as evidências que estavam na Arquitetura (ADRs 4 e 6) e nos dois estudos da plataforma, sem escolher tecnologia (Ata de 10/09/2026, A1).