{
  "evaluations": [
    {
      "assertion_results": [
        {
          "assertion_id": "docs-decision",
          "explanation": "Docs precisa de decisao formal.",
          "forbidden_hits": [
            "ambig"
          ],
          "missing_terms": [],
          "passed": false,
          "platform_id": "docs",
          "remediation": "registrar decisao Docs"
        },
        {
          "assertion_id": "mcp-readiness",
          "explanation": "MCP deve refletir a decisao.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": false,
          "platform_id": "mcps",
          "remediation": "atualizar readiness MCP"
        },
        {
          "assertion_id": "ui-explainable",
          "explanation": "UI/GPT devem explicar a mesma fonte.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "ui",
          "remediation": "validar sameSource"
        }
      ],
      "next_actions": [
        "registrar decisao Docs",
        "atualizar readiness MCP"
      ],
      "scenario_id": "docs-blocker-reconciliation",
      "score": 33,
      "status": "bloqueado",
      "title": "Docs deixa de ser blocker ambiguo"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "identity-actor",
          "explanation": "Ator e tenant precisam existir.",
          "forbidden_hits": [],
          "missing_terms": [
            "organization",
            "tenant"
          ],
          "passed": false,
          "platform_id": "identity",
          "remediation": "criar usuario e organizacao"
        },
        {
          "assertion_id": "business-entitlement",
          "explanation": "Uso precisa ser autorizado comercialmente.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "business",
          "remediation": "vincular produto"
        },
        {
          "assertion_id": "credential-ref",
          "explanation": "Credencial deve virar ref segura.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": false,
          "platform_id": "integracoes",
          "remediation": "gerar credentialRef e smoke"
        },
        {
          "assertion_id": "redaction",
          "explanation": "Nao vazamento deve ser provado.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "compliance",
          "remediation": "executar redaction check"
        }
      ],
      "next_actions": [
        "criar usuario e organizacao",
        "gerar credentialRef e smoke"
      ],
      "scenario_id": "byok-tenant-controlled",
      "score": 50,
      "status": "atencao",
      "title": "BYOK por tenant sem vazamento"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "plan",
          "explanation": "Plano e quota precisam de fonte unica.",
          "forbidden_hits": [],
          "missing_terms": [
            "quota"
          ],
          "passed": false,
          "platform_id": "business",
          "remediation": "publicar contrato Business"
        },
        {
          "assertion_id": "billing",
          "explanation": "Finance precisa reconciliar cobranca.",
          "forbidden_hits": [],
          "missing_terms": [
            "usage",
            "reconciliation"
          ],
          "passed": false,
          "platform_id": "finance",
          "remediation": "gerar extrato"
        },
        {
          "assertion_id": "support",
          "explanation": "Suporte precisa explicar bloqueio.",
          "forbidden_hits": [
            "erro bruto"
          ],
          "missing_terms": [],
          "passed": false,
          "platform_id": "customer_ops",
          "remediation": "criar mensagem humana"
        }
      ],
      "next_actions": [
        "publicar contrato Business",
        "gerar extrato",
        "criar mensagem humana"
      ],
      "scenario_id": "business-sellable-control",
      "score": 0,
      "status": "bloqueado",
      "title": "Produto vendavel com gate Business"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "screen",
          "explanation": "MCP deve criar instancia de tela.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": false,
          "platform_id": "mcps",
          "remediation": "criar viewInstance"
        },
        {
          "assertion_id": "hashes",
          "explanation": "Hashes devem existir.",
          "forbidden_hits": [],
          "missing_terms": [
            "records"
          ],
          "passed": false,
          "platform_id": "mcps",
          "remediation": "gerar source hashes"
        },
        {
          "assertion_id": "ui",
          "explanation": "UI deve renderizar mesmo contrato.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "ui",
          "remediation": "validar UI"
        },
        {
          "assertion_id": "docs",
          "explanation": "Docs deve registrar contrato.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": false,
          "platform_id": "docs",
          "remediation": "publicar contrato"
        }
      ],
      "next_actions": [
        "criar viewInstance",
        "gerar source hashes",
        "publicar contrato"
      ],
      "scenario_id": "panel-gpt-same-source",
      "score": 25,
      "status": "bloqueado",
      "title": "Painel e GPT compartilham a mesma fonte"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "roles",
          "explanation": "Papeis precisam estar mapeados.",
          "forbidden_hits": [],
          "missing_terms": [
            "role"
          ],
          "passed": false,
          "platform_id": "identity",
          "remediation": "criar matriz RBAC"
        },
        {
          "assertion_id": "deny",
          "explanation": "Negacao precisa ser testada.",
          "forbidden_hits": [],
          "missing_terms": [
            "403",
            "forbidden"
          ],
          "passed": false,
          "platform_id": "identity",
          "remediation": "criar teste deny"
        },
        {
          "assertion_id": "audit",
          "explanation": "Decisao precisa ser auditavel.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "compliance",
          "remediation": "registrar auditId"
        }
      ],
      "next_actions": [
        "criar matriz RBAC",
        "criar teste deny"
      ],
      "scenario_id": "identity-rbac-negative-path",
      "score": 33,
      "status": "bloqueado",
      "title": "RBAC com caminho negado provado"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "plugin",
          "explanation": "Plugin deve ser premissa, nao blocker.",
          "forbidden_hits": [
            "blocker"
          ],
          "missing_terms": [],
          "passed": false,
          "platform_id": "integracoes",
          "remediation": "registrar tentativa"
        },
        {
          "assertion_id": "wrangler",
          "explanation": "Trabalho real precisa usar wrangler.",
          "forbidden_hits": [],
          "missing_terms": [
            "deploy",
            "secret"
          ],
          "passed": false,
          "platform_id": "integracoes",
          "remediation": "validar wrangler"
        },
        {
          "assertion_id": "runtime",
          "explanation": "Runtime precisa ter rotas e bindings.",
          "forbidden_hits": [],
          "missing_terms": [
            "binding"
          ],
          "passed": false,
          "platform_id": "integracoes",
          "remediation": "validar rota/binding"
        }
      ],
      "next_actions": [
        "registrar tentativa",
        "validar wrangler",
        "validar rota/binding"
      ],
      "scenario_id": "cloudflare-wrangler-not-plugin",
      "score": 0,
      "status": "bloqueado",
      "title": "Cloudflare opera por wrangler"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "ticket",
          "explanation": "Ticket precisa existir.",
          "forbidden_hits": [],
          "missing_terms": [
            "ticket"
          ],
          "passed": false,
          "platform_id": "customer_ops",
          "remediation": "abrir incidente"
        },
        {
          "assertion_id": "handoff",
          "explanation": "Responsavel precisa ser definido.",
          "forbidden_hits": [],
          "missing_terms": [
            "handoff",
            "owner"
          ],
          "passed": false,
          "platform_id": "customer_ops",
          "remediation": "encaminhar"
        },
        {
          "assertion_id": "resolution",
          "explanation": "Resolucao precisa ter evidencia.",
          "forbidden_hits": [],
          "missing_terms": [
            "resolved"
          ],
          "passed": false,
          "platform_id": "customer_ops",
          "remediation": "fechar incidente"
        },
        {
          "assertion_id": "audit",
          "explanation": "Ciclo precisa ser auditavel.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": true,
          "platform_id": "compliance",
          "remediation": "registrar audit"
        }
      ],
      "next_actions": [
        "abrir incidente",
        "encaminhar",
        "fechar incidente"
      ],
      "scenario_id": "customer-ops-support-cycle",
      "score": 25,
      "status": "bloqueado",
      "title": "Suporte fecha ciclo de incidente"
    },
    {
      "assertion_results": [
        {
          "assertion_id": "version",
          "explanation": "Versao precisa ser explicita.",
          "forbidden_hits": [],
          "missing_terms": [
            "contractversion",
            "schemaversion"
          ],
          "passed": false,
          "platform_id": "platform_base",
          "remediation": "gerar contrato"
        },
        {
          "assertion_id": "smoke",
          "explanation": "Smoke precisa rodar.",
          "forbidden_hits": [],
          "missing_terms": [],
          "passed": false,
          "platform_id": "mcps",
          "remediation": "executar smoke"
        },
        {
          "assertion_id": "rollback",
          "explanation": "Rollback precisa existir.",
          "forbidden_hits": [],
          "missing_terms": [
            "previous"
          ],
          "passed": false,
          "platform_id": "platform_base",
          "remediation": "registrar rollback"
        },
        {
          "assertion_id": "docs",
          "explanation": "Mudanca precisa ser documentada.",
          "forbidden_hits": [],
          "missing_terms": [
            "changelog",
            "migration"
          ],
          "passed": false,
          "platform_id": "docs",
          "remediation": "publicar changelog"
        }
      ],
      "next_actions": [
        "gerar contrato",
        "executar smoke",
        "registrar rollback",
        "publicar changelog"
      ],
      "scenario_id": "release-version-rollback",
      "score": 0,
      "status": "bloqueado",
      "title": "Release tem versao, regressao e rollback"
    }
  ],
  "scenarios": [
    {
      "assertions": [
        {
          "assertion_id": "docs-decision",
          "expected_terms": [
            "docs",
            "catalog",
            "response",
            "excecao"
          ],
          "explanation": "Docs precisa de decisao formal.",
          "forbidden_terms": [
            "ambig"
          ],
          "platform_id": "docs",
          "remediation": "registrar decisao Docs"
        },
        {
          "assertion_id": "mcp-readiness",
          "expected_terms": [
            "readiness",
            "docs",
            "blocker"
          ],
          "explanation": "MCP deve refletir a decisao.",
          "forbidden_terms": [
            "global indevido"
          ],
          "platform_id": "mcps",
          "remediation": "atualizar readiness MCP"
        },
        {
          "assertion_id": "ui-explainable",
          "expected_terms": [
            "panel",
            "same",
            "source"
          ],
          "explanation": "UI/GPT devem explicar a mesma fonte.",
          "forbidden_terms": [
            "diverg"
          ],
          "platform_id": "ui",
          "remediation": "validar sameSource"
        }
      ],
      "failure_impact": "Docs segue bloqueando maturidade global sem clareza institucional.",
      "owner_domain": "docs",
      "purpose": "A rodada deve transformar Docs catalogOnly em leitura minima responseReady ou excecao deliberada.",
      "scenario_id": "docs-blocker-reconciliation",
      "success_artifacts": [
        "decisao Docs",
        "readiness MCP",
        "contrato UI/GPT"
      ],
      "title": "Docs deixa de ser blocker ambiguo"
    },
    {
      "assertions": [
        {
          "assertion_id": "identity-actor",
          "expected_terms": [
            "actor",
            "organization",
            "tenant"
          ],
          "explanation": "Ator e tenant precisam existir.",
          "forbidden_terms": [
            "unknown"
          ],
          "platform_id": "identity",
          "remediation": "criar usuario e organizacao"
        },
        {
          "assertion_id": "business-entitlement",
          "expected_terms": [
            "entitlement",
            "product",
            "plan"
          ],
          "explanation": "Uso precisa ser autorizado comercialmente.",
          "forbidden_terms": [
            "sem entitlement"
          ],
          "platform_id": "business",
          "remediation": "vincular produto"
        },
        {
          "assertion_id": "credential-ref",
          "expected_terms": [
            "byok",
            "credentialref",
            "smoke"
          ],
          "explanation": "Credencial deve virar ref segura.",
          "forbidden_terms": [
            "token bruto",
            "secret="
          ],
          "platform_id": "integracoes",
          "remediation": "gerar credentialRef e smoke"
        },
        {
          "assertion_id": "redaction",
          "expected_terms": [
            "redaction",
            "audit",
            "trace"
          ],
          "explanation": "Nao vazamento deve ser provado.",
          "forbidden_terms": [
            "password",
            "api_key"
          ],
          "platform_id": "compliance",
          "remediation": "executar redaction check"
        }
      ],
      "failure_impact": "Autosservico parece pronto, mas falha no primeiro cliente real.",
      "owner_domain": "integrations",
      "purpose": "Validar BYOK completo com ator, organizacao, entitlement, credentialRef, smoke e audit.",
      "scenario_id": "byok-tenant-controlled",
      "success_artifacts": [
        "credentialRef",
        "smoke readonly",
        "auditId",
        "usage"
      ],
      "title": "BYOK por tenant sem vazamento"
    },
    {
      "assertions": [
        {
          "assertion_id": "plan",
          "expected_terms": [
            "plan",
            "entitlement",
            "quota"
          ],
          "explanation": "Plano e quota precisam de fonte unica.",
          "forbidden_terms": [
            "divergente"
          ],
          "platform_id": "business",
          "remediation": "publicar contrato Business"
        },
        {
          "assertion_id": "billing",
          "expected_terms": [
            "invoice",
            "usage",
            "reconciliation"
          ],
          "explanation": "Finance precisa reconciliar cobranca.",
          "forbidden_terms": [
            "sem fatura"
          ],
          "platform_id": "finance",
          "remediation": "gerar extrato"
        },
        {
          "assertion_id": "support",
          "expected_terms": [
            "support",
            "diagnostic",
            "next"
          ],
          "explanation": "Suporte precisa explicar bloqueio.",
          "forbidden_terms": [
            "erro bruto"
          ],
          "platform_id": "customer_ops",
          "remediation": "criar mensagem humana"
        }
      ],
      "failure_impact": "Venda e suporte ficam baseados em regras dispersas.",
      "owner_domain": "business",
      "purpose": "Garantir que produto, plano, quota e bloqueio venham de Business.",
      "scenario_id": "business-sellable-control",
      "success_artifacts": [
        "entitlement",
        "usage",
        "invoice",
        "diagnostic"
      ],
      "title": "Produto vendavel com gate Business"
    },
    {
      "assertions": [
        {
          "assertion_id": "screen",
          "expected_terms": [
            "screen",
            "view",
            "panel"
          ],
          "explanation": "MCP deve criar instancia de tela.",
          "forbidden_terms": [
            "fonte paralela"
          ],
          "platform_id": "mcps",
          "remediation": "criar viewInstance"
        },
        {
          "assertion_id": "hashes",
          "expected_terms": [
            "source",
            "hash",
            "records"
          ],
          "explanation": "Hashes devem existir.",
          "forbidden_terms": [
            "mismatch"
          ],
          "platform_id": "mcps",
          "remediation": "gerar source hashes"
        },
        {
          "assertion_id": "ui",
          "expected_terms": [
            "panelready",
            "samesource"
          ],
          "explanation": "UI deve renderizar mesmo contrato.",
          "forbidden_terms": [
            "false"
          ],
          "platform_id": "ui",
          "remediation": "validar UI"
        },
        {
          "assertion_id": "docs",
          "expected_terms": [
            "contract",
            "schema",
            "version"
          ],
          "explanation": "Docs deve registrar contrato.",
          "forbidden_terms": [
            "sem versao"
          ],
          "platform_id": "docs",
          "remediation": "publicar contrato"
        }
      ],
      "failure_impact": "Painel e GPT podem divergir e quebrar confianca humana.",
      "owner_domain": "mcp",
      "purpose": "Garantir que screenData, explicacao GPT e evidencia tenham hashes compatíveis.",
      "scenario_id": "panel-gpt-same-source",
      "success_artifacts": [
        "viewInstance",
        "sourcePayloadHash",
        "sourceRecordsHash",
        "contractVersion"
      ],
      "title": "Painel e GPT compartilham a mesma fonte"
    },
    {
      "assertions": [
        {
          "assertion_id": "roles",
          "expected_terms": [
            "role",
            "scope",
            "permission"
          ],
          "explanation": "Papeis precisam estar mapeados.",
          "forbidden_terms": [
            "allow all"
          ],
          "platform_id": "identity",
          "remediation": "criar matriz RBAC"
        },
        {
          "assertion_id": "deny",
          "expected_terms": [
            "deny",
            "403",
            "forbidden"
          ],
          "explanation": "Negacao precisa ser testada.",
          "forbidden_terms": [
            "sem negacao"
          ],
          "platform_id": "identity",
          "remediation": "criar teste deny"
        },
        {
          "assertion_id": "audit",
          "expected_terms": [
            "audit",
            "trace"
          ],
          "explanation": "Decisao precisa ser auditavel.",
          "forbidden_terms": [
            "sem audit"
          ],
          "platform_id": "compliance",
          "remediation": "registrar auditId"
        }
      ],
      "failure_impact": "Permissao fica insegura e suporte nao consegue explicar negacao.",
      "owner_domain": "identity",
      "purpose": "Provar tanto allow quanto deny para papel, escopo e tenant.",
      "scenario_id": "identity-rbac-negative-path",
      "success_artifacts": [
        "matriz RBAC",
        "deny evidence",
        "auditId"
      ],
      "title": "RBAC com caminho negado provado"
    },
    {
      "assertions": [
        {
          "assertion_id": "plugin",
          "expected_terms": [
            "plugin",
            "cloudflare",
            "esperada"
          ],
          "explanation": "Plugin deve ser premissa, nao blocker.",
          "forbidden_terms": [
            "blocker"
          ],
          "platform_id": "integracoes",
          "remediation": "registrar tentativa"
        },
        {
          "assertion_id": "wrangler",
          "expected_terms": [
            "wrangler",
            "deploy",
            "secret"
          ],
          "explanation": "Trabalho real precisa usar wrangler.",
          "forbidden_terms": [
            "sem wrangler"
          ],
          "platform_id": "integracoes",
          "remediation": "validar wrangler"
        },
        {
          "assertion_id": "runtime",
          "expected_terms": [
            "route",
            "binding",
            "health"
          ],
          "explanation": "Runtime precisa ter rotas e bindings.",
          "forbidden_terms": [
            "missing"
          ],
          "platform_id": "integracoes",
          "remediation": "validar rota/binding"
        }
      ],
      "failure_impact": "Diagnostico Cloudflare fica preso em plugin experimental.",
      "owner_domain": "cloud",
      "purpose": "Tratar plugin como teste inicial e usar wrangler para trabalho real.",
      "scenario_id": "cloudflare-wrangler-not-plugin",
      "success_artifacts": [
        "plugin attempt",
        "wrangler status",
        "route health"
      ],
      "title": "Cloudflare opera por wrangler"
    },
    {
      "assertions": [
        {
          "assertion_id": "ticket",
          "expected_terms": [
            "ticket",
            "incident",
            "open"
          ],
          "explanation": "Ticket precisa existir.",
          "forbidden_terms": [
            "sem ticket"
          ],
          "platform_id": "customer_ops",
          "remediation": "abrir incidente"
        },
        {
          "assertion_id": "handoff",
          "expected_terms": [
            "handoff",
            "owner",
            "sla"
          ],
          "explanation": "Responsavel precisa ser definido.",
          "forbidden_terms": [
            "sem owner"
          ],
          "platform_id": "customer_ops",
          "remediation": "encaminhar"
        },
        {
          "assertion_id": "resolution",
          "expected_terms": [
            "resolved",
            "evidence"
          ],
          "explanation": "Resolucao precisa ter evidencia.",
          "forbidden_terms": [
            "sem fechamento"
          ],
          "platform_id": "customer_ops",
          "remediation": "fechar incidente"
        },
        {
          "assertion_id": "audit",
          "expected_terms": [
            "audit",
            "trace"
          ],
          "explanation": "Ciclo precisa ser auditavel.",
          "forbidden_terms": [
            "sem audit"
          ],
          "platform_id": "compliance",
          "remediation": "registrar audit"
        }
      ],
      "failure_impact": "Suporte perde contexto e repete falhas.",
      "owner_domain": "support",
      "purpose": "Atendimento precisa abrir, classificar, encaminhar, resolver e auditar incidente.",
      "scenario_id": "customer-ops-support-cycle",
      "success_artifacts": [
        "ticket",
        "owner",
        "resolution",
        "audit"
      ],
      "title": "Suporte fecha ciclo de incidente"
    },
    {
      "assertions": [
        {
          "assertion_id": "version",
          "expected_terms": [
            "contractversion",
            "schemaversion"
          ],
          "explanation": "Versao precisa ser explicita.",
          "forbidden_terms": [
            "sem versao"
          ],
          "platform_id": "platform_base",
          "remediation": "gerar contrato"
        },
        {
          "assertion_id": "smoke",
          "expected_terms": [
            "smoke",
            "readiness"
          ],
          "explanation": "Smoke precisa rodar.",
          "forbidden_terms": [
            "sem smoke"
          ],
          "platform_id": "mcps",
          "remediation": "executar smoke"
        },
        {
          "assertion_id": "rollback",
          "expected_terms": [
            "rollback",
            "previous"
          ],
          "explanation": "Rollback precisa existir.",
          "forbidden_terms": [
            "sem rollback"
          ],
          "platform_id": "platform_base",
          "remediation": "registrar rollback"
        },
        {
          "assertion_id": "docs",
          "expected_terms": [
            "changelog",
            "migration"
          ],
          "explanation": "Mudanca precisa ser documentada.",
          "forbidden_terms": [
            "sem changelog"
          ],
          "platform_id": "docs",
          "remediation": "publicar changelog"
        }
      ],
      "failure_impact": "Mudancas futuras quebram contrato sem reversao clara.",
      "owner_domain": "governance",
      "purpose": "Cada mudanca precisa de contrato, smoke, rollback e changelog.",
      "scenario_id": "release-version-rollback",
      "success_artifacts": [
        "contractVersion",
        "smoke",
        "rollback",
        "changelog"
      ],
      "title": "Release tem versao, regressao e rollback"
    }
  ],
  "summary": [
    "Cenarios avaliados: 8",
    "Cenarios prontos/uteis: 0",
    "Cenarios bloqueados: 7",
    "Score medio de cenario: 21"
  ]
}