Governança · somente leitura por construção

Política é código.
Não um prompt.

SQAI trata o modelo pelo que ele é: um cliente não confiável. As listas de permissão são fixadas no código quando a ferramenta é construída, verificadas em processo antes de qualquer execução e ausentes do protocolo do modelo. Não há nada a ser negociado com o sistema.

4.574capacidades expostas pelo contrato — todas somente leitura
6concessões na política de um app
1requisição tipada executada

IIO estreitamento, completo

Três camadas. Cada uma só remove.

Toda resposta passa pelo mesmo confinamento. Um contrato fixado por hash define o que existe. Sua política o restringe ao que é permitido. Uma requisição tipada deve caber dentro de ambos.

  1. 01

    O contrato

    4.778 capacidades no runtime fixado; 4.574 expostas a agentes, todas somente leitura. As outras 204 são excluídas por completo — para um modelo, elas não existem.

  2. 02

    Sua política

    Três listas de permissão — allowedSources, allowedFields por fonte, allowedFunctions — fixadas no momento de createSQAI(). Funções têm padrão "all-readonly".

  3. 03

    Uma requisição

    Um plano tipado, validado contra o contrato e verificado contra a política em processo — antes da execução, nunca depois.

Camada 01 · O contrato4.574 expostas · somente leitura
Camada 02 · Sua política6 concessões
allowedSourcesorders
allowedFieldsregionrevenueunit_price
allowedFunctionsstats.medianfinance.npv
Camada 03 · Uma requisição1 plano tipado

QuerySpec v1 · median(revenue) by region · policy ✓

contract_hash sha256:79f1c5a6c7164e7e9e1750e70a5c03292fa87eb52d8148a740c06695924be9a1

Só estreita.

Uma política pode reduzir a superfície; nada pode expandi-la. Nomear uma capacidade que o contrato não expõe faz createSQAI() lançar unsupported_operation na construção — o app falha antes de qualquer agente se conectar.

E a entrada de ferramenta do modelo não carrega nenhum campo allowed*. A política não está no protocolo, portanto não há nada que um prompt — ou uma injeção — possa ampliar.

IIIA política, em código

Escrita uma vez. Verificada sempre.

A maioria das ferramentas de governança fica ao lado do caminho de dados e o observa. A política do SQAI fica dentro do caminho: três listas de permissão no construtor, aplicadas em processo antes de cada execução.

const sqai = createSQAI({
  sources: { orders },

  // policy — fixed here, invisible to the model
  allowedSources: ['orders'],
  allowedFields: {
    orders: ['region', 'revenue', 'unit_price'],
  },
  // functions default: 'all-readonly'
  allowedFunctions: [
    'stats.median', 'finance.npv',
  ],
});
allowedSources
As fontes registradas que um plano pode nomear. Qualquer outra retorna policy_denied_source.
allowedFields
Colunas, por fonte. Um plano que toca qualquer outra coluna retorna policy_denied_field.
allowedFunctions
As funções somente leitura que um plano pode chamar — padrão "all-readonly". Qualquer outra retorna policy_denied_function.
tool input
Não carrega nenhum campo allowed*. O modelo nunca vê a política, portanto nunca pode enviar uma mais ampla.

O registro de negações

Negações são dados, não exceções. Cada uma carrega um código estável que um agente pode ler — e nenhuma admite nova tentativa, portanto um loop não consegue desgastar a política.

na construção

unsupported_operation

A política nomeia uma capacidade que o contrato não expõe. A construção lança exceção; o app falha antes de qualquer agente se conectar.

no momento da requisição

policy_denied_source

O plano nomeia uma fonte fora de allowedSources.

policy_denied_field

O plano toca uma coluna fora de allowedFields para aquela fonte.

policy_denied_function

O plano chama uma função fora de allowedFunctions.

source: "sqai"toda negação de política chega como um resultado estruturado e não repetível. As ferramentas nunca lançam exceções.

IVCustódia

Resultados retidos, não armazenados.

Um conjunto completo de resultados nunca chega ao contexto do modelo. Ele é depositado em um repositório governado e referenciado por id; o modelo recebe uma amostra declarada.

O repositório de resultados

Repositório governado · TTL 15 min

result_id
16 bytes aleatórios, base64url. Imprevisível, nunca sequencial.
authorization
Vinculado ao tenant. Um tenant incorreto recebe result_not_found — o repositório nunca confirma a existência.
ttl
15 minutos. Após isso, a entrada é removida.
capacity
No máximo 256 resultados — 64 MB no total, 16 MB por tenant.

O repositório guarda o resultado. O modelo lê uma amostra e o declara.

Limites de contexto do modelo

defaultLimit100limite de linhas aplicado quando um plano não define um
maxExecutionRows1.000teto absoluto de linhas retornadas por qualquer execução
maxRowsToModel25o máximo de linhas que um contexto de modelo recebe
maxCellsToModel250o máximo de células que um contexto de modelo recebe
maxBytesToModel32.000o máximo de bytes de dados de resultado que um modelo recebe

O truncamento é sempre declarado no resultado. Linhas parciais nunca são exibidas — uma linha chega completa ou não chega.

Auditoria

17%das organizações conseguem reconstruir a sequência completa de chamadas de ferramentas de um agente após o fato

O GDPR Artigo 30 e o SOC 2 CC7.2 exigem exatamente esses registros.

Toda resposta do SQAI já carrega sua própria reconstrução:

plan_hash · invocation_hash · computation_hash · contract_hash

A reprodução é uma consulta, não uma investigação. Como funciona a reprodução

VIPerguntas

Governança, perguntada diretamente

O modelo pode ampliar seu próprio acesso?

Não. A política é fixada no momento de createSQAI() e verificada em processo antes da execução. A entrada de ferramenta do modelo não contém nenhum campo allowed*, portanto não há nada no protocolo para ampliar — uma solicitação fora da política retorna um resultado estruturado policy_denied.

Somente leitura é uma flag que algo poderia contornar?

Não é uma flag. O contrato exposto contém 4.574 capacidades somente leitura; um caminho de escrita está ausente por construção, não desativado. Injeção de prompt pode alterar o que um modelo solicita — não pode adicionar capacidades a um contrato fixado.

Quais registros existem para uma revisão do GDPR Artigo 30 ou SOC 2 CC7.2?

Cada resultado carrega plan_hash, invocation_hash, computation_hash e contract_hash. O cálculo exato pode ser reproduzido e verificado contra esses hashes muito tempo depois do fato.

Onde ficam os dados de resultado após uma consulta?

Em um repositório de resultados autorizado por tenant: os ids têm 16 bytes aleatórios, as entradas expiram após 15 minutos, e o repositório é limitado a 64 MB no total e 16 MB por tenant. O contexto do modelo recebe no máximo 25 linhas, 250 células e 32.000 bytes — truncamento sempre declarado.

VIIPróximo

Governe a resposta.

Traga um schema e uma questão de conformidade. Mostraremos a política que a responde.