Testar primeiro uma mudança de concessão
Remova ou adicione uma concessão em uma cópia da política, teste-a e leia cada veredito antes e depois da mudança.
drills.counterfactual
Remova ou adicione uma concessão em uma cópia da política, teste-a e leia cada veredito antes e depois da mudança.
drills.counterfactualPasse ações de agentes, hashes de conteúdo, checagens de API, DNS, webhooks, chamadas de LLM e commits git pela Intramedial. Receba um recibo assinado que todos verificam – sem confiar em nós.
Você está prestes a remover uma concessão e quer saber qual agente perde o quê. O Intralock avalia cada teste contra a política como está e contra uma cópia com a sua mudança aplicada. Nenhum modelo roda, e nada no workspace muda.
policies.propose o menor que funciona; um escopo Tools mais amplo também servepolicies.propose, que a execução de um drill exigeO código lê a chave de INTRAMEDIAL_KEY. Guarde-a no seu shell ou no seu cofre de segredos, nunca em um arquivo que você faz commit. Chamadas que exigem uma pessoa logada não podem usar chave: o console as faz.
pack_counterfactual é embutido. Ele remove a concessão g-house e testa did:a lendo repo:main, para você ver o formato da resposta antes de escrever o seu. Com um workflow de drill vinculado e sem forceInline, a resposta é queued: true com um workflowId.
drills.counterfactualdrills-counterfactual
curl -sS -X POST https://api.intramedial.com/api/v1/acp/drills/counterfactual \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"packId": "pack_counterfactual"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/drills/counterfactual", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
packId: "pack_counterfactual",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/drills/counterfactual",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"packId": "pack_counterfactual",
},
timeout=30,
)
print(res.status_code, res.json())Cada teste tem um before e um after. Um allow nomeia seu grantId; um deny dá um reason como no_grant ou cycle e um detail. before e after descrevem o primeiro teste.
{
"packId": "pack_counterfactual",
"dropped": "g-house",
"droppedIds": ["g-house"],
"added": [],
"probes": [
{
"probe": { "principal": "did:a", "resource": "repo:main", "action": "read", "nowMs": 1793523600000 },
"before": { "allow": true, "grantId": "g-house", "protectedClass": "none" },
"after": { "allow": false, "reason": "no_grant", "detail": "did:a lacks read on repo:main" }
}
],
"llm": false
}Envie grantIds a remover, ou addGrants para concessões hipotéticas, e os probes que importam. Uma concessão hipotética que formaria um ciclo é pulada, não aplicada.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/drills/counterfactual \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"grantIds": [
"g-house"
],
"probes": [
{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write"
}
]
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/drills/counterfactual", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
grantIds: ["g-house"],
probes: [
{
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "write",
},
],
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/drills/counterfactual",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"grantIds": ["g-house"],
"probes": [
{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
},
],
},
timeout=30,
)
print(res.status_code, res.json())Copiado de: /docs/drills-counterfactual
O livro-razão é somente de acréscimo e selado sob raízes Merkle. A hora de uma entrada é o relógio da própria Intramedial, e um bundle assinado pode ser conferido offline com a chave publicada.
Compile um mandate com apply: false, leia as concessões que ele faria e seu previewDigest, e depois aplique exatamente o que pré-visualizou.
mandates.compileExecute os seis cenários fixos do Intralock, leia o resultado de cada um e defina uma cadência para o drill se repetir sozinho.
drills.frtExecute uma lente instalada sobre os dados que você enviar, leia seus achados e guarde o resultado armazenado com seu digest.
lenses.runUm e-mail curto quando somamos receitas. Nenhum outro e-mail, e você cancela por qualquer mensagem.
Sem conta: 35 chamadas em 7 dias nas rotas attest, com recibos marcados como teste. Cadastre-se quando quiser seguir adiante.