PRD-033 — Agentic Resource & Capacity Orchestration
1. Objetivo
O PRD-033 define a camada responsável por gerenciar os recursos necessários para executar planos agentic em escala, evitando que o Agentic Work produza planos teoricamente válidos, mas impossíveis ou inadequados de executar devido à falta de capacidade.
O sistema deverá responder não apenas:
“Qual é o melhor plano?”
mas:
“Qual é o melhor plano que pode ser executado agora, dentro da capacidade, orçamento, concorrência, SLA e limites de todos os recursos envolvidos?”
2. Problema
Um Agentic Work pode depender simultaneamente de:
- agentes;
- Workers;
- APIs internas;
- APIs externas;
- banco de dados;
- filas;
- Vectorize;
- LLMs;
- integrações;
- recursos computacionais;
- limites de rate;
- operadores humanos;
- aprovações;
- orçamento;
- SLA.
Por exemplo:
1000 Work Permits
│
├──► Training API
├──► Risk API
├──► Compliance API
├──► LLM
└──► Human Review
O problema não é somente planejar essas operações.
É necessário saber:
Training API
capacity = 100 req/s
Risk API
capacity = 50 req/s
LLM
budget = 10,000 calls/day
Human Review
capacity = 200 items/day
3. Princípio fundamental
Planejamento deve ser resource-aware.
Um plano só poderá ser admitido se os recursos necessários forem compatíveis com:
- capacidade atual;
- capacidade prevista;
- quotas;
- orçamento;
- prioridade;
- SLA;
- tenant;
- política;
- concorrência.
4. Arquitetura
INTENT
│
▼
PLANNING ENGINE
│
▼
CANDIDATE PLANS
│
▼
RESOURCE REQUIREMENT
│
▼
CAPACITY EVALUATOR
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
Capacity Quota Budget
│ │ │
└─────────────────┼─────────────────┘
▼
ADMISSION CONTROL
│
┌─────────┴─────────┐
▼ ▼
EXECUTE QUEUE
│ │
▼ ▼
MONITOR SCHEDULE
│ │
└─────────┬─────────┘
▼
REPLAN
5. Resource Model
Todo recurso relevante deverá possuir uma representação formal.
interface AgenticResource {
resourceId: string;
type:
| "AGENT"
| "WORKER"
| "API"
| "DATABASE"
| "QUEUE"
| "LLM"
| "VECTOR_STORE"
| "HUMAN"
| "EXTERNAL_SERVICE"
| "COMPUTE"
| "BUDGET";
tenantScope:
| "GLOBAL"
| "TENANT"
| "USER";
status:
| "AVAILABLE"
| "DEGRADED"
| "SATURATED"
| "UNAVAILABLE";
capacity: ResourceCapacity;
constraints: ResourceConstraint[];
}
6. Resource Capacity
interface ResourceCapacity {
maxConcurrency?: number;
requestsPerSecond?: number;
requestsPerMinute?: number;
dailyLimit?: number;
monthlyLimit?: number;
computeUnits?: number;
memoryMb?: number;
estimatedLatencyMs?: number;
}
7. Capacity Types
O sistema deverá suportar:
Concurrency
max 20 concurrent operations
Rate
100 requests / second
Quota
10,000 requests / day
Budget
$100 / day
Human capacity
200 reviews / day
8. Resource Registry
Deverá existir um registro centralizado de recursos.
interface ResourceRegistry {
get(resourceId: string): Promise<AgenticResource>;
listByType(type: string): Promise<AgenticResource[]>;
getCapacity(resourceId: string): Promise<ResourceCapacity>;
reserve(request: ResourceReservation): Promise<Reservation>;
release(reservationId: string): Promise<void>;
}
9. Resource Registry ≠ Capability Registry
Essa distinção é importante.
Capability Registry
Responde:
O que o sistema pode fazer?
Resource Registry
Responde:
Com quais recursos isso pode ser feito agora?
Exemplo:
Capability:
training.getStatus
Resources:
training-api-primary
training-api-secondary
10. Resource Pools
Recursos equivalentes poderão formar pools.
Training API Pool
├── LMS Primary
├── LMS Secondary
└── LMS Cache
O planner poderá selecionar o recurso adequado.
11. Resource Pool
interface ResourcePool {
poolId: string;
resources: string[];
strategy:
| "ROUND_ROBIN"
| "LEAST_LOADED"
| "LOWEST_LATENCY"
| "WEIGHTED"
| "PRIMARY_FIRST";
healthPolicy: string;
}
12. Agent Capacity
Cada agente poderá possuir capacidade própria.
training-agent
├── maxConcurrency = 20
├── queue = 500
└── priority = normal
13. Agent Health
O Resource Layer deverá acompanhar:
HEALTHY
DEGRADED
SATURATED
UNAVAILABLE
14. Agent Selection
O PRD-032 poderá consultar:
Agent Registry
+
Resource Registry
para selecionar:
agent.training.fast
em vez de:
agent.training.standard
se houver vantagem mensurável e a policy permitir.
15. Resource Requirement
Cada step deverá declarar recursos necessários.
interface ResourceRequirement {
resourceType: string;
resourceId?: string;
poolId?: string;
quantity: number;
concurrency?: number;
estimatedDurationMs?: number;
required: boolean;
}
16. Example
Uma capability:
training.getStatus
poderá declarar:
{
"resources": [
{
"resourceType": "EXTERNAL_SERVICE",
"poolId": "lms-primary-pool",
"quantity": 1,
"estimatedDurationMs": 400,
"required": true
}
]
}
17. Resource-Aware Planning
O fluxo será:
Plan
↓
Resource Requirements
↓
Capacity Evaluation
↓
Resource Feasible?
├── YES → Execute
└── NO → Replan / Queue
18. Admission Control
Antes de executar um plano, o sistema deverá decidir:
ADMIT
QUEUE
DEFER
REJECT
19. Admission Control
Exemplo:
type AdmissionDecision =
| "ADMIT"
| "QUEUE"
| "DEFER"
| "REJECT";
20. Admission ≠ Authorization
Um usuário pode estar autorizado:
Policy = ALLOW
mas o sistema pode estar sem capacidade:
Capacity = SATURATED
Resultado:
ALLOW + QUEUE
e não:
DENY
21. Resource Reservation
Para operações críticas, o sistema poderá reservar capacidade antes da execução.
interface ResourceReservation {
reservationId: string;
resourceId: string;
quantity: number;
executionId: string;
expiresAt: string;
}
22. Reservation TTL
Toda reserva deverá possuir TTL.
Isso evita:
reservation leak
quando uma execução desaparece.
23. Lease
Para operações longas:
reserve
↓
lease
↓
renew
↓
release
24. Lease Expiration
Se o agente não renovar:
LEASE_EXPIRED
e o recurso poderá voltar ao pool.
25. Concurrency Control
Cada recurso poderá possuir:
maxConcurrency
Exemplo:
LMS API
maxConcurrency = 10
O décimo primeiro request deverá:
QUEUE
ou usar outro recurso disponível.
26. Rate Limiting
O sistema deverá respeitar:
requestsPerSecond
requestsPerMinute
requestsPerHour
27. Quotas
Quotas poderão existir por:
global
tenant
user
agent
capability
external integration
28. Tenant Quota
Exemplo:
Tenant A
10,000 operations/day
Tenant B
2,000 operations/day
Uma operação de A não poderá consumir silenciosamente a quota de B.
29. Fairness
Um tenant que produz carga elevada não deverá monopolizar recursos compartilhados.
Deverá existir:
fair scheduling
30. Scheduling
A fila poderá considerar:
priority
tenant
SLA
deadline
resource availability
operation age
risk
31. Priority Levels
type Priority =
| "CRITICAL"
| "HIGH"
| "NORMAL"
| "LOW"
| "BACKGROUND";
32. Priority não pode ignorar Security
Uma operação:
CRITICAL
não poderá ultrapassar:
- autorização;
- confirmação;
- policy;
- segregação de funções.
Prioridade somente controla quando executar, não se é permitido.
33. SLA-Aware Scheduling
Cada operação poderá possuir:
interface SLARequirement {
deadline?: string;
maxLatencyMs?: number;
priority: Priority;
}
34. Deadline Scheduling
Se houver:
Task A deadline = 5 min
Task B deadline = 2 hours
A deverá possuir maior urgência.
35. Human Capacity
Human-in-the-loop também é um recurso.
Exemplo:
Safety Reviewer
capacity = 50 reviews/day
O planner deverá considerar essa capacidade.
36. Human Queue
Agent
↓
Human Review Queue
↓
Reviewer
↓
Decision
37. Human Bottleneck
Se houver:
1000 reviews
e:
capacity = 100/day
o sistema não deverá prometer conclusão imediata.
Deverá estimar:
estimated completion
38. Budget Resource
Orçamento também será tratado como recurso.
interface BudgetResource {
budgetId: string;
scope: "GLOBAL" | "TENANT" | "USER" | "AGENT";
currency: string;
limit: number;
consumed: number;
reserved: number;
}
39. LLM Budget
Poderá existir:
Tenant AI Budget
com:
daily token budget
monthly token budget
daily request budget
40. LLM Admission
Antes de chamar o LLM:
Need LLM?
↓
Budget available?
↓
Policy allows?
↓
Call
41. LLM Avoidance
Se uma operação puder ser resolvida por:
exact lookup
BM25
graph
deterministic rule
cached result
não deverá consumir LLM budget.
42. External API Budget
Integrações externas poderão possuir:
rate
quota
cost per request
daily budget
43. Cost-Aware Routing
Se existirem dois serviços equivalentes:
Provider A
$0.01/request
Provider B
$0.003/request
o planner poderá preferir B se:
- funcionalmente equivalente;
- autorizado;
- suficientemente confiável;
- dentro do SLA.
44. Primary/Secondary
Para serviços críticos:
PRIMARY
↓ failure
SECONDARY
deverá ser definido no Registry.
45. Circuit Breaker
Quando um recurso apresentar falhas repetidas:
CLOSED
↓
OPEN
↓
HALF_OPEN
↓
CLOSED
46. Circuit Breaker
O Resource Layer não deverá continuar enviando operações para um recurso claramente indisponível.
Isso evita:
failure storm
47. Backpressure
Quando a capacidade estiver saturada:
Producer
↓
Queue
↓
Consumer
em vez de permitir crescimento ilimitado de concorrência.
48. Queue Limits
Toda fila deverá possuir limite.
interface QueuePolicy {
maxDepth: number;
maxWaitMs: number;
overflowStrategy:
| "REJECT"
| "DEFER"
| "LOWER_PRIORITY"
| "ESCALATE";
}
49. Load Shedding
Em condições extremas:
CRITICAL
HIGH
NORMAL
LOW
BACKGROUND
o sistema poderá descartar ou adiar:
BACKGROUND
LOW
antes de comprometer operações críticas.
50. Never Shed Critical Security
Nunca aplicar load shedding que prejudique:
- auditoria obrigatória;
- segurança;
- autorização;
- isolamento de tenant;
- registros regulatórios críticos.
51. Resource Contention
Exemplo:
100 Work Permit tasks
│
▼
Compliance API
│
▼
capacity = 20
O sistema deverá:
batch
queue
parallelize within limit
em vez de simplesmente disparar 100 requests.
52. Adaptive Concurrency
O limite poderá adaptar-se conforme:
latency
error rate
queue depth
resource health
rate limit responses
53. Adaptive Concurrency Safety
O limite nunca poderá exceder:
hard configured maximum
54. Resource Health Metrics
Deverão ser coletados:
latency
error rate
timeout rate
concurrency
queue depth
throughput
rate-limit responses
availability
55. Capacity Forecast
O sistema poderá estimar:
current capacity
projected capacity
Exemplo:
Current:
70% utilization
Projected:
95% in 20 minutes
Isso poderá disparar:
PROACTIVE_REPLAN
56. Proactive Capacity
Integração com PRD-021:
Capacity trend
↓
Risk prediction
↓
Recommendation
↓
Resource adjustment
57. Resource Events
O Event Fabric poderá receber:
RESOURCE_AVAILABLE
RESOURCE_DEGRADED
RESOURCE_SATURATED
RESOURCE_UNAVAILABLE
QUOTA_WARNING
QUOTA_EXCEEDED
BUDGET_WARNING
CIRCUIT_OPENED
CIRCUIT_CLOSED
QUEUE_THRESHOLD_EXCEEDED
58. Event-Driven Replanning
Exemplo:
LMS_UNAVAILABLE
↓
Event Fabric
↓
Planning Engine
↓
Alternative resource
↓
Replan
59. Resource-Aware Replanning
O planner deverá receber:
oldPlan
resourceState
failedStep
availableAlternatives
e produzir:
newPlan
60. Resource Failure During Execution
Exemplo:
Step 1 ✓
Step 2 ✓
Step 3 → LMS timeout
Step 4 pending
O sistema deverá:
pause
↓
evaluate resource
↓
fallback/replan
61. Unknown Resource Outcome
Se a API responder:
timeout
sem sabermos se processou:
UNKNOWN
deverá ser mantido.
Nunca executar cegamente novamente se isso puder duplicar uma operação.
62. Idempotency
Toda operação potencialmente repetível deverá possuir:
idempotencyKey
63. Retry Budget
Cada operação poderá possuir:
interface RetryBudget {
maxAttempts: number;
maxDurationMs: number;
maxCost?: number;
}
64. Retry Storm Protection
O sistema deverá limitar retries simultâneos.
100 failures
não deverão gerar:
500 retries
65. Resource Dependency Graph
Recursos poderão depender de outros:
Agent
↓
API
↓
Database
Se Database estiver indisponível:
Agent capacity = effectively unavailable
66. Dependency-Aware Capacity
A capacidade efetiva deverá considerar o gargalo:
Agent = 100 req/s
API = 50 req/s
DB = 20 req/s
Capacidade efetiva:
20 req/s
67. Bottleneck Detection
O sistema deverá identificar:
BOTTLENECK
e informar qual recurso limita o plano.
68. Example
Work Permit Release
↓
Training = 100/s
Risk = 100/s
Compliance = 20/s
Resultado:
Primary bottleneck:
Compliance API
69. Plan Optimization Integration
O PRD-032 poderá utilizar:
Resource Cost
Resource Latency
Resource Reliability
Resource Capacity
para escolher entre planos.
70. Example
Plan A
Compliance API
capacity available: 5%
Plan B
Verified internal source
capacity available: 70%
Mesmo que A seja normalmente preferido, B poderá ser escolhido se continuar atendendo todas as constraints.
71. Resource Reservation for Critical Plans
Para operações com SLA rígido:
Plan
↓
Reserve
↓
Execute
72. Reservation Failure
Se a reserva falhar:
Plan cannot be admitted
O sistema deverá:
queue
replan
defer
conforme policy.
73. Deadlock Prevention
O sistema deverá impedir:
Task A holds Resource 1
Task B holds Resource 2
A waits for Resource 2
B waits for Resource 1
74. Resource Acquisition Order
Recursos poderão possuir uma ordem canônica:
R1 → R2 → R3
para reduzir deadlocks.
75. Reservation Timeout
Reservas que não forem utilizadas deverão expirar automaticamente.
76. Starvation Prevention
Uma tarefa de baixa prioridade não poderá permanecer indefinidamente sem execução.
Deverá existir:
aging
de prioridade.
77. Tenant Isolation
Resource accounting deverá manter:
tenantId
em todas as operações.
Nunca:
Tenant A usage
ser confundido com:
Tenant B usage
78. Shared Resources
Quando um recurso for compartilhado:
Global API
deverá existir accounting separado:
global capacity
tenant allocation
tenant usage
79. Tenant Quota Hierarchy
Global Limit
↓
Tenant Limit
↓
User Limit
↓
Operation Limit
O menor limite efetivo deverá prevalecer.
80. Resource Policy
A Policy Engine deverá poder declarar:
tenant X
max concurrent = 10
ou:
capability Y
max batch = 100
81. Resource Policy ≠ Resource State
Policy:
maximum = 100
State:
available = 30
O planner deverá considerar ambos.
82. Resource State Snapshot
Antes da execução:
interface ResourceSnapshot {
timestamp: string;
resources: ResourceState[];
version: string;
}
83. Stale Resource Snapshot
Como capacidade muda rapidamente, snapshots terão TTL.
snapshot age > TTL
→ revalidar.
84. Admission Revalidation
Mesmo que o planner tenha visto:
capacity = 20
antes de executar deverá verificar se:
capacity > 0
continua verdadeiro.
85. Resource Version
Cada recurso poderá possuir:
resourceVersion
para detectar mudanças.
86. Execution Context
O Execution Engine receberá:
interface ResourceExecutionContext {
executionId: string;
tenantId: string;
resourceSnapshotVersion: string;
reservations: string[];
priority: Priority;
deadline?: string;
}
87. Resource Lifecycle
DISCOVERED
↓
REGISTERED
↓
HEALTHY
↓
DEGRADED
↓
SATURATED
↓
UNAVAILABLE
↓
RECOVERING
↓
HEALTHY
88. Resource Discovery
Recursos poderão ser descobertos a partir de:
- Capability Registry;
- Agent Registry;
- External Gateway;
- Infrastructure configuration;
- integrations;
- human review queues.
89. Resource Registration
Nenhum recurso externo deverá ser automaticamente utilizado pelo LLM.
Ele deverá estar registrado.
90. Security Boundary
O Resource Registry nunca deverá expor ao LLM:
- credentials;
- tokens;
- secrets;
- internal network details desnecessários;
- infraestrutura sensível.
O LLM poderá receber apenas abstrações como:
resource available
latency estimate
capacity class
91. Credential Separation
Conforme PRD-027:
Resource
↓
Credential Reference
↓
Credential Resolver
O planner nunca recebe o segredo.
92. External Gateway
Conforme PRD-025:
Planner
↓
Capability
↓
Resource Selection
↓
External Gateway
↓
Credential Resolver
↓
External Service
93. Communication Fabric
Conforme PRD-031:
Agent A
↓
Task
↓
Agent B
também deverá respeitar:
Agent B capacity
queue
priority
deadline
tenant quota
94. Workflow Integration
Workflows poderão declarar:
resource requirements
para determinadas etapas.
Exemplo:
WAITING_APPROVAL
depende de:
human reviewer capacity
95. Event Fabric Integration
Mudanças de capacidade deverão produzir eventos.
Isso permitirá que outros componentes reajam sem polling excessivo.
96. Exception Management
Resource failures deverão gerar exceções classificadas:
RESOURCE_UNAVAILABLE
RESOURCE_SATURATED
QUOTA_EXCEEDED
BUDGET_EXCEEDED
DEADLINE_EXCEEDED
RESERVATION_FAILED
97. Attention Center
Quando não houver capacidade suficiente:
Resource problem
↓
Attention Item
poderá ser criado quando intervenção humana for necessária.
98. Proactive Intelligence
Se o sistema detectar:
capacity projected to fail tomorrow
poderá produzir:
Recommendation:
increase capacity / change scheduling / adjust plan
99. Capacity Optimization
O sistema poderá otimizar:
parallelism
batch size
queue priority
resource selection
execution timing
100. Batch Size Optimization
Exemplo:
batch = 100
gera timeout.
Sistema aprende:
optimal batch = 25
Mas o limite máximo continuará sendo determinado por policy/capability.
101. Adaptive Batch
interface BatchPolicy {
minSize: number;
maxSize: number;
initialSize: number;
adaptationEnabled: boolean;
}
102. Burst Handling
Em situações de pico:
normal capacity
↓
burst
↓
queue
↓
adaptive execution
103. Burst Limits
Burst não poderá ultrapassar:
hard capacity
provider quota
tenant quota
security policy
104. Cost vs Capacity
Às vezes:
cheap resource
= saturated
e:
expensive resource
= available
O planner poderá escolher o segundo se:
- orçamento permitir;
- SLA justificar;
- policy permitir.
105. Capacity-Aware Cost Function
O score do PRD-032 poderá incluir:
cost
+
latency
+
risk
+
capacity pressure
106. Resource Pressure
Cada recurso poderá possuir:
pressure = 0..1
Exemplo:
0.20 = low
0.60 = moderate
0.90 = high
107. Pressure-Based Planning
O planner poderá evitar recursos com:
pressure > threshold
quando existir alternativa válida.
108. Resource Health Scoring
interface ResourceHealth {
availability: number;
latencyScore: number;
errorScore: number;
capacityScore: number;
overall: number;
}
109. Health ≠ Trust
Um serviço pode estar:
healthy
mas possuir:
low trust
Esses conceitos permanecem separados.
110. Health ≠ Authorization
Um recurso disponível não significa que o usuário possa utilizá-lo.
111. Capacity-Aware Agent Communication
Antes de delegar:
Supervisor
↓
Agent Registry
↓
Resource Registry
↓
Capacity check
↓
Task
112. Queue-Based Delegation
Quando o agente estiver ocupado:
Task
↓
Agent Queue
em vez de criar outro agente arbitrariamente.
113. Agent Spawn
Se futuramente houver agentes dinamicamente provisionáveis, o spawn deverá ser controlado por:
policy
budget
capacity
release
tenant limits
O LLM não poderá simplesmente criar agentes ilimitadamente.
114. Resource Scaling
O PRD-033 poderá emitir:
SCALE_RECOMMENDATION
mas o mecanismo de infraestrutura deverá continuar separado.
115. No Infrastructure Bypass
Agentic Work não deverá executar arbitrariamente:
docker
kubectl
shell
cloud admin
para aumentar capacidade.
Qualquer operação desse tipo deverá ser uma capability registrada e fortemente protegida.
116. Observability
Cada execução deverá registrar:
resourceId
reservationId
queueTime
executionTime
capacityAtAdmission
capacityAtExecution
resourcePressure
117. Metrics
Métricas mínimas:
Resource Utilization
Queue Depth
Queue Wait Time
Admission Rate
Admission Rejection Rate
Reservation Failure Rate
Resource Saturation
Resource Availability
Resource Error Rate
Resource Timeout Rate
Quota Utilization
Budget Utilization
118. Planning Metrics
Também:
Resource-Aware Plan Selection
Capacity-Induced Replans
Resource-Induced Failures
Resource-Induced Latency
119. Cost Metrics
Por:
tenant
user
agent
capability
resource
workflow
execution
120. Alerting
Alertas deverão ocorrer quando:
quota > 80%
budget > 80%
capacity > 90%
queue > threshold
error rate > threshold
SLA breach predicted
121. Predictive Capacity
Com PRD-012/021, o sistema poderá aprender padrões:
Monday 08:00
↑ workload
e antecipar capacidade.
122. Resource Forecast
Exemplo:
Expected workload:
8,000 operations
Current capacity:
5,000
Predicted shortage:
3,000
Resultado:
PROACTIVE_CAPACITY_WARNING
123. Testing
O PRD-014 deverá incorporar testes de:
Saturation
resource = 100%
Queue overflow
queue > maxDepth
Quota
quota exceeded
Budget
budget exhausted
Failover
primary unavailable
secondary available
Deadlock
conflicting reservations
124. Chaos Testing
Simular:
API latency spike
API outage
agent outage
database slowdown
queue failure
rate limit
budget exhaustion
resource disappearance
125. Multi-Tenant Testing
Testar:
Tenant A overload
não poderá provocar:
Tenant B starvation
quando isolamento e fairness estiverem configurados.
126. Security Testing
Testar tentativas de:
bypass quota
cross-tenant resource
unauthorized reservation
resource enumeration
credential access
priority abuse
budget manipulation
127. Resource Audit
Toda decisão importante deverá registrar:
resource selected
resources rejected
reason
capacity
quota
budget
reservation
128. Resource Governance
Recursos críticos deverão possuir:
owner
classification
tenant scope
security level
SLA
limits
fallback
lifecycle
129. Resource Versioning
Mudanças relevantes deverão possuir:
resourceVersion
configurationVersion
policyVersion
130. Configuration Lifecycle
DRAFT
↓
VALIDATED
↓
ACTIVE
↓
DEPRECATED
↓
RETIRED
131. Resource Configuration Example
resource:
id: compliance-api-primary
type: API
capacity:
requestsPerSecond: 20
maxConcurrency: 10
health:
timeoutMs: 3000
fallback:
pool: compliance-api-secondary
limits:
maxBatchSize: 50
132. Resource Admission Algorithm
Fluxo recomendado:
1. Validate authorization
2. Validate capability
3. Validate resource
4. Read resource snapshot
5. Evaluate quota
6. Evaluate budget
7. Evaluate concurrency
8. Evaluate deadline
9. Evaluate SLA
10. Reserve if required
11. Admit
133. Admission Result
interface AdmissionResult {
decision:
| "ADMIT"
| "QUEUE"
| "DEFER"
| "REJECT";
reason?: string;
reservations: string[];
estimatedStartAt?: string;
estimatedCompletionAt?: string;
}
134. Example
{
"decision": "QUEUE",
"reason": "RESOURCE_SATURATED",
"reservations": [],
"estimatedStartAt": "2026-09-01T16:20:00Z"
}
135. First Vertical Slice — Work Permit Batch
Cenário:
100 Work Permits
Cada uma precisa:
Training
Risk
Compliance
Decision
136. Resource Constraints
Exemplo:
Training API:
20 concurrent
Risk:
10 concurrent
Compliance:
5 concurrent
137. Optimal Execution
O planner deverá evitar:
100 × 3 = 300 concurrent requests
e produzir algo semelhante a:
Training:
20 concurrent
Risk:
10 concurrent
Compliance:
5 concurrent
138. Queue
As operações excedentes deverão entrar em filas controladas.
100 permits
↓
Admission Controller
↓
bounded queues
↓
workers
139. Failure
Se Compliance ficar indisponível:
Training ✓
Risk ✓
Compliance ✗
o sistema deverá:
pause affected steps
↓
circuit breaker
↓
fallback/replan
sem bloquear desnecessariamente as operações que não dependem do serviço indisponível.
140. Tenant Isolation
Se:
Tenant A = 100 permits
Tenant B = 10 permits
A não poderá consumir toda a capacidade de Compliance.
141. Priority
Se Tenant B tiver uma operação:
deadline = 5 minutes
ela poderá receber prioridade sobre tarefas background de A, respeitando todas as demais regras.
142. Resource-Aware Replanning
Se:
Compliance capacity = 0
e existir:
verified internal compliance source
o sistema poderá mudar o plano.
143. If No Alternative
Se não houver alternativa:
WAITING_RESOURCE
e não:
FAILED
quando a operação ainda puder ser retomada.
144. Resource State Machine
AVAILABLE
│
▼
BUSY
│
▼
SATURATED
│
▼
UNAVAILABLE
│
▼
RECOVERING
│
▼
AVAILABLE
145. Acceptance Criteria
- Resource Registry implementado.
- Resource Pool implementado.
- Resource Capacity model implementado.
- Resource Requirement implementado.
- Agent capacity implementada.
- API capacity implementada.
- Human capacity implementada.
- Budget resource implementado.
- LLM budget implementado.
- Tenant quotas implementadas.
- User quotas implementadas.
- Admission Control implementado.
- Resource Reservation implementado.
- Lease/TTL implementado.
- Concurrency limits implementados.
- Rate limiting integrado.
- Queue management implementado.
- Priority scheduling implementado.
- Fairness implementada.
- SLA-aware scheduling implementado.
- Backpressure implementado.
- Load shedding seguro implementado.
- Circuit breaker integrado.
- Resource health implementado.
- Resource pressure implementado.
- Resource dependency graph implementado.
- Bottleneck detection implementado.
- Capacity-aware planning integrado ao PRD-032.
- Dynamic resource-aware replanning implementado.
- Event Fabric integrado.
- Exception Management integrado.
- Workflow integrado.
- Communication Fabric integrado.
- External Gateway integrado.
- Identity/Delegation integrado.
- Audit integrado.
- Observability integrada.
- Multi-tenant isolation validada.
- Chaos tests implementados.
- Work Permit batch vertical slice funcionando.
Evidência parcial de implementação — 2026-09-04
O registry/pool de recursos é tenant-bound e suporta requisitos, reservas com lease, quotas por tenant/usuário/capability, orçamento, prioridade, deadline e admission idempotente. A manutenção assíncrona expira leases e a transição de health aplica circuit breaker, pressão e concorrência adaptativa. A decisão de admission carrega referências de workflow, comunicação, gateway externo e delegação, mas não concede autoridade de execução.
Em 2026-09-05, a suíte Resource Capacity passou com 19 testes em 4 arquivos. O canário remoto confirmou batch Work Permit tenant-isolado com concorrências selecionadas 5/10/20, bottleneck, previsão de término e custo, replay, circuit OPEN, admission afetada WAITING_RESOURCE, três leases liberados, plano DEGRADED, confirmação invalidada, recurso de failover, queue decision, load shedding seguro sem eliminar prioridade crítica, scheduler claim e decisões de orçamento/quota. A execução não concedeu autoridade e o cleanup confirmou remainingRows:0.
Em 2026-09-06, a regressão atual de runtime de capacidade, orquestração e admission passou com 12 testes. O typecheck do Agent passou novamente, e o health público do Worker confirmou runtime e bindings. A classificação PROVEN_CLOUDFLARE permanece sustentada pelo canário remoto registrado.
146. Resultado Arquitetural
Com o PRD-033, o Agentic Work passa a ter consciência dos recursos reais necessários para executar suas decisões.
A arquitetura passa a ser:
USER
│
▼
INTENT
│
▼
KNOWLEDGE
│
▼
PLAN
│
▼
RESOURCE ANALYSIS
│
┌───────────────┼────────────────┐
▼ ▼ ▼
CAPACITY QUOTA BUDGET
│ │ │
└───────────────┼────────────────┘
▼
ADMISSION CONTROL
│
┌───────────┴───────────┐
▼ ▼
EXECUTE QUEUE
│ │
▼ ▼
MONITOR SCHEDULE
│ │
└───────────┬───────────┘
▼
REPLAN
│
▼
VERIFY
│
▼
RESULT
O resultado é uma arquitetura na qual Planning, Policy e Resource Management são independentes, mas trabalham conjuntamente:
Planning
"o que fazer?"
Policy
"podemos fazer?"
Resources
"podemos fazer agora?"
Execution
"faça."
Verification
"aconteceu corretamente?"
Essa separação será fundamental para permitir que o Agentic Work cresça para milhares de operações simultâneas sem transformar o sistema em um conjunto imprevisível de agentes disparando APIs indiscriminadamente.
PRD-034 — Agentic Adaptive Execution & Runtime Control
O próximo passo natural é sair do planejamento e do provisionamento de capacidade e tratar do comportamento do sistema durante a execução.
O PRD-034 deverá definir uma camada de Adaptive Execution, capaz de observar uma execução em andamento e ajustar seu comportamento em tempo real, sem violar o plano, a policy ou os limites de segurança.
A arquitetura evoluirá para:
APPROVED PLAN
│
▼
ADAPTIVE EXECUTION
│
┌───────────────┼────────────────┐
▼ ▼ ▼
Execute Monitor Control
│ │ │
└───────────────┼────────────────┘
▼
Runtime State
│
┌───────────────┼────────────────┐
▼ ▼ ▼
Continue Adapt Replan
│
┌────────────┼────────────┐
▼ ▼ ▼
Retry Parallelism Routing
│ │ │
└────────────┼────────────┘
▼
Verify
Entre os temas desse próximo PRD estarão:
- runtime control loop;
- adaptive concurrency;
- dynamic batching;
- runtime routing;
- speculative execution;
- hedged requests;
- retry adaptation;
- timeout adaptation;
- priority changes;
- queue migration;
- execution throttling;
- graceful degradation;
- partial execution;
- runtime circuit breakers;
- execution budgets;
- adaptive model routing;
- fallback;
- runtime anomaly detection;
- execution pause/resume;
- safe runtime adaptation;
- live replanning;
- runtime policy enforcement;
- protection contra runaway agents;
- execution watchdog;
- kill switch;
- adaptive streaming;
- runtime state machine;
- execution checkpoints;
- long-running execution control;
- eBPF/infrastructure observability somente se necessário e sem acoplar o domínio ao ambiente de infraestrutura;
- e integração profunda com PRD-024, PRD-032 e PRD-033.
O princípio central será:
O Runtime poderá adaptar a forma de executar um plano, mas nunca poderá transformar uma execução não autorizada em autorizada.