PRD-020 — Agentic Event Fabric & Reactive Architecture
1. Objetivo
Criar uma camada de eventos transversal para o Agentic Work, permitindo que mudanças relevantes no sistema possam disparar automaticamente:
- workflows;
- capabilities;
- notificações;
- reavaliações;
- tarefas;
- aprovações;
- análises;
- ações agentic controladas.
O objetivo é transformar o Agentic Work de um sistema predominantemente request-driven em uma arquitetura request-driven + event-driven.
2. Motivação
Hoje:
Usuário
↓
Comando
↓
Agente
↓
Ação
Com o Event Fabric:
Usuário ────────────────┐
▼
Agentic
│
▼
Event Fabric
▲
│
Sistema ───────────────┘
O sistema poderá reagir a acontecimentos sem que o usuário precise iniciar uma conversa.
3. Exemplos SST
Treinamento vencido
TrainingExpired
↓
Find affected employees
↓
Find active permits
↓
Evaluate policy
↓
Create review workflow
Permissão aprovada
WorkPermitApproved
↓
Continue workflow
↓
Release permit
Mudança de risco
RiskChanged
↓
Find affected permits
↓
Reevaluate controls
↓
Create review task
Documento anexado
DocumentUploaded
↓
Validate document
↓
Continue workflow
4. Princípio Fundamental
Eventos são fatos, não comandos.
Evento:
WorkPermitApproved
não significa:
executeRelease()
Ele significa:
“Uma permissão foi aprovada.”
A decisão sobre o que fazer com esse fato pertence ao:
Policy
Workflow
Capability
5. Arquitetura
BUSINESS SYSTEMS
│
▼
Event Producers
│
▼
┌──────────────┐
│ Event Fabric │
└──────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Workflow Policy Analytics
Engine Engine Engine
│ │
└────┬────┘
▼
Agentic Runtime
│
┌───────┴────────┐
▼ ▼
Capability Human
Execution Approval
6. Event Envelope
Todo evento deverá possuir um envelope padronizado.
interface AgentEvent<T = unknown> {
eventId: string;
eventType: string;
eventVersion: string;
occurredAt: string;
tenantId: string;
source: EventSource;
actor?: Principal;
entity?: EntityReference;
correlationId?: string;
causationId?: string;
payload: T;
metadata?: Record<string, unknown>;
}
7. Event Identity
Cada evento deverá possuir:
eventId
globalmente único.
Isso permitirá:
- deduplicação;
- idempotência;
- auditoria;
- replay.
8. Event Version
Eventos deverão ser versionados:
WorkPermitApproved.v1
WorkPermitApproved.v2
Mudanças incompatíveis deverão gerar nova versão.
9. Tenant Boundary
Todo evento deverá possuir:
tenantId
exceto eventos explicitamente classificados como:
GLOBAL
Mesmo eventos globais deverão ser filtrados antes de produzir ações tenant-scoped.
10. Event Scope
Classificação:
GLOBAL
TENANT
USER
RESOURCE
WORKFLOW
Exemplo:
PlatformMaintenance
→ GLOBAL
WorkPermitApproved
→ TENANT
UserPreferenceChanged
→ USER
11. Event Producers
Eventos poderão ser produzidos por:
Business API
Workflow Engine
Approval Engine
UI
Capability Runtime
External Integration
Scheduled Job
System
12. Business Events
Priorizar eventos semânticos.
Evitar:
POST /api/workpermit/123
como evento.
Preferir:
WorkPermitCreated
WorkPermitSubmitted
WorkPermitApproved
WorkPermitReleased
WorkPermitCancelled
WorkPermitCompleted
13. Domain Event Registry
Criar um registro formal:
interface EventDefinition {
eventType: string;
version: string;
domain: string;
description: string;
scope: "GLOBAL" | "TENANT" | "USER" | "RESOURCE";
schema: JSONSchema;
source: string;
sensitivity: DataSensitivity;
replayable: boolean;
}
14. Event Schema
Cada evento deverá possuir JSON Schema.
Exemplo:
WorkPermitApproved.v1
deverá definir exatamente:
permitId
approvedBy
approvedAt
tenantId
e seus tipos.
15. Event Catalog
O Agentic Manifest deverá eventualmente incluir:
events
Além de:
capabilities
policies
knowledge
ui
16. Event Routing
O Event Fabric deverá encaminhar eventos somente para consumidores interessados.
WorkPermitApproved
│
├── Workflow Engine
├── Notification
├── Audit
└── Analytics
17. Subscription
Um consumidor poderá declarar:
interface EventSubscription {
subscriptionId: string;
eventTypes: string[];
tenantScope: TenantScope;
filter?: EventFilter;
handler: string;
enabled: boolean;
}
18. Event Filter
Exemplo:
eventType = WorkPermitApproved
AND
permit.status = APPROVED
Filtros deverão ser determinísticos sempre que possível.
19. Agentic Trigger
O workflow poderá declarar:
trigger:
type: EVENT
eventType: WorkPermitApproved.v1
20. Event → Workflow
Fluxo:
Event
↓
Subscription
↓
Policy
↓
Workflow Instance
O evento não deverá executar diretamente código arbitrário.
21. Event → Capability
Em casos específicos:
Event
↓
Policy
↓
Capability
Mas o padrão preferencial deverá ser:
Event
↓
Workflow
↓
Capability
porque o workflow oferece:
- estado;
- retry;
- audit;
- compensação;
- espera;
- aprovação.
22. Reactive Agent
O agente poderá ser acionado por evento.
Exemplo:
TrainingExpired
↓
Policy
↓
Agentic Workflow
↓
Analyze impacted permits
O agente não deverá simplesmente receber:
“Faça alguma coisa.”
Ele receberá um evento estruturado.
23. Event Context
O runtime deverá criar:
interface EventExecutionContext {
event: AgentEvent;
tenantContext: TenantContext;
securityPrincipal?: Principal;
workflowContext?: WorkflowContext;
knowledgeVersion: string;
releaseId: string;
}
24. System Actor
Eventos automáticos podem não ter usuário humano.
Nesse caso:
actor.type = SYSTEM
ou:
actor.type = AGENT
dependendo da origem.
25. Human Attribution
Mesmo uma ação automática deverá registrar:
triggerEvent
workflow
policy
capability
system/agent identity
Isso permite responder:
Por que o agente fez isso?
26. Causation
Eventos deverão manter:
causationId
Exemplo:
WorkPermitApproved
↓
causes
↓
WorkPermitReleased
Assim é possível reconstruir causalidade.
27. Correlation
Eventos relacionados ao mesmo processo terão:
correlationId
Exemplo:
workflow-982
Todos os eventos daquele workflow podem compartilhar a correlação.
28. Event Chain
Exemplo:
TrainingExpired
│
▼
ReviewRequired
│
▼
ApprovalRequested
│
▼
ReviewApproved
│
▼
PermitSuspended
A cadeia deverá ser reconstruível.
29. Ordering
O sistema deverá garantir ordenação quando ela for necessária dentro de um determinado contexto.
Exemplo:
WorkPermitCreated
WorkPermitSubmitted
WorkPermitApproved
Não permitir que:
Approved
seja processado antes de:
Submitted
quando a semântica do domínio exigir essa ordem.
30. At-Least-Once Delivery
O design deverá assumir que eventos podem ser entregues mais de uma vez.
Portanto:
Consumidores devem ser idempotentes.
31. Deduplication
Um consumidor poderá armazenar:
eventId
consumerId
processedAt
Antes de processar:
alreadyProcessed?
Se sim:
ACK
sem repetir a operação.
32. Exactly Once
Não depender de “exactly once” como premissa arquitetural.
O sistema deverá alcançar comportamento efetivamente idempotente mesmo sob:
duplicate
retry
replay
timeout
worker restart
33. Retry
Eventos com falha poderão ser reprocessados.
EVENT
↓
CONSUMER FAILURE
↓
RETRY
↓
RETRY
↓
DLQ
34. Dead Letter Queue
Eventos não processáveis deverão ir para:
Dead Letter
com:
eventId
consumer
attempts
error
lastAttempt
35. Poison Event
Um evento estruturalmente inválido ou que sempre falha não deverá bloquear os demais.
Deverá ser isolado.
36. Backpressure
Se um produtor gerar:
10.000 events/sec
e consumidor suportar:
1.000 events/sec
o sistema deverá utilizar:
queue
batching
backpressure
rate limiting
em vez de tentar processar tudo simultaneamente.
37. Priority
Eventos críticos poderão ter prioridade.
Exemplo:
SafetyCriticalEvent
pode ter prioridade maior que:
AnalyticsEvent
38. Event Retention
Nem todo evento precisa ser mantido indefinidamente.
Políticas poderão definir:
short retention
long retention
archive
immutable audit
Eventos relevantes para compliance poderão ter retenção superior.
39. Event Storage
O Event Fabric deverá separar:
Hot event processing
Long-term event archive
Audit
Não transformar um único storage em solução para tudo.
40. Replay
Eventos deverão poder ser reproduzidos em ambientes controlados.
Event History
↓
Replay
↓
Sandbox
Nunca executar replay diretamente em produção sem proteção explícita.
41. Replay Security
Replay deverá possuir:
mode:
DRY_RUN
SIMULATION
PRODUCTION
PRODUCTION deverá exigir autorização elevada.
42. Event Filtering by Tenant
Um consumidor global poderá receber:
GLOBAL
ou eventos tenant-scoped somente quando autorizado.
Um consumidor Tenant A:
tenantId = A
nunca deverá receber eventos de B.
43. Cross-Tenant Protection
Mesmo que uma subscription tenha sido configurada incorretamente:
Tenant A subscription
o Event Fabric deverá aplicar uma segunda validação.
44. Event Security
Eventos deverão possuir classificação de sensibilidade:
PUBLIC
INTERNAL
CONFIDENTIAL
RESTRICTED
Isso poderá determinar:
- quem pode consumir;
- onde pode ser armazenado;
- se pode entrar no LLM context.
45. LLM Event Context
Nunca enviar automaticamente o payload completo de qualquer evento para o LLM.
Fluxo:
Event
↓
Policy
↓
Data Minimization
↓
Relevant Context
↓
LLM
46. Event Data Minimization
Se o evento possui:
employee
medical-related metadata
documents
o agente deverá receber apenas o necessário para a tarefa.
47. Event-to-Knowledge
Eventos poderão disparar consultas ao HAG.
Exemplo:
RiskChanged
↓
Knowledge Resolver
↓
Find applicable safety procedure
Mas conhecimento encontrado não é autorização para agir.
48. Event-to-Policy
O evento poderá disparar:
Policy Evaluation
Exemplo:
TrainingExpired
↓
Policy
↓
Is active permit affected?
49. Event-to-Approval
Alguns eventos poderão criar aprovação:
CriticalRiskDetected
↓
Policy
↓
Human Review
50. Event Storm Protection
Uma alteração poderá gerar vários eventos relacionados.
Exemplo:
EmployeeChanged
↓
TrainingChanged
↓
PermitChanged
↓
RiskChanged
O sistema deverá evitar cascatas desnecessárias.
51. Debouncing
Quando permitido:
10 changes
within 5 seconds
poderão ser consolidadas em:
EmployeeProfileChanged
ou evento agregado equivalente.
52. Event Aggregation
Exemplo:
RiskChanged × 20
pode gerar:
RiskSetUpdated
quando a semântica permitir.
53. Recursion Protection
O Event Fabric deverá impedir loops:
Event A
↓
Workflow
↓
Event B
↓
Workflow
↓
Event A
Deverá existir:
causation chain
depth limit
cycle detection
54. Maximum Reaction Depth
Cada cadeia poderá possuir:
maxDepth
Exemplo:
A → B → C → D
Depois de determinado limite:
REACTION_DEPTH_EXCEEDED
e encaminhamento para análise.
55. Event Loop Detection
Registrar:
eventType
workflowId
capabilityId
causationChain
para detectar padrões repetitivos.
56. Scheduled Events
Além de eventos de negócio, o Fabric poderá receber:
SCHEDULED_EVENT
Exemplo:
Every day at 02:00
↓
Find expiring permits
57. Temporal Rules
Exemplo:
Se uma permissão estiver vencendo em 24 horas, criar tarefa de revisão.
Fluxo:
Timer
↓
Query
↓
Policy
↓
Workflow
58. Event-driven Monitoring
O sistema poderá reagir a:
SLA_BREACHED
APPROVAL_OVERDUE
INTEGRATION_FAILURE
WORKFLOW_STUCK
59. Workflow Watchdog
O Event Fabric poderá gerar:
WORKFLOW_STUCK
quando:
workflow.state = WAITING
duration > threshold
O Agentic Runtime poderá então:
notify
escalate
review
conforme policy.
60. Business Rules
Não colocar regras de negócio diretamente no Event Fabric.
Errado:
Event Fabric:
if permitApproved then release()
Correto:
Event Fabric:
emit WorkPermitApproved
Workflow:
decide next action
Policy:
authorize
Capability:
execute
61. Event Fabric as Infrastructure
O Event Fabric deverá permanecer relativamente agnóstico ao domínio.
Ele deverá saber:
event exists
event schema
event scope
routing
delivery
retry
security
Mas não:
como uma permissão deve ser liberada
62. Domain Logic
A lógica continuará nos componentes apropriados:
Domain
Capability
Policy
Workflow
63. Event Registry Integration
O Agent Knowledge/Capability Graph do PRD-009 deverá conectar:
Semantic Resource
│
├── Knowledge
├── Capability
├── Policy
├── UI
└── Events
Exemplo:
workPermit.approval
│
├── documentedBy
├── approvedBy
├── capability
├── policy
└── event: WorkPermitApproved
64. Event Discovery
Isso permitirá ao agente responder:
“O que acontece quando uma permissão é aprovada?”
deterministicamente:
WorkPermitApproved
↓
registered workflows
↓
registered reactions
65. Agentic Event Reasoning
Quando a reação exigir raciocínio:
Event
↓
Deterministic Resolution
↓
Knowledge
↓
LLM
↓
Structured Decision
↓
Policy
↓
Workflow
O LLM continua subordinado às estruturas determinísticas.
66. LLM Minimization
Eventos simples não precisam de LLM.
Exemplo:
ApprovalApproved
↓
workflow.resume()
Nenhum modelo é necessário.
67. Complex Event
Exemplo:
RiskChanged
poderá exigir:
identify affected permits
interpret risk relationship
find applicable procedures
Aqui o LLM poderá ser utilizado, mas sempre produzindo uma decisão estruturada.
68. Autonomous Action Boundary
O agente poderá iniciar automaticamente uma ação somente se:
policy = ALLOW
Caso contrário:
REQUIRE_APPROVAL
ou:
REQUIRE_HUMAN_REVIEW
69. Event-triggered Mass Actions
Extremamente importante.
Exemplo:
TrainingExpired
↓
1,500 employees
↓
8,000 permits
O agente não deverá executar automaticamente milhares de operações.
Deverá aplicar:
impact analysis
batch limits
approval
workflow
rate limiting
70. Blast Radius
Antes de reação em massa:
affectedResources
affectedUsers
affectedWorkflows
affectedTenants
deverão ser calculados.
71. Human Approval for Large Blast Radius
Exemplo:
affected permits = 4,832
policy:
REQUIRE_HUMAN_REVIEW
72. Tenant Configuration
Cada tenant poderá configurar reações:
event
↓
tenant policy
↓
workflow
Mas não poderá violar políticas globais de segurança.
73. Event Subscription Lifecycle
DRAFT
↓
VALIDATING
↓
APPROVED
↓
ACTIVE
↓
DISABLED
↓
DEPRECATED
↓
REMOVED
74. Event Subscription Versioning
Subscriptions deverão ser versionadas para permitir:
rollback
audit
safe deployment
75. Deployment
O PRD-016 deverá incluir:
event definitions
event subscriptions
workflow triggers
no Release Bundle.
76. Compatibility
Uma release deverá validar:
Event schema
Consumer schema
Workflow trigger
Capability
Policy
para evitar:
producer v2
consumer expecting v1
77. Schema Evolution
Mudanças compatíveis poderão manter:
v1
Mudanças incompatíveis:
v2
O sistema poderá manter consumidores de versões anteriores durante período de transição.
78. Event Observability
Métricas:
eventsProduced
eventsConsumed
eventsFailed
eventsRetried
eventsDuplicated
eventsDeadLettered
eventProcessingLatency
queueDepth
79. Event Trace
Cada evento deverá possuir trace/correlation:
Event
↓
Subscription
↓
Workflow
↓
Capability
↓
API
↓
Verification
Isso integra diretamente ao PRD-015.
80. Event Audit
Eventos de negócio importantes deverão ser registrados no mecanismo de auditoria do PRD-013.
Audit não deve depender exclusivamente do Event Fabric.
81. Security Alerts
Eventos suspeitos poderão alimentar segurança:
MassActionDetected
CrossTenantAttempt
RepeatedAuthorizationFailure
UnexpectedCapabilityInvocation
82. Event Rate Limits
Deverão existir limites por:
tenant
producer
eventType
consumer
workflow
83. Tenant Isolation
Um tenant nunca deverá conseguir:
publish event for another tenant
subscribe to another tenant
consume another tenant
trigger workflow in another tenant
sem autorização explícita de plataforma.
84. External Event Gateway
Integrações externas deverão passar por uma camada:
External System
↓
Authenticated Gateway
↓
Schema Validation
↓
Tenant Resolution
↓
Event Fabric
Nunca permitir que uma API externa publique diretamente no runtime interno.
85. Event Authentication
Eventos externos deverão possuir mecanismos como:
signature
token
mTLS
authenticated integration
conforme o tipo de integração.
86. Event Replay Protection
Eventos externos também deverão proteger contra replay.
Exemplo:
eventId already processed
ou timestamp/nonce quando aplicável.
87. First Vertical Slice
Implementar inicialmente:
WorkPermitApproved
Fluxo:
Approval
↓
WorkPermitApproved
↓
Event Fabric
↓
Workflow Resume
↓
Release
↓
Verification
↓
Audit
88. Segundo Vertical Slice
Implementar:
TrainingExpired
Fluxo inicial:
TrainingExpired
↓
Find affected employee
↓
Find active permits
↓
Policy evaluation
↓
Create review workflow
Inicialmente sem execução automática de grande escala.
89. Acceptance Criteria
Event Infrastructure
- Event Envelope;
- Event Registry;
- schemas versionados;
- routing;
- subscriptions;
- retry;
- DLQ;
- deduplicação;
- replay.
Security
- tenant isolation;
- event authentication;
- event authorization;
- sensitive-data classification;
- data minimization;
- replay protection;
- blast-radius protection.
Workflow
- event triggers;
- resume;
- timers;
- correlation;
- causation;
- cycle detection.
Agent
- deterministic event reactions;
- LLM somente quando necessário;
- structured decisions;
- policy enforcement;
- human approval para operações de risco.
Operations
- metrics;
- tracing;
- audit;
- queue monitoring;
- failure handling.
Evidência parcial de implementação — 2026-09-04
O Event Fabric usa envelope e registry versionados, Queue/DLQ e inbox D1 deduplicada por tenant. Consumers persistem falha, aplicam retry/backoff limitado, preservam correlation/causation e permitem replay controlado; mensagens não autorizam execução e reações permanecem policy-bound.
Em 2026-09-04, o consumidor passou a rejeitar antes do handler cadeias de causação cíclicas, auto-causação e cadeias acima de 16 ancestrais; uma cadeia fornecida precisa terminar no causationId imediato. A proteção é compatível com eventos legados sem cadeia e persiste a tentativa recusada no inbox para retry/DLQ observável. Foram aprovados 27 testes focados de Queue/registry e a pré-publicação do Worker (53 arquivos, 310 testes); o Worker foi publicado na versão 9218e7e1-f258-42ac-a43c-bd4a8fe9ba60, com /health público saudável.
Em 2026-09-05, os contratos de Event Fabric passaram com 45 testes em 6 arquivos. O canário operacional remoto comprovou eventos processados, quatro fatos auditáveis, transições de estado, projeções canônicas, risco, Attention, Decision, intervenção e isolamento tenant-safe, sempre sem autoridade automática. O roteamento reativo amplo entre domínios permanece uma expansão futura, sem reduzir os controles certificados.
Em 2026-09-06, a regressão atual de registry, Queue, rota de eventos e stream de execução passou com 54 testes, e o typecheck do Agent passou novamente. O health público do Worker confirmou runtime e bindings. O estado permanece PARTIAL porque o roteamento reativo amplo entre domínios ainda requer prova dedicada.
Em canário remoto de 2026-09-06, sete mensagens percorreram supervisor→training→supervisor→risk→supervisor→decision→supervisor; task e result receberam ACKNOWLEDGED após QUEUED→DELIVERED, progresso cancelado permaneceu CANCELLED, replay foi idempotente e ordenação/payload sensível foram recusados. Os hashes de body e contexto de autorização tiveram 64 caracteres, nenhuma mensagem autorizou execução e o cleanup PostgreSQL retornou remainingRows: 0.
90. Resultado
O Agentic Work passa a funcionar em dois sentidos:
┌──────────────┐
│ USER │
└──────┬───────┘
│
command
│
▼
┌──────────────┐
│ AGENT │
└──────┬───────┘
│
▼
┌──────────────┐
│ WORKFLOW │
└──────┬───────┘
│
▼
BUSINESS SYSTEM
│
│ events
▼
┌──────────────┐
│ EVENT FABRIC │
└──────┬───────┘
│
▼
AGENTIC
REACTION
Isso transforma o agente de um simples assistente conversacional em um componente reativo da plataforma.
PRD-021 — Agentic Proactive Intelligence & Autonomous Operations
O próximo estágio será construído sobre o Event Fabric.
Até aqui o agente reage a:
User command
Event
Workflow
Approval
O PRD-021 deverá introduzir proatividade controlada.
A diferença é importante:
Reativo
O treinamento venceu → o sistema reage.
Proativo
O treinamento vencerá em 15 dias e existem 37 permissões potencialmente afetadas. O agente identifica o risco antecipadamente e prepara uma ação.
O PRD-021 deverá definir:
- detecção antecipada de situações relevantes;
- previsões e sinais;
- regras temporais;
- análise de risco;
- recomendações;
- ações automáticas autorizadas;
- proactive workflows;
- alertas;
- prioridades;
- suppression/deduplication;
- prevenção de alert fatigue;
- autonomous operations;
- limites de autonomia;
- human approval;
- blast-radius control;
- explainability;
- tenant-specific proactive policies;
- avaliação contínua das decisões proativas.
O princípio central será:
O agente pode ser proativo, mas nunca pode ser arbitrário.
Ele deverá sempre transformar uma percepção em:
Signal
↓
Evidence
↓
Risk
↓
Policy
↓
Recommendation
↓
Optional Approval
↓
Workflow
↓
Capability
↓
Verification
Esse será o ponto em que o Agentic Work começará a evoluir de um sistema que responde ao usuário para um sistema que antecipa problemas e prepara ações, sem perder o controle humano, a segurança e a auditabilidade.