From 8825063fa0e7e85d561bf1dadabee080b092a899 Mon Sep 17 00:00:00 2001 From: Marcos Lohmann Date: Wed, 9 Sep 2026 09:12:53 -0300 Subject: [PATCH] Revise README for version 0.2 updates Updated the README to reflect changes in the architecture and implementation details for version 0.2, including new features and governance aspects. --- README.md | 701 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 678 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 74c1413..d4eeac2 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,23 @@ # Enterprise MCP Service Bus ## Reference Architecture para acesso agêntico governado por Client-Bound Entitlements -**Status:** Working Draft v0.1 -**Publicação:** 14 de agosto de 2026 -**Escopo:** Arquitetura corporativa para expor capacidades empresariais a agentes por meio de MCP, com um MCP Gateway atuando como Policy Enforcement Point (PEP) e com o MCP Client definindo o limite máximo de privilégio. +**Status:** Working Draft v0.2 +**Publicação:** 3 de setembro de 2026 +**Escopo:** Arquitetura corporativa para publicar, descobrir, personalizar, orquestrar e executar capacidades empresariais por meio de MCP, com um MCP Gateway atuando como Policy Enforcement Point (PEP), o MCP Client definindo o limite máximo de privilégio e o Service Orchestrator calculando a Next Best Action (NBA) dentro desse limite. + +## Reference implementation + +A implementação executável desta arquitetura está em [`RI/`](RI/README.md), com gateway MCP, PEP/PDP, OPA, Keycloak, serviços de exemplo, testes adversariais e ambiente Docker Compose. + +### Novidades da v0.2 + +- governança de publicação/subscrição de capabilities por service owners e pipelines; +- Entitlement Manager como autoridade de cardápios MCP personalizados; +- Profile Intelligence com clusterização genérica, substituível e sem taxonomia proprietária; +- Offering Filter para intersectar catálogo, entitlement, perfil, consentimento e contexto; +- Service Orchestrator responsável pelo cálculo da NBA; +- Agent Runtime para dispatch, sessão, canais e handoff; +- rastreabilidade ponta a ponta entre perfil, entitlement, decisão, política, execução e outcome. --- @@ -20,6 +34,43 @@ O desenho tem quatro ideias centrais: 3. **O catálogo visível ao agente é uma projeção do entitlement do client.** Um `tools/list` deve devolver somente as tools permitidas àquele client. 4. **Informações controladas pelo agente podem reduzir acesso, mas nunca ampliá-lo.** Contexto, usuário, estado da conversa, RAG, resultados de tools e decisões do LLM não podem elevar o conjunto máximo de capabilities estabelecido para o MCP Client. +A arquitetura ampliada adiciona três ideias operacionais ao núcleo de segurança: + +5. **O Enterprise MCP Fabric é o eixo de publicação e subscrição de capabilities.** Service owners publicam produtos, serviços, benefícios, campanhas e operações uma vez; consumidores autorizados os descobrem e reutilizam por contratos governados. +6. **O Entitlement Manager produz cardápios MCP personalizados.** Ele cruza identidade autenticada, perfil de segurança do client/workload, políticas, risco e contexto para produzir o conjunto máximo e a visão efetiva de capabilities. +7. **O Service Orchestrator calcula a NBA.** Ele recebe contexto, identidade e limites derivados de perfil, entitlement e ofertas filtradas; combina estado de jornada, decisioning, regras e guardrails; e despacha a ação selecionada para agentes e canais. + +Essas responsabilidades formam um ciclo governado, sem transferir autorização para a camada probabilística: + +```text +service publication -> global catalog -> maximum entitlement -> filtered offerings + -> decision context -> NBA orchestration -> agent/channel execution + -> telemetry and traceability -> policy, catalog and model improvement +``` + +O contrato entre personalização e orquestração pode ser resumido como: + +```text +DecisionContext = ( + ProfileView, + AuthenticatedIdentity, + EntitlementLimits, + FilteredOfferings, + RuntimeContext +) + +NBA = Orchestrator( + DecisionContext, + JourneyState, + DecisioningModel, + Rules, + Guardrails, + Memory +) +``` + +`ProfileView` é produzido por um modelo **genérico e substituível** de segmentação ou clusterização, baseado em atributos de perfil, sinais comportamentais e contexto de jornada definidos pela organização. A arquitetura não pressupõe taxonomias, nomenclaturas de segmentos ou métodos proprietários de uma empresa específica. + A propriedade de segurança central pode ser expressa como: ```text @@ -175,6 +226,76 @@ Em um sistema tradicional, um endpoint não listado em uma UI ainda pode ser con - uma medida de melhoria de tool selection; - uma forma de governar capacidades corporativas. +### 3.3 Arquitetura de referência ampliada + +O E-MCP-BUS continua sendo a fronteira determinística e o barramento de capabilities. Ao seu redor, a arquitetura ampliada organiza quatro responsabilidades adicionais: oferta, personalização governada, orquestração e execução omnicanal. + +```mermaid +flowchart LR + subgraph Supply["OFERTA E GOVERNANÇA DE SERVIÇOS"] + Owners["Service owners"] + Pipeline["Publishing pipeline
schema • owner • risk • policy • version"] + Registry["Global Capability Registry"] + Owners --> Pipeline --> Registry + end + + subgraph Personalization["PERSONALIZAÇÃO GOVERNADA"] + Signals["Atributos de perfil
comportamento • jornada"] + Profiles["Profile Intelligence
segmentação / clusterização genérica"] + Entitlements["Entitlement Manager
maximum entitlement"] + Filter["Offering Filter
capabilities relevantes e elegíveis"] + Consent["Consentimento declarado
canal • contexto de runtime"] + DecisionContext["Decision Context
context + identity + limits"] + Signals --> Profiles --> DecisionContext + Entitlements --> Filter --> DecisionContext + Consent --> Filter + Consent --> DecisionContext + end + + subgraph Orchestration["ORQUESTRAÇÃO DE JORNADAS"] + Orchestrator["Journey & Agent Orchestrator
state • objective • NBA function"] + Decisioning["Decisioning model
rules • guardrails"] + Memory["State • memory
telemetry • traceability"] + Decisioning --> Orchestrator + Memory <--> Orchestrator + DecisionContext --> Orchestrator + end + + subgraph Runtime["AGENTES E CANAIS"] + AgentRuntime["Agent Runtime
context • session • handoff"] + Conversational["Conversational
app • web • messaging • voice"] + Proactive["Proactive
push • email • SMS"] + Media["Media and expansion
campaigns • ads • new agents"] + AgentRuntime --> Conversational + AgentRuntime --> Proactive + AgentRuntime --> Media + end + + subgraph Bus["ENTERPRISE MCP SERVICE BUS"] + Client["MCP Client
workload identity"] + Gateway["MCP Gateway / PEP
filtered discovery • enforcement"] + PDP["PDP / Policy Engine
entitlement • transaction"] + Fabric["Enterprise MCP Fabric
publish • subscribe • route • mediate • resolve"] + Client --> Gateway + Gateway <--> PDP + Gateway --> Fabric + end + + Registry --> Fabric + Registry --> Filter + PDP <--> Entitlements + Orchestrator -->|"NBA + agent dispatch"| AgentRuntime + Orchestrator --> Client + Fabric --> Systems["APIs • ESB • service mesh • functions • SaaS • data"] +``` + +O diagrama apresenta duas cadeias complementares: + +- **supply chain de capabilities:** service owner -> publishing pipeline -> registry -> fabric; +- **decision chain:** perfil + entitlement + ofertas filtradas -> decision context -> NBA -> agent/channel execution. + +O ponto de união é o contrato MCP governado. O Orchestrator consome apenas capabilities visíveis e executáveis para o MCP Client autenticado; o Gateway reautoriza cada chamada, mesmo que a NBA tenha sido produzida por um modelo ou regra aprovados. + --- ## 4. Princípios arquiteturais @@ -339,6 +460,30 @@ Regra recomendada: > **MCP exposes enterprise capabilities; it does not reimplement enterprise services.** +### P8. Relevância nunca amplia autorização + +Segmentação, clusterização, recomendação, ranking, propensity scores e decisioning podem ordenar ou reduzir o conjunto de candidatas. Eles não podem criar entitlement. + +```text +RankedCandidates(subject, context) ⊆ FilteredOfferings(subject, context) +FilteredOfferings(subject, context) ⊆ MaximumEntitlement(client) +``` + +Um cluster de perfil não é um security principal. Mudanças de cluster não concedem automaticamente acesso a novas capabilities; qualquer ampliação exige uma decisão explícita e auditável do Entitlement Manager/PDP. + +### P9. A NBA é decisão de orquestração, não decisão de autorização + +O Service Orchestrator calcula a Next Best Action combinando contexto de decisão, estado da jornada, modelo de decisioning, regras, guardrails e memória. O resultado pode selecionar uma capability, um agente, um canal e um instante de execução, mas permanece sujeito a: + +- filtered discovery; +- execution authorization; +- transaction policy; +- consentimento e limites de contato; +- human-in-the-loop quando aplicável; +- autorização final do backend. + +Uma NBA negada pelo PEP não é automaticamente substituída por execução direta ou bypass. O Orchestrator deve recalcular, degradar com segurança ou encerrar a jornada conforme política. + --- ## 5. Modelo de confiança @@ -418,14 +563,21 @@ Componente probabilístico responsável por: Responsável por: - executar ou coordenar agentes; -- manter contexto; +- receber o `DecisionContext` com perfil, identidade autenticada, limites e ofertas filtradas; +- manter estado de jornada, contexto e memória operacional; - gerenciar chamadas ao modelo; +- calcular a Next Best Action (NBA); +- combinar decisioning model, regras e guardrails; +- selecionar agente, canal e estratégia de handoff; - instanciar ou utilizar MCP Clients; - aplicar guardrails; -- implementar human-in-the-loop quando necessário. +- implementar human-in-the-loop quando necessário; +- emitir telemetria e trilha de decisão correlacionáveis com o PEP e o backend. Guardrails são defense-in-depth, não substitutos do PEP. +O Orchestrator decide **qual ação tentar**. O PEP/PDP decide **se aquela ação pode ser executada**, e o backend continua decidindo sobre seus próprios recursos. + --- ### 6.3 MCP Client @@ -559,6 +711,226 @@ Pode ser implementado como: - adapters para APIs existentes; - integração com ESB/API Management já existente. +Além do data plane, o Fabric oferece o ponto corporativo de **publicação e subscrição** de capabilities. Publicar significa registrar um contrato governado e resolvível; subscrever significa descobrir ou consumir uma projeção autorizada desse contrato. O Fabric não entrega o catálogo global indiscriminadamente a cada agente. + +--- + +### 6.8 Service owners e publishing pipelines + +Cada capability deve possuir um owner responsável por contrato, risco, política, qualidade operacional e ciclo de vida. A publicação deve ocorrer por pipeline, não por cadastro manual ad hoc em produção. + +Um pipeline de publicação deve validar pelo menos: + +- nome canônico, namespace e versão; +- descrição voltada a consumo agêntico; +- input/output schema; +- owner e domínio de negócio; +- classificação de risco e dados; +- side effects e idempotência; +- políticas de entitlement e transação; +- requirements de consentimento ou aprovação; +- adapter/backend e health checks; +- telemetria, SLOs, depreciação e rollback. + +```mermaid +flowchart LR + Owner["Service owner"] --> Manifest["Capability manifest"] + Manifest --> Pipeline["Publishing pipeline"] + Pipeline --> Schema["Schema and contract validation"] + Pipeline --> Risk["Risk and data classification"] + Pipeline --> Policy["Policy tests"] + Pipeline --> Ops["Health, SLO and telemetry checks"] + Schema --> Gate["Publication gate"] + Risk --> Gate + Policy --> Gate + Ops --> Gate + Gate -->|"approved"| Registry["Global Capability Registry"] + Registry --> Fabric["Enterprise MCP Fabric"] + Gate -->|"rejected"| Owner +``` + +Exemplo de manifesto mínimo: + +```yaml +apiVersion: enterprise.mcp/v1 +kind: Capability +metadata: + name: benefits.present + namespace: engagement + version: 1.2.0 + owner: customer-engagement +spec: + description: Present an eligible benefit to a customer in an approved channel + riskTier: medium + dataClassification: internal + sideEffects: none + idempotent: true + requiredEntitlements: + - engagement.benefits.read + transactionPolicy: + consentPurpose: personalization + allowedChannels: [app, web, email] + backend: + adapter: benefits-api + operation: GET /v2/benefits/{benefitId} + lifecycle: + status: active + sunsetAfter: 2027-09-01 +``` + +### 6.9 Entitlement Manager + +É o componente central de gestão de **cardápios MCP personalizados**. Ele materializa políticas em conjuntos de capabilities associados a identidades autenticadas de clients/workloads. + +Responsabilidades: + +- resolver `MaximumEntitlement(client)`; +- combinar perfis de segurança pré-aprovados para clients/workloads, políticas organizacionais, risco e contexto; +- produzir versões cacheáveis e revogáveis do cardápio; +- fornecer dados de decisão ao PDP; +- manter provenance: qual regra incluiu, restringiu ou removeu uma capability; +- invalidar projeções após revogação, mudança de risco ou alteração do catálogo. + +O Entitlement Manager é autoridade sobre o cardápio máximo. Ele não executa ranking de relevância, não calcula NBA e não confia em atributos autodeclarados pelo LLM. + +### 6.10 Profile Intelligence e clusterização genérica + +Profile Intelligence transforma atributos permitidos em uma visão de perfil utilizável por personalização e orquestração. A implementação pode usar regras, clustering não supervisionado, classificação supervisionada, embeddings ou uma combinação dessas técnicas. + +Fontes genéricas possíveis: + +- atributos de relacionamento e ciclo de vida; +- frequência, recência e intensidade de interação; +- afinidade por categorias de produtos ou serviços; +- histórico de respostas a jornadas; +- preferências declaradas; +- contexto temporal, geográfico ou de canal quando permitido; +- sinais de satisfação, propensão, churn ou necessidade de suporte. + +Requisitos de governança: + +- usar identificadores pseudonimizados quando possível; +- documentar features, finalidade, janela temporal e qualidade; +- evitar atributos sensíveis ou proxies sem base legal e revisão apropriada; +- versionar modelos e definições de segmentos; +- monitorar drift, estabilidade e impacto desigual; +- permitir explicações por `reason codes`; +- garantir que o resultado reduza ou ordene candidatas, nunca amplie entitlement. + +Consentimento não deve ser inferido por clusterização. Ele entra como atributo determinístico no Offering Filter, nos guardrails de decisão e na autorização transacional. + +Exemplo de saída genérica: + +```json +{ + "subjectRef": "subject:7f31c2", + "profileVersion": "profile-model-3.4", + "segments": [ + {"id": "low-engagement", "score": 0.86}, + {"id": "digital-preference", "score": 0.73} + ], + "attributes": { + "relationshipStage": "activation", + "preferredChannels": ["app", "email"], + "engagementBand": "low" + }, + "reasonCodes": ["LOW_RECENCY", "APP_AFFINITY"], + "expiresAt": "2026-09-04T12:00:00Z" +} +``` + +Os nomes acima são ilustrativos. A arquitetura não prescreve taxonomia, algoritmo, número de clusters ou atributos específicos. + +### 6.11 Offering Filter + +Produz o conjunto de capabilities e ofertas simultaneamente disponíveis, elegíveis e relevantes para o contexto corrente. Opera depois do teto de entitlement e antes do ranking da NBA. + +```text +FilteredOfferings(subject, client, context) + = ActiveCatalog + ∩ MaximumEntitlement(client) + ∩ SubjectAndContextConstraints(subject, context) +``` + +O filtro pode considerar disponibilidade, região, canal, consentimento, horário, estoque, compatibilidade, frequency caps e restrições transacionais. Uma oferta ausente do maximum entitlement nunca pode ser reintroduzida por score de perfil. + +### 6.12 Service Orchestrator + +Coordena jornadas e agentes sobre um universo previamente permitido e relevante. Seu contrato de entrada é um `DecisionContext`; sua principal saída é uma NBA acompanhada das informações necessárias ao dispatch. + +```mermaid +flowchart LR + subgraph HP["GOVERNED PERSONALIZATION"] + Profile["Profile view"] + Entitlement["Entitlement limits"] + Offerings["Filtered offerings"] + Context["Runtime context
identity • consent • channel"] + DC["Decision Context
context + identity + limits"] + Profile --> DC + Entitlement --> DC + Offerings --> DC + Context --> DC + end + + subgraph ORCH["SERVICE ORCHESTRATOR"] + Journey["Journey & Agent Orchestrator
state • objective • NBA function"] + Model["Decisioning model
rules • guardrails"] + State["State • memory
telemetry • traceability"] + DC --> Journey + Model --> Journey + State <--> Journey + end + + subgraph CHANNELS["AGENTS AND CHANNELS"] + Runtime["Agent Runtime
context • session • handoff"] + Chat["Conversational"] + Push["Proactive"] + Media["Media / campaigns"] + Journey -->|"NBA + agent dispatch"| Runtime + Runtime --> Chat + Runtime --> Push + Runtime --> Media + end +``` + +Responsabilidades: + +- manter estado e objetivo da jornada; +- calcular NBA com função de decisão versionada; +- aplicar regras de canal, frequência, consentimento, timing e pressão de contato; +- coordenar múltiplos agentes sem perder contexto; +- decidir handoff entre agentes ou para atendimento humano; +- correlacionar decisão, chamada MCP, execução e resultado; +- recalcular ou degradar com segurança quando uma ação for negada ou indisponível. + +O Orchestrator não pode emitir credenciais de maior privilégio, alterar entitlement, suprimir a reautorização de `tools/call` ou substituir a decisão do backend. + +### 6.13 Agent Runtime e channel adapters + +O Agent Runtime traduz a NBA em execução coordenada. Ele gerencia sessão, contexto mínimo, lifecycle do agente, retries seguros e handoff. Channel adapters encapsulam diferenças entre experiências conversacionais, notificações proativas, mídia, campanhas e novos agentes especializados. + +Uma saída de dispatch pode ter a forma: + +```json +{ + "decisionId": "dec-01J7A6N3", + "action": "benefits.present", + "capabilityVersion": "1.2.0", + "subjectRef": "subject:7f31c2", + "channel": "app", + "agent": "engagement-assistant", + "reasonCodes": ["ELIGIBLE", "ACTIVATION_OBJECTIVE", "FREQUENCY_OK"], + "policyContext": { + "entitlementVersion": "ent-2026-09-03-17", + "consentPurpose": "personalization", + "maxContactsPerWeek": 2 + }, + "expiresAt": "2026-09-03T18:00:00Z" +} +``` + +Esse objeto representa intenção de execução. Ele não substitui o token do MCP Client nem a autorização determinística realizada pelo Gateway/PEP. + --- ## 7. Modelo de entitlement @@ -635,6 +1007,48 @@ Essa segmentação cria **blast-radius domains**. O objetivo não é necessariamente criar um client por agente, mas um client por **perfil máximo de privilégio aceitável**. +### 7.3 Do catálogo global ao cardápio personalizado + +A arquitetura distingue quatro conjuntos que não devem ser confundidos: + +| Conjunto | Pergunta respondida | Autoridade | +|---|---|---| +| `GlobalCatalog` | O que foi publicado e está operacionalmente disponível? | Registry + Fabric | +| `MaximumEntitlement` | Qual é o teto de capabilities deste MCP Client? | Entitlement Manager + PDP | +| `FilteredOfferings` | O que é permitido e aplicável ao subject/contexto atual? | Offering Filter sob política | +| `RankedCandidates` | Qual candidata é mais relevante para o objetivo da jornada? | Service Orchestrator | + +```mermaid +flowchart LR + Global["GlobalCatalog
todas as capabilities publicadas"] + Max["MaximumEntitlement
teto do MCP Client"] + Filtered["FilteredOfferings
permitidas + aplicáveis"] + Ranked["RankedCandidates
ordenadas por relevância"] + NBA["NBA
ação selecionada"] + + Identity["Authenticated workload identity"] --> Max + Policies["Entitlement policies"] --> Max + Global --> Max + + Subject["Subject attributes + consent"] --> Filtered + Runtime["Runtime context"] --> Filtered + Max --> Filtered + + Profile["Generic profile view"] --> Ranked + Journey["Journey state + objective"] --> Ranked + Filtered --> Ranked --> NBA +``` + +As relações de subconjunto são invariantes: + +```text +MaximumEntitlement(client) ⊆ GlobalCatalog +FilteredOfferings(subject, client, context) ⊆ MaximumEntitlement(client) +RankedCandidates(subject, client, context) ⊆ FilteredOfferings(subject, client, context) +``` + +Ranking altera ordem e prioridade; não altera autorização. + --- ## 8. Client-Bound Capability View @@ -758,6 +1172,67 @@ sequenceDiagram end ``` +### 10.1 Fluxo orquestrado de decisão e execução + +O fluxo a seguir conecta profile intelligence, entitlement, filtered offerings, cálculo da NBA e execução MCP sem fundir suas autoridades. + +```mermaid +sequenceDiagram + autonumber + participant X as Runtime Context + participant PI as Profile Intelligence + participant EM as Entitlement Manager + participant OF as Offering Filter + participant O as Service Orchestrator + participant AR as Agent Runtime + participant C as MCP Client + participant G as MCP Gateway / PEP + participant P as PDP + participant F as MCP Fabric + participant B as Backend + + X->>O: event + subjectRef + channel + consent + O->>PI: resolveProfile(subjectRef, context) + PI-->>O: versioned profile view + reason codes + O->>EM: resolveMaximumEntitlement(client identity) + EM-->>O: entitlement version + limits + O->>OF: filter(profile, entitlement, context) + OF-->>O: filtered offerings + O->>O: NBA = decisioning(state, objective, rules, guardrails) + O->>O: persist decision trace + O->>AR: NBA + agent dispatch + AR->>C: tools/call(capability, arguments) + C->>G: authenticated MCP request + G->>P: entitlement + transaction authorization + P-->>G: ALLOW / DENY / REQUIRE_APPROVAL + + alt ALLOW + G->>F: invoke authorized capability + F->>B: call with appropriate downstream identity + B-->>F: result + F-->>G: result + correlation + G-->>C: tool result + C-->>AR: execution result + AR-->>O: outcome + telemetry + O->>O: update state and memory + else DENY or unavailable + G-->>C: deterministic denial + C-->>AR: denied + decision reference + AR-->>O: failure + correlation id + O->>O: recalculate, safe fallback or stop + end +``` + +Exemplo genérico: + +1. Um evento de ativação chega com identidade pseudonimizada, canal atual e consentimento. +2. Profile Intelligence classifica o subject como `low-engagement` e `digital-preference`. +3. O Entitlement Manager permite apenas capabilities de consulta e apresentação de benefícios; operações de compra não pertencem ao cardápio. +4. O Offering Filter remove itens expirados, indisponíveis no canal ou incompatíveis com consentimento e frequency cap. +5. O Orchestrator escolhe `benefits.present` como NBA e despacha um agente conversacional no app. +6. O Gateway reautoriza `tools/call`; a decisão do Orchestrator, isoladamente, não concede execução. +7. Resultado e reason codes atualizam estado, memória, telemetria e trilha de auditoria. + --- ## 11. Discovery authorization versus execution authorization @@ -1418,6 +1893,13 @@ catalog_changed | Excessive privilege | omnibus client com centenas de writes | segmentation by domain/risk | | Policy drift | entitlement antigo permanece em cache | policy version + invalidation | | Backend over-trust | backend confia apenas no gateway | backend resource authorization | +| Profile poisoning | eventos manipulados alteram cluster ou score | source validation + feature lineage + anomaly detection | +| Profile drift | modelo deixa de representar o comportamento atual | versioning + drift monitoring + expiry | +| Sensitive attribute leakage | perfil expõe atributo ou proxy indevido | data minimization + purpose limitation + review | +| Decision manipulation | prompt ou tool output tenta forçar uma NBA | constrained decision context + rules + guardrails | +| Consent/frequency bypass | jornada insiste em canal ou contato bloqueado | deterministic channel policy + frequency caps | +| Stale decision replay | dispatch antigo é executado após revogação | short expiry + idempotency + reauthorization | +| Traceability gap | decisão não pode ser ligada à execução | end-to-end correlation ids + immutable audit trail | --- @@ -1725,6 +2207,34 @@ A plataforma deve suportar credenciais apropriadas ao backend sem blind token pa Tools de alto risco devem suportar aprovação adicional quando requerido. +### RF-11 — Governed publication + +Capabilities devem ser publicadas por pipeline com validação de contrato, owner, risco, políticas, versão, saúde e observabilidade. + +### RF-12 — Personalized MCP menu + +O Entitlement Manager deve produzir cardápios versionados, explicáveis, cacheáveis e revogáveis por identidade autenticada de client/workload. + +### RF-13 — Generic profile view + +Profile Intelligence deve expor um contrato genérico e substituível de atributos, segmentos ou scores, incluindo versão, expiração e reason codes. + +### RF-14 — Safe offering filtering + +O Offering Filter deve garantir que nenhuma candidata fora do Maximum Entitlement seja introduzida por perfil, cluster, score ou contexto. + +### RF-15 — NBA orchestration + +O Service Orchestrator deve calcular e registrar a NBA a partir de Decision Context, estado, objetivo, modelo, regras, guardrails e memória. + +### RF-16 — Agent dispatch and handoff + +O Agent Runtime deve suportar dispatch, sessão, correlação e handoff entre agentes, canais e atendimento humano quando aplicável. + +### RF-17 — End-to-end correlation + +Cada jornada deve correlacionar `profileVersion`, `entitlementVersion`, `decisionId`, `policyDecisionId`, `mcpRequestId`, execução downstream e outcome. + --- ## 37. Requisitos não funcionais @@ -2109,7 +2619,20 @@ Adicionar: - federation; - lifecycle automation. -### Fase 4 — Enterprise scale +### Fase 4 — Personalização e orquestração governadas + +Adicionar: + +- schema genérico e versionado de `ProfileView`; +- Entitlement Manager e cardápios personalizados; +- Offering Filter com consentimento, contexto e frequency caps; +- contrato versionado de `DecisionContext`; +- Service Orchestrator com NBA function, regras e guardrails; +- Agent Runtime e adapters para canais selecionados; +- correlação entre decisão, dispatch, chamada MCP e outcome; +- testes que comprovem que perfil, score e cluster não ampliam entitlement. + +### Fase 5 — Enterprise scale Adicionar: @@ -2179,6 +2702,13 @@ ADR-007: Gateway Bypass Prevention ADR-008: Client Segmentation by Domain and Risk ADR-009: Tool Risk Classification ADR-010: Global Capability Registry Governance +ADR-011: Capability Publication and Subscription Lifecycle +ADR-012: Entitlement Manager as Personalized MCP Menu Authority +ADR-013: Generic and Replaceable Profile Intelligence Contract +ADR-014: Profile Relevance Cannot Expand Entitlement +ADR-015: Service Orchestrator Owns NBA, Not Authorization +ADR-016: Agent Runtime Dispatch and Handoff Contract +ADR-017: End-to-End Decision and Execution Correlation ``` --- @@ -2246,10 +2776,105 @@ A compromised client must have a predictable blast radius. Every security decision must be deterministic and auditable. ``` +### Axiom 11 + +```text +Profile intelligence may rank or reduce candidates; it must never grant capabilities. +``` + +### Axiom 12 + +```text +An NBA is an orchestration intent, not an authorization decision. +``` + +### Axiom 13 + +```text +Capabilities are published once and reused only through governed subscription and enforcement. +``` + --- ## 51. Visão consolidada +### 51.1 Visão lógica ampliada + +```mermaid +flowchart TB + subgraph Supply["CAPABILITY SUPPLY"] + SO["Service owners"] --> PP["Publishing pipelines"] --> GCR["Global Capability Registry"] + end + + subgraph Personalization["GOVERNED PERSONALIZATION"] + Attr["Generic profile attributes
behavior • journey • preferences"] + PI["Profile Intelligence
versioned segments / scores"] + EM["Entitlement Manager
personalized MCP menus"] + OF["Offering Filter
eligible + contextual candidates"] + CTX["Declared consent
channel • runtime context"] + DC["Decision Context
profile • identity • limits • offerings • context"] + + Attr --> PI --> DC + EM --> OF --> DC + CTX --> OF + CTX --> DC + end + + subgraph Journey["JOURNEY AND AGENT ORCHESTRATION"] + O["Service Orchestrator
state • objective • NBA function"] + DM["Decisioning model
rules • guardrails"] + MT["State • memory
telemetry • traceability"] + DC --> O + DM --> O + MT <--> O + end + + subgraph Experience["AGENTS AND CHANNELS"] + AR["Agent Runtime
context • session • handoff"] + CA["Conversational agents"] + PA["Proactive agents"] + MA["Media, campaigns and extensions"] + O -->|"NBA + agent dispatch"| AR + AR --> CA + AR --> PA + AR --> MA + end + + subgraph EMCB["ENTERPRISE MCP SERVICE BUS"] + MC["MCP Client
authenticated workload identity"] + PEP["MCP Gateway / PEP
filtered discovery + enforcement"] + PDP2["PDP / Policy Engine
entitlement + transaction"] + REG["Capability registry view"] + AUD["Correlated audit"] + FAB["Enterprise MCP Fabric
publish • subscribe • route • mediate • resolve"] + + MC --> PEP + PEP <--> PDP2 + REG --> PEP + PEP --> AUD + PDP2 --> AUD + PEP --> FAB + end + + GCR --> REG + GCR --> FAB + GCR --> OF + PDP2 <--> EM + O --> MC + FAB --> Existing2["API Gateway • ESB • service mesh • functions • SaaS"] + Existing2 --> Records["ERP • CRM • data platforms • legacy • partner ecosystem"] + AR --> MT + AUD --> MT +``` + +Esta visão evidencia três separações essenciais: + +- **Registry/Fabric publicam e resolvem** capabilities; Entitlement Manager personaliza o que cada client pode consumir. +- **Profile Intelligence e Offering Filter qualificam candidatas**; Service Orchestrator calcula a NBA. +- **Agent Runtime executa a jornada**; MCP Gateway/PDP e backend continuam como autoridades determinísticas. + +### 51.2 Núcleo técnico e fronteiras de confiança + ```mermaid flowchart TB subgraph Agentic["UNTRUSTED / AGENTIC"] @@ -2347,26 +2972,35 @@ O MCP Gateway atua como PEP e garante que: - o backend mantenha sua própria fronteira de autorização; - um comprometimento seja contido pelo blast radius do client. -O MCP Fabric, por sua vez, cumpre papel semelhante ao de um **Enterprise Service Bus semântico para agentes**: resolve capabilities em serviços corporativos existentes, preservando governança, isolamento e integração com a infraestrutura enterprise já estabelecida. +O MCP Fabric, por sua vez, cumpre papel semelhante ao de um **Enterprise Service Bus semântico para agentes**: centraliza publicação, subscrição e resolução de capabilities sobre serviços corporativos existentes, preservando governança, isolamento e integração com a infraestrutura enterprise já estabelecida. + +Ao redor desse núcleo: + +- Profile Intelligence produz uma visão genérica, versionada e explicável do perfil; +- o Entitlement Manager governa cardápios MCP personalizados; +- o Offering Filter restringe o universo a candidatas permitidas e aplicáveis; +- o Service Orchestrator calcula a NBA dentro desse universo; +- o Agent Runtime coordena execução, sessão, canal e handoff; +- telemetria e traceability fecham o ciclo sem transformar observação em privilégio. A combinação pode ser resumida como: ```text -Agentic Experience - ↓ -MCP Client - ↓ -Client-Bound Maximum Entitlement - ↓ -MCP Gateway / PEP - ↔ -PDP / Policy Engine - ↓ -Enterprise MCP Fabric - ↓ -Existing APIs / ESB / Functions / Services - ↓ -Systems of Record +CAPABILITY SUPPLY +Service owners -> Publishing pipelines -> Global Capability Registry + -> Enterprise MCP Fabric -> Enterprise services + +DECISION AND EXECUTION +Generic Profile View +Authenticated Identity -> Entitlement Manager -> Maximum Entitlement +Runtime Context + Consent + -> Filtered Offerings + -> Decision Context = profile + identity + limits + context + -> Service Orchestrator = state + objective + NBA + -> NBA + agent dispatch + -> Agent Runtime and Channels + -> MCP Client -> MCP Gateway / PEP <-> PDP / Policy Engine + -> Enterprise MCP Fabric ``` O resultado desejado não é tornar o agente "confiável". @@ -2414,7 +3048,28 @@ Catálogo administrativo completo de capabilities governadas. Catálogo MCP filtrado de acordo com o entitlement do client autenticado. **Enterprise MCP Fabric** -Camada de integração que resolve tools MCP em serviços, APIs, funções e sistemas corporativos. +Camada de integração que suporta publicação, subscrição e resolução de tools MCP em serviços, APIs, funções e sistemas corporativos. + +**Entitlement Manager** +Componente que resolve, versiona e revoga o Maximum Entitlement e os cardápios MCP personalizados associados a clients/workloads autenticados. + +**Profile Intelligence** +Capacidade substituível que deriva segmentos, clusters, scores ou atributos de perfil a partir de dados genericamente definidos e governados. Seu resultado informa relevância, não concede autorização. + +**Offering Filter** +Componente que intersecta catálogo ativo, entitlement, restrições do subject e contexto para produzir capabilities ou ofertas elegíveis para decisão. + +**Decision Context** +Envelope versionado contendo profile view, identidade autenticada, limites de entitlement, ofertas filtradas e contexto de runtime fornecidos ao Service Orchestrator. + +**Service Orchestrator** +Componente que coordena estado e objetivo da jornada, combina modelo de decisioning, regras, guardrails e memória e calcula a Next Best Action. + +**Next Best Action — NBA** +Ação escolhida pelo Orchestrator para um contexto e objetivo de jornada. Pode indicar capability, agente, canal e timing, mas não constitui autorização de execução. + +**Agent Runtime** +Camada que executa ou coordena agentes e channel adapters a partir de um dispatch, mantendo sessão, contexto mínimo, handoff e telemetria. **Blast Radius** Impacto máximo esperado em caso de comprometimento de uma identidade ou componente.