Playground
Coloque um produto seu no ledger.
Vincule um dos templates publicados como o seu produto em rascunho, rode os cenários que o manifesto declara, inspecione as instâncias que eles criaram e leia o boletim que diz o que foi provado sobre o validador — e o que não foi.
quadra/products.draft, que é o único verbo de implantação que uma credencial de avaliação carrega. Pedir acesso.Credenciais
sem conexãoDestino https://api-sbx.sonacore.com.br. As mesmas credenciais do playground — elas ficam no armazenamento local deste navegador e são enviadas só para o endpoint de token.
1 · Vincular um produto em rascunho
DRAFTUm vínculo em rascunho existe só no ambiente de avaliação: ele não passou por nenhuma execução de conformidade nem pela bateria adversarial, e o único dinheiro que pode tocar é o da torneira, em trilhos simulados. O estado é imposto, não escolhido — não há parâmetro para ele.
Um manifesto e um validador são um par: esta página só consegue fornecer o manifesto de um deles. Os outros dois templates da lista são produtos do catálogo, com manifestos próprios e máquinas de estado próprias — vinculá-los com este manifesto passaria em todas as validações de carga e seria recusado na cadeia em cada gasto. Quando um operador vincula um deles para o seu tenant, ele aparece na lista abaixo e você pode ler o plano e o boletim.
2 · Rodar os cenários declarados
O plano abaixo é o mesmo que uma execução de conformidade deriva do manifesto — uma função pura dele, com uma requisição pronta por passo. Esta página executa os passos; o endpoint não executa nada.
3 · Inspecionar uma instância
Cada transição da instância, na ordem em que a cadeia a registrou, com o datum decodificado pelo IR do próprio produto. Linhas gastas e vivas aparecem juntas — spent é como se distingue o estado atual do histórico.
4 · Ler o boletim
A certificação é um quarto documento endereçado por conteúdo que referencia o relatório do portão de compilação, a transcrição de conformidade e o boletim da bateria por hash, e carrega uma assinatura da plataforma mais uma contra-assinatura humana que a plataforma não pode emitir.
O que um ambiente local não consegue provar
Adicione ?dev à URL desta página e o console passa a apontar para http://localhost:8080. Isso é útil e tem um limite que vale dizer em voz alta: um ambiente local não vincula nenhum tenant. QUADRA_ENV=local sintetiza uma identidade com todos os escopos e sem tenant algum, então o ambiente responde pelo tenant e a credencial não decide nada. Duas consequências:
- A barreira de escopo é inerte. Uma identidade sintética carrega todos os escopos, inclusive
quadra/products.draft. Localmente qualquer chamada passa; é no ambiente hospedado que a separação existe. - O isolamento entre tenants não é exercitável. Sem uma credencial que nomeie um tenant, não há a quem confinar as leituras. As linhas continuam separadas por chave de partição — um produto de outro tenant é inendereçável, não recusado — mas o que decide o tenant localmente é a variável de ambiente, não quem chamou.
Isso não é um defeito do ambiente local; é o que ele é. Só não trate um roteiro verde ali como prova de isolamento — essa prova só existe no ambiente de avaliação hospedado.
git clone git@github.com:Banco-Sona/sona-core.git
cd sona-core && ./scripts/devlocal.sh up
# depois abra esta página com ?devPor que um passo verde não é o código HTTP
As escritas de produto são obrigação primeiro: a linha é gravada antes de a transação ser submetida. Uma ação que o validador recusa responde 200 — e é recusada na cadeia um instante depois. Então o console não julga um passo pelo código: ele dirige a rota e depois consulta a linha do tempo da instância até o estado que o manifesto declarou para aquele passo aparecer.
Um tempo esgotado aparece como recusado, e deliberadamente não como falhou: não é possível distinguir uma recusa de uma cabeça muito lenta, e afirmar qual das duas foi seria um palpite vestido de resultado. A própria resposta de GET /v1/products/{id}/scenarios carrega essa regra em driving, e o console a renderiza em vez de reescrevê-la.
Um manifesto e um validador são um par
O console vincula um template — o cofre — e não três, porque um manifesto descreve a máquina de estados de um validador específico. Vincular o manifesto do cofre contra a poupança travada funciona: passa no carregador, escreve a linha, deriva um endereço e planeja dois cenários limpos. E depois todo gasto é recusado na cadeia, porque o script implementa outra máquina.
É exatamente por isso que existe uma execução de conformidade: um manifesto é uma declaração, e nada além da cadeia a confere contra o script. Um produto do catálogo que um operador vincular para o seu tenant aparece na lista do console, e selecioná-lo mostra o plano e o boletim dele — que é onde vale a pena ler os dois.
E dois produtos do catálogo aparecem sem poder rodar
A transferência condicional e a poupança travada precisam, na criação, de um campo de 32 bytes que é a chave de verificação de uma conta real — para onde a multa vai, quem é o beneficiário, quem é o oráculo. Nenhuma leitura publica uma chave de conta, e essa foi uma decisão deliberada: publicar chaves por uma leitura tornaria o material criptográfico de todo tenant uma superfície pública para resolver um campo.
Uma chave sintetizada com 32 bytes zerados codifica perfeitamente e produz uma instância que ninguém consegue assinar — ou pior, um encerramento que paga o saldo inteiro para uma chave que ninguém tem. Então o plano marca esses passos como não executáveis, nomeia o parâmetro e o motivo, e não inventa um valor. O cofre declara um único parâmetro na criação — o valor — e por isso roda inteiro daqui.
O boletim, e o que ele não afirma
Uma certificação é um documento endereçado por conteúdo que referencia três outros por hash: o relatório do portão de compilação, a transcrição de conformidade e o boletim da bateria adversarial. Cada um carrega, dentro do corpo que foi assinado, as suas próprias afirmações e ressalvas — o que prova e o que explicitamente não prova. Elas estão no corpo por um motivo mecânico: um renderizador não pode omitir o que não controla.
Cada documento volta byte a byte, sem nada removido, porque o seu recurso é recalcular o hash e comparar com o que está no corpo assinado. E os vereditos por classe de ataque são cinco, não dois: inconclusivo não é aprovação nem reprovação — significa que a classe não pôde ser julgada, e ele reprova o boletim inteiro. Cinza não é verde.
404 CERTIFICATION_NOT_FOUND no boletim, com a explicação. Os produtos do catálogo, certificados retroativamente, é onde o boletim tem conteúdo.