drills.counterfactual模块 34Counterfactual simulation
在做出策略变更之前,先问问它会产生什么影响:用去掉或添加的许可项重新运行选定的请求,看看每个答案如何变化。
drills.counterfactual 用 Intralock 对探测请求评估两次:一次针对实时策略快照,一次针对去掉许可项、添加许可项或清除租约的副本。每个探测返回 before 和 after。不运行模型,也不改变任何许可项、租约或授权。
drills.counterfactual模块 34在做出策略变更之前,先问问它会产生什么影响:用去掉或添加的许可项重新运行选定的请求,看看每个答案如何变化。
drills.counterfactual 用 Intralock 对探测请求评估两次:一次针对实时策略快照,一次针对去掉许可项、添加许可项或清除租约的副本。每个探测返回 before 和 after。不运行模型,也不改变任何许可项、租约或授权。
packIdpack_counterfactual 去掉许可项 g-house,并探测 did:a 读取 repo:main。grantIdsgrantId 指定单个许可项。发送 probes,或以 actorDid、resource 和 action 发送一个请求。不发送时,默认探测是 did:a 读取 repo:main,即标准包中的那个。
此模块的调用会改变真实状态或访问外部服务,因此共享演示不会运行它们。请登录后在您自己的工作区中运行。 drills.counterfactual 文档
此模块的调用会改变真实状态或访问外部服务,因此共享演示不会运行它们。请登录后在您自己的工作区中运行。
一个符合 API 接受格式的请求,以及模块返回格式的示例响应。
POST /api/v1/acp/drills/counterfactual Authorization: Bearer av_workspace_•••• Content-Type: { : }
在去掉 g-house 之前,探测使用它的智能体。每个 after 显示该智能体仍有许可项,还是会以 no_grant 被拒绝。
在同一个场景中添加更窄的许可项并去掉通配符,然后探测您想保留的资源。
在副本中清除某个资源上的租约,看看拒绝是因为 lease_held 还是缺少许可项。
模块是对一件狭窄事情的强力保证。请仅在其确切范围内依赖它。
allow: true 带有 grantId 和 protectedClass。拒绝带有 no_grant、lease_held、protected_class、cycle 或 stampede 之一,以及一个 detail。
使用工作区 API 密钥作为 Bearer 令牌进行认证。基础 URL 为 https://api.intramedial.com。
/api/v1/acp/drills/counterfactual对假设性变更前后的探测进行评估。coordination.drills.counterfactualaddGrantsprincipal、action、resource 以及可选的 id。dropLeasestrue 会在副本中清除被探测资源上的租约。dropLeaseResourcesprobesactorDid 或 principal、resource、action 以及可选的 nowMs。beforeallow,或带有 reason 和 detail 的拒绝。afterresult 重复它。droppedIdsadded 列出所添加许可项的 ID。forceInline用 grantIds 指定要去掉的许可项,用 addGrants 添加,用 dropLeases 或 dropLeaseResources 清除租约。packId 加载已存储的场景,pack_counterfactual 是内置的。
每个探测分别针对当前快照和改动后的副本进行评估。会形成环的假设性许可项会被跳过,而不是当作错误。
响应被存储为工作区最近一次 counterfactual 演练。许可项、租约和授权保持原样。
绑定了演练工作流且没有 forceInline 时,由工作流接手,响应为带有 workflowId 的 queued: true。
{
"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"
}
}
],
"before": {
"allow": true,
"grantId": "g-house",
"protectedClass": "none"
},
"after": {
"allow": false,
"reason": "no_grant",
"detail": "did:a lacks read on repo:main"
},
"result": {
"allow": false,
"reason": "no_grant",
"detail": "did:a lacks read on repo:main"
},
"llm": false
}把已存储的演练及每个探测的 before 和 after,附在淘汰该许可项的变更请求上。
ledger.blame 中查看。mandates.compile 中编译并审阅授权。drills.frt 运行固定的参考场景。after 就是准入将给出的答案。准入还会应用隔离、停止开关和确认下限,而本检查会跳过它们。pack_counterfactual 去掉 g-house 并探测 did:a 读取 repo:main。来自注册表的包也可以用同样的方式带有 dropGrantIds、addGrants、dropLeaseResources 和 probes。
运行反事实演练需要 policies.propose,所有演练都是如此。
counterfactual 演练。新的运行会替换它。packId 不会加载任何内容,请求会按您发送的字段运行。before、after 和 result 描述第一个探测;其余的请读取 probes。conflict-audit.latest33