リソースにブレームを付け、イベントをリプレイする
リソースに触れた人を新しい順に一覧し、1つのイベントをMerkle証明付きで再構築します。
ledger.blame
リソースに触れた人を新しい順に一覧し、1つのイベントをMerkle証明付きで再構築します。
ledger.blame共有リソースに変更があり、最後に触れたのが誰かを知りたい場合です。ブレームはそのリソースの追記専用台帳をたどり、リプレイは1つのイベントを再構築します。
コードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
正確なリソースを送ります。照合はイベントのresourceまたはsubjectとの一致であり、テキスト検索ではありません。触れた記録は新しい順に返ります。
standingは、再構築された内容から格付けされます。ledger.blameledger-blamecurl -sS -X POST https://api.intramedial.com/api/v1/acp/ledger/blame \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"resource": "repo:payments/main"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/ledger/blame", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
resource: "repo:payments/main",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/ledger/blame",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"resource": "repo:payments/main",
},
timeout=30,
)
print(res.status_code, res.json()){
"projection": "blame",
"resource": "repo:payments/main",
"events": [
{
"id": "evt_90c1",
"kind": "coordination.admission",
"actor": "did:web:acme.example:agent:release",
"at": "2026-10-31T22:04:11.000Z"
}
],
"lastTouch": {
"actor": "did:web:acme.example:agent:release",
"at": "2026-10-31T22:04:11.000Z"
},
"unknown": [],
"why": "resource or subject equals the given resource"
}イベントのidを送ります。Merkle証明付きで再構築され、保存されたルートと一致しないルートは、立会いの主張を取り除きます。
curl -sS -X POST https://api.intramedial.com/api/v1/acp/ledger/replay \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "evt_90c1"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/ledger/replay", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "evt_90c1",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/ledger/replay",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"id": "evt_90c1",
},
timeout=30,
)
print(res.status_code, res.json())転載元の資料: /docs/ledger-blame
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
監査ログをMerkleルート付きの署名済みバンドルにシールし、公開鍵を使ってオフラインで確認します。
ledger.bundles-snapshotEU AI Act第12条のエクスポートを実行し、保有する証拠を統制にマッピングしてギャップを示すカバレッジレポートを読み取ります。
compliance.packMCPゲートウェイが確認した呼び出し元を読み取り、1つをIDとして承認するか、シャドーとして追跡し続けます。
mcp.shadowidentity.enrollレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。