diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/1-invocation.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/1-invocation.json new file mode 100644 index 0000000..c6386ec --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/1-invocation.json @@ -0,0 +1,16 @@ +{ + "surface": "Proofable hosted MCP", + "endpoint": "https://mcp.proofable.me/mcp", + "transport": "MCP streamable HTTP, JSON-RPC 2.0", + "method": "tools/call", + "tool": "proofable_job_create", + "argumentsFile": "2-request-arguments.json", + "mcpVersion": "0.1.7", + "serviceRevision": "18433a48d74af913550de7a018f02c7c724cc1c9", + "ranAt": "2026-10-24T17:47:33Z", + "principal": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "agentId": "aaif-authority-review-prod-fresh2", + "agentWallet": "0x765289f0902dc872e631bb16595b8fcf14b3b489", + "serviceSigner": "0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec", + "credential": "omitted" +} diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/2-request-arguments.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/2-request-arguments.json new file mode 100644 index 0000000..2f93701 --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/2-request-arguments.json @@ -0,0 +1,13 @@ +{ + "agentId": "aaif-authority-review-prod-fresh2", + "agentWallet": "0x765289f0902dc872e631bb16595b8fcf14b3b489", + "prompt": "Fetch this exact URL once and reply with its visible text verbatim and nothing else: https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88", + "acceptance": { + "criterion": "target-ack", + "criteria": [ + "target-ack" + ], + "mode": "text" + }, + "runNowFirst": true +} \ No newline at end of file diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/3-create-response.txt b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/3-create-response.txt new file mode 100644 index 0000000..b846bdd --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/3-create-response.txt @@ -0,0 +1,3 @@ +event: message +data: {"result":{"content":[{"type":"text","text":"{\n \"success\": true,\n \"jobId\": \"d259c7cc-0701-4624-a148-77b149f84e06\",\n \"qHash\": null,\n \"status\": \"pending\",\n \"authorityDecision\": {\n \"outcome\": \"ALLOW\",\n \"qHash\": \"0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11\",\n \"visibility\": \"private\"\n },\n \"authorityDecisionQHash\": \"0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11\",\n \"recurring\": false,\n \"recurrenceId\": null,\n \"proofUrl\": null\n}"}],"structuredContent":{"success":true,"jobId":"d259c7cc-0701-4624-a148-77b149f84e06","qHash":null,"status":"pending","authorityDecision":{"outcome":"ALLOW","qHash":"0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11","visibility":"private"},"authorityDecisionQHash":"0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11","recurring":false,"recurrenceId":null,"proofUrl":null},"isError":false},"jsonrpc":"2.0","id":1} + diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/4-dispatch-decision.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/4-dispatch-decision.json new file mode 100644 index 0000000..39a943f --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/4-dispatch-decision.json @@ -0,0 +1,130 @@ +{ + "success": true, + "data": { + "proofs": [ + { + "id": "f810f2ef-a29c-4c24-80ec-4702f188695e", + "qHash": "0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11", + "walletAddress": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "did": "did:pkh:eip155:8453:0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "chainId": 8453, + "chain": "eip155:8453", + "transport": "offchain_only", + "signedTimestamp": 1792864052261, + "status": "verified", + "verifierIds": [ + "ownership-basic" + ], + "verifiedVerifiers": [ + { + "verifierId": "ownership-basic", + "verified": true, + "data": { + "owner": "0x0d...ca15", + "reference": { + "type": "agent-job-authority-decision", + "id": "aaif-authority-review-prod-fresh2:1792864052261" + }, + "verifierContentHash": "0x5e9ac8d77e024984e1275ce8cf7825f52d3674cd32a80ce03a4e61ba05d0c2e6", + "contentHash": "0x5e9ac8d77e024984e1275ce8cf7825f52d3674cd32a80ce03a4e61ba05d0c2e6", + "timestamp": 1792864052370 + }, + "status": "ownership_verified" + } + ], + "meta": { + "title": "Job authority decision — ALLOW", + "contentText": "Job dispatch ALLOW.", + "tags": [ + "agent-job-authority-decision", + "authority:allow", + "agent:aaif-authority-review-prod-fresh2" + ] + }, + "createdAt": 1792864052267, + "completedAt": 1792864052371, + "options": { + "enableIpfs": false, + "publicDisplay": false, + "storeOriginalContent": true, + "privacyLevel": "private", + "disclosePortableProof": false, + "view": { + "crosschain": { + "enabled": false, + "targetChains": [] + }, + "storage": { + "ipfs": false + }, + "content": { + "public": false, + "storeOriginal": true + }, + "privacy": { + "level": "private", + "meta": {} + } + } + }, + "metrics": { + "totalDurationMs": 105, + "durationMs": 105, + "requestCount": 1, + "lastAccessed": 1792864055538 + }, + "publicContent": { + "content": "{\"version\":1,\"kind\":\"agent-job-authority-decision\",\"action\":\"job.dispatch\",\"outcome\":\"ALLOW\",\"reason\":null,\"risk\":\"medium\",\"policyVersion\":\"authority-policy.v2\",\"principal\":\"0x0d4e513a3a7eb92bab65c97786c67b198d9dca15\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"delegationQHash\":\"0x51ce38eabe8bc1b540911a8f483581da16981d88f3a4637d93958d7f26e19f2f\",\"agentIdentityQHash\":\"0x40a5a0a052e2318dae7d3e2e4726739ff75cfd6475e464de12eebe714ca65ddb\",\"argsDigest\":\"245cd3cefe248e532ba867b8735484485c26d3809ad909ef47348f449b0b7b07\",\"jobId\":null,\"requestedAtMs\":1792864052261,\"effect\":\"none\"}", + "contentType": "text/markdown", + "storedAt": 1792864052270, + "contentLength": 639, + "privacyLevel": "private" + }, + "lastUpdated": 1792864052418, + "type": "proof", + "viewer": { + "role": "owner", + "isOwner": true, + "hasGrant": false, + "authenticated": true, + "authType": "session" + }, + "portableProof": { + "qHash": "0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11", + "did": "did:pkh:eip155:8453:0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec", + "walletAddress": "0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec", + "verifierIds": [ + "ownership-basic" + ], + "data": { + "owner": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "content": "{\"version\":1,\"kind\":\"agent-job-authority-decision\",\"action\":\"job.dispatch\",\"outcome\":\"ALLOW\",\"reason\":null,\"risk\":\"medium\",\"policyVersion\":\"authority-policy.v2\",\"principal\":\"0x0d4e513a3a7eb92bab65c97786c67b198d9dca15\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"delegationQHash\":\"0x51ce38eabe8bc1b540911a8f483581da16981d88f3a4637d93958d7f26e19f2f\",\"agentIdentityQHash\":\"0x40a5a0a052e2318dae7d3e2e4726739ff75cfd6475e464de12eebe714ca65ddb\",\"argsDigest\":\"245cd3cefe248e532ba867b8735484485c26d3809ad909ef47348f449b0b7b07\",\"jobId\":null,\"requestedAtMs\":1792864052261,\"effect\":\"none\"}", + "reference": { + "type": "agent-job-authority-decision", + "id": "aaif-authority-review-prod-fresh2:1792864052261" + } + }, + "signedTimestamp": 1792864052261, + "chainId": 8453, + "signature": "0x9d68b6d1597e9f7b25609a9536a8591fa4f4695ab4606540c4169a7c4502e9e935ba7abac303f2ef16e0b71a5f45cc5b68adf469f168fb3286bf6acc3c71cc9c1b", + "signatureMethod": "eip191" + }, + "contentLength": 639 + } + ], + "resolved": { + "identifier": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "walletAddress": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "did": "did:pkh:eip155:8453:0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "idType": "wallet", + "chain": "eip155:8453" + }, + "pagination": { + "limit": 15, + "offset": 0, + "totalCount": null, + "hasMore": false, + "nextOffset": null + } + } +} \ No newline at end of file diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/5-job-record.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/5-job-record.json new file mode 100644 index 0000000..f7783d0 --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/5-job-record.json @@ -0,0 +1,186 @@ +{ + "jobId": "d259c7cc-0701-4624-a148-77b149f84e06", + "runId": "d259c7cc-0701-4624-a148-77b149f84e06", + "qHash": "0xc21e33aa6f0f0308096b816a2bcce767fc2606bc20afeacc5e4874833e04b2f8", + "terminalQHash": "0xc21e33aa6f0f0308096b816a2bcce767fc2606bc20afeacc5e4874833e04b2f8", + "status": "completed", + "source": "redis", + "agentWallet": "0x765289f0902dc872e631bb16595b8fcf14b3b489", + "agentId": "aaif-authority-review-prod-fresh2", + "model": null, + "provider": null, + "prompt": "Fetch this exact URL once and reply with its visible text verbatim and nothing else: https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88", + "systemPrompt": null, + "createdAt": 1792864053741, + "runAtMs": 1792864053741, + "nextRunAt": null, + "startedAt": 1792864053769, + "completedAt": 1792864063824, + "durationMs": 10055, + "recurrenceId": null, + "runNumber": null, + "schedule": { + "type": "once", + "runAtMs": 1792864053741 + }, + "result": { + "response": "target-ack 6b86b1f0cd3adaced3f1", + "structuredOutput": null, + "model": "default", + "provider": "neus", + "zeus": { + "reasoning": null, + "toolActivity": [ + { + "tool": "proofable_url_fetch", + "args": { + "url": "https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88" + }, + "ok": true, + "at": 1792864060599 + } + ], + "receipts": null + }, + "usage": { + "inputTokens": 5492, + "cachedInputTokens": 4480, + "outputTokens": 133, + "modelCalls": 2 + } + }, + "error": null, + "executionSteps": [ + { + "id": "dispatch", + "label": "Queued for execution", + "status": "completed", + "at": "2026-10-24T17:47:43.824Z" + }, + { + "id": "zeus-runtime", + "label": "Run Agent runtime", + "status": "completed", + "at": "2026-10-24T17:47:43.824Z" + }, + { + "id": "complete", + "label": "Finish and record result", + "status": "completed", + "at": "2026-10-24T17:47:43.824Z" + } + ], + "tags": [ + "agent-job", + "job", + "job:completed", + "receipt:ownership-basic", + "job:schedule_once_1792864053741" + ], + "walletAddress": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "delegationQHash": "0x51ce38eabe8bc1b540911a8f483581da16981d88f3a4637d93958d7f26e19f2f", + "agentIdentityQHash": "0x40a5a0a052e2318dae7d3e2e4726739ff75cfd6475e464de12eebe714ca65ddb", + "runtime": null, + "bindingPolicy": null, + "outputSchema": null, + "acceptance": { + "criterion": "target-ack", + "criteria": [ + "target-ack" + ], + "mode": "text" + }, + "output": null, + "partialResult": null, + "skills": [], + "tools": [], + "requiresReceipt": false, + "origin": null, + "evaluation": { + "version": 2, + "jobId": "d259c7cc-0701-4624-a148-77b149f84e06", + "attempt": 1, + "taskClass": "general", + "agentId": "aaif-authority-review-prod-fresh2", + "agentWallet": "0x765289f0902dc872e631bb16595b8fcf14b3b489", + "model": "z-ai/glm-5.3-flash", + "provider": "neus", + "requestedModel": null, + "requestedProvider": null, + "inferenceFallback": false, + "harness": "operator", + "transport": null, + "policy": { + "policyVersion": null, + "harnessVersion": null + }, + "status": "completed", + "rawTaskSuccess": true, + "accepted": true, + "acceptedOutcome": true, + "evaluator": "job-acceptance", + "failureClass": null, + "authoritySignal": "clean", + "approval": { + "required": false, + "decided": false, + "decision": null, + "decidedBy": null, + "parkedAt": null, + "resolvedAt": null, + "waitMs": null, + "steps": { + "approved": 0, + "declined": 0 + }, + "humanIntervention": false + }, + "checks": [], + "artifacts": [], + "workRefs": [], + "toolActions": { + "count": 1, + "failed": 0 + }, + "retrieval": { + "indexVersion": null, + "proofRefs": null, + "count": null + }, + "cost": { + "tokens": 5625, + "modelCalls": 2, + "currency": null + }, + "durationMs": 10055, + "createdAt": 1792864053741, + "completedAt": 1792864063824, + "qHash": null, + "terminalQHash": null, + "recurrenceId": null, + "runNumber": null, + "evidenceComplete": true + }, + "attempt": 1, + "recoveryCount": null, + "runtimeClass": "general", + "attemptHistory": [ + { + "attemptId": "912a03bc-37b0-4edf-a469-9ae1e0250478", + "attempt": 1, + "stepRound": 0, + "provider": "neus", + "model": "default", + "harness": "operator", + "status": "completed", + "startedAt": 1792864055632, + "actualProvider": "neus", + "actualModel": "z-ai/glm-5.3-flash", + "actualHarness": "operator", + "completedAt": 1792864063796 + } + ], + "devOutcome": null, + "lastHeartbeat": 1792864053787, + "stepRound": null +} \ No newline at end of file diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/6-terminal-receipt.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/6-terminal-receipt.json new file mode 100644 index 0000000..a4ee0bc --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/6-terminal-receipt.json @@ -0,0 +1,132 @@ +{ + "success": true, + "data": { + "proofs": [ + { + "id": "616b93cb-9488-48a8-97ad-a390314843f3", + "qHash": "0xc21e33aa6f0f0308096b816a2bcce767fc2606bc20afeacc5e4874833e04b2f8", + "walletAddress": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "did": "did:pkh:eip155:8453:0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "chainId": 8453, + "chain": "eip155:8453", + "transport": "offchain_only", + "signedTimestamp": 1792864063837, + "status": "verified", + "verifierIds": [ + "ownership-basic" + ], + "verifiedVerifiers": [ + { + "verifierId": "ownership-basic", + "verified": true, + "data": { + "owner": "0x0d...ca15", + "reference": { + "type": "job", + "id": "d259c7cc-0701-4624-a148-77b149f84e06" + }, + "verifierContentHash": "0x9a380c4e5530f3027aa69407c1a02f7e9797ba3c34388722bb04adda1c73eb92", + "contentHash": "0x9a380c4e5530f3027aa69407c1a02f7e9797ba3c34388722bb04adda1c73eb92", + "timestamp": 1792864063940 + }, + "status": "ownership_verified" + } + ], + "meta": { + "title": "Operator Job - Done - Fetch this exact URL once and reply with its visible te…", + "contentText": "Fetch this exact URL once and reply with its visible text verbatim and nothing else: https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88", + "tags": [ + "agent-job", + "job", + "job:completed", + "receipt:ownership-basic", + "job:schedule_once_1792864053741" + ] + }, + "createdAt": 1792864063840, + "completedAt": 1792864063941, + "options": { + "enableIpfs": false, + "publicDisplay": false, + "storeOriginalContent": true, + "privacyLevel": "private", + "disclosePortableProof": false, + "view": { + "crosschain": { + "enabled": false, + "targetChains": [] + }, + "storage": { + "ipfs": false + }, + "content": { + "public": false, + "storeOriginal": true + }, + "privacy": { + "level": "private", + "meta": {} + } + } + }, + "metrics": { + "totalDurationMs": 102, + "durationMs": 102, + "requestCount": 1, + "lastAccessed": 1792864069567 + }, + "publicContent": { + "content": "{\"version\":1,\"kind\":\"agent-job\",\"showContent\":true,\"jobId\":\"d259c7cc-0701-4624-a148-77b149f84e06\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"prompt\":\"Fetch this exact URL once and reply with its visible text verbatim and nothing else: https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88\",\"status\":\"completed\",\"executionSteps\":[{\"id\":\"dispatch\",\"label\":\"Queued for execution\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"},{\"id\":\"zeus-runtime\",\"label\":\"Run Agent runtime\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"},{\"id\":\"complete\",\"label\":\"Finish and record result\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"}],\"createdAt\":\"2026-10-24T17:47:33.741Z\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"schedule\":{\"type\":\"once\",\"runAtMs\":1792864053741},\"runAtMs\":1792864053741,\"result\":{\"response\":\"target-ack 6b86b1f0cd3adaced3f1\",\"structuredOutput\":null,\"model\":\"default\",\"provider\":\"neus\",\"zeus\":{\"reasoning\":null,\"toolActivity\":[{\"tool\":\"proofable_url_fetch\",\"args\":{\"url\":\"https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88\"},\"ok\":true,\"at\":1792864060599}],\"receipts\":null},\"usage\":{\"inputTokens\":5492,\"cachedInputTokens\":4480,\"outputTokens\":133,\"modelCalls\":2}},\"completedAt\":\"2026-10-24T17:47:43.824Z\",\"durationMs\":10055,\"attemptHistory\":[{\"attemptId\":\"912a03bc-37b0-4edf-a469-9ae1e0250478\",\"attempt\":1,\"stepRound\":0,\"provider\":\"neus\",\"model\":\"default\",\"harness\":\"operator\",\"status\":\"completed\",\"startedAt\":1792864055632,\"actualProvider\":\"neus\",\"actualModel\":\"z-ai/glm-5.3-flash\",\"actualHarness\":\"operator\",\"completedAt\":1792864063796}],\"acceptance\":{\"criterion\":\"target-ack\",\"criteria\":[\"target-ack\"],\"mode\":\"text\"},\"evaluation\":{\"version\":2,\"jobId\":\"d259c7cc-0701-4624-a148-77b149f84e06\",\"attempt\":1,\"taskClass\":\"general\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"model\":\"z-ai/glm-5.3-flash\",\"provider\":\"neus\",\"requestedModel\":null,\"requestedProvider\":null,\"inferenceFallback\":false,\"harness\":\"operator\",\"transport\":null,\"policy\":{\"policyVersion\":null,\"harnessVersion\":null},\"status\":\"completed\",\"rawTaskSuccess\":true,\"accepted\":true,\"acceptedOutcome\":true,\"evaluator\":\"job-acceptance\",\"failureClass\":null,\"authoritySignal\":\"clean\",\"approval\":{\"required\":false,\"decided\":false,\"decision\":null,\"decidedBy\":null,\"parkedAt\":null,\"resolvedAt\":null,\"waitMs\":null,\"steps\":{\"approved\":0,\"declined\":0},\"humanIntervention\":false},\"checks\":[],\"artifacts\":[],\"workRefs\":[],\"toolActions\":{\"count\":1,\"failed\":0},\"retrieval\":{\"indexVersion\":null,\"proofRefs\":null,\"count\":null},\"cost\":{\"tokens\":5625,\"modelCalls\":2,\"currency\":null},\"durationMs\":10055,\"createdAt\":1792864053741,\"completedAt\":1792864063824,\"qHash\":null,\"terminalQHash\":null,\"recurrenceId\":null,\"runNumber\":null,\"evidenceComplete\":true}}", + "contentType": "text/markdown", + "storedAt": 1792864063841, + "contentLength": 2811, + "privacyLevel": "private" + }, + "lastUpdated": 1792864063989, + "type": "proof", + "viewer": { + "role": "owner", + "isOwner": true, + "hasGrant": false, + "authenticated": true, + "authType": "session" + }, + "portableProof": { + "qHash": "0xc21e33aa6f0f0308096b816a2bcce767fc2606bc20afeacc5e4874833e04b2f8", + "did": "did:pkh:eip155:8453:0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec", + "walletAddress": "0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec", + "verifierIds": [ + "ownership-basic" + ], + "data": { + "owner": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "content": "{\"version\":1,\"kind\":\"agent-job\",\"showContent\":true,\"jobId\":\"d259c7cc-0701-4624-a148-77b149f84e06\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"prompt\":\"Fetch this exact URL once and reply with its visible text verbatim and nothing else: https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88\",\"status\":\"completed\",\"executionSteps\":[{\"id\":\"dispatch\",\"label\":\"Queued for execution\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"},{\"id\":\"zeus-runtime\",\"label\":\"Run Agent runtime\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"},{\"id\":\"complete\",\"label\":\"Finish and record result\",\"status\":\"completed\",\"at\":\"2026-10-24T17:47:43.824Z\"}],\"createdAt\":\"2026-10-24T17:47:33.741Z\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"schedule\":{\"type\":\"once\",\"runAtMs\":1792864053741},\"runAtMs\":1792864053741,\"result\":{\"response\":\"target-ack 6b86b1f0cd3adaced3f1\",\"structuredOutput\":null,\"model\":\"default\",\"provider\":\"neus\",\"zeus\":{\"reasoning\":null,\"toolActivity\":[{\"tool\":\"proofable_url_fetch\",\"args\":{\"url\":\"https://webhook.site/b008feae-131e-45bc-850b-c3a759865b88\"},\"ok\":true,\"at\":1792864060599}],\"receipts\":null},\"usage\":{\"inputTokens\":5492,\"cachedInputTokens\":4480,\"outputTokens\":133,\"modelCalls\":2}},\"completedAt\":\"2026-10-24T17:47:43.824Z\",\"durationMs\":10055,\"attemptHistory\":[{\"attemptId\":\"912a03bc-37b0-4edf-a469-9ae1e0250478\",\"attempt\":1,\"stepRound\":0,\"provider\":\"neus\",\"model\":\"default\",\"harness\":\"operator\",\"status\":\"completed\",\"startedAt\":1792864055632,\"actualProvider\":\"neus\",\"actualModel\":\"z-ai/glm-5.3-flash\",\"actualHarness\":\"operator\",\"completedAt\":1792864063796}],\"acceptance\":{\"criterion\":\"target-ack\",\"criteria\":[\"target-ack\"],\"mode\":\"text\"},\"evaluation\":{\"version\":2,\"jobId\":\"d259c7cc-0701-4624-a148-77b149f84e06\",\"attempt\":1,\"taskClass\":\"general\",\"agentId\":\"aaif-authority-review-prod-fresh2\",\"agentWallet\":\"0x765289f0902dc872e631bb16595b8fcf14b3b489\",\"model\":\"z-ai/glm-5.3-flash\",\"provider\":\"neus\",\"requestedModel\":null,\"requestedProvider\":null,\"inferenceFallback\":false,\"harness\":\"operator\",\"transport\":null,\"policy\":{\"policyVersion\":null,\"harnessVersion\":null},\"status\":\"completed\",\"rawTaskSuccess\":true,\"accepted\":true,\"acceptedOutcome\":true,\"evaluator\":\"job-acceptance\",\"failureClass\":null,\"authoritySignal\":\"clean\",\"approval\":{\"required\":false,\"decided\":false,\"decision\":null,\"decidedBy\":null,\"parkedAt\":null,\"resolvedAt\":null,\"waitMs\":null,\"steps\":{\"approved\":0,\"declined\":0},\"humanIntervention\":false},\"checks\":[],\"artifacts\":[],\"workRefs\":[],\"toolActions\":{\"count\":1,\"failed\":0},\"retrieval\":{\"indexVersion\":null,\"proofRefs\":null,\"count\":null},\"cost\":{\"tokens\":5625,\"modelCalls\":2,\"currency\":null},\"durationMs\":10055,\"createdAt\":1792864053741,\"completedAt\":1792864063824,\"qHash\":null,\"terminalQHash\":null,\"recurrenceId\":null,\"runNumber\":null,\"evidenceComplete\":true}}", + "reference": { + "type": "job", + "id": "d259c7cc-0701-4624-a148-77b149f84e06" + } + }, + "signedTimestamp": 1792864063837, + "chainId": 8453, + "signature": "0x604d3a7dd94f84984daada08614468d1ca0af1846b763af77224d70b369c76447414a06ce020e01b545bd427c0b47cc2267ebb00e64cc07fe5582d5d173f99b21b", + "signatureMethod": "eip191" + }, + "contentLength": 2811 + } + ], + "resolved": { + "identifier": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "walletAddress": "0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "did": "did:pkh:eip155:8453:0x0d4e513a3a7eb92bab65c97786c67b198d9dca15", + "idType": "wallet", + "chain": "eip155:8453" + }, + "pagination": { + "limit": 15, + "offset": 0, + "totalCount": null, + "hasMore": false, + "nextOffset": null + } + } +} \ No newline at end of file diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/README.md b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/README.md new file mode 100644 index 0000000..8b94d7b --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/README.md @@ -0,0 +1,109 @@ +# The fetch route, one run, retained + +One job created through the released hosted MCP on 2026-10-24 at 17:47 UTC, on service revision +`18433a48d74af913550de7a018f02c7c724cc1c9` with hosted MCP `0.1.7`. The job's one permitted action +was a fetch of a public URL carrying a marker generated for this run. Every file here was produced by +that run and is unedited. Checksums are in [`SHA256SUMS`](./SHA256SUMS). + +This answers the request in +[agentrust-io/integrations#333](https://github.com/agentrust-io/integrations/issues/333) for a +copyable example of the dispatch-only, correlation-only route. + +## Files + +| File | What it is | Signed | +| --- | --- | --- | +| `1-invocation.json` | Endpoint, method, tool, version, revision and the identities used | no | +| `2-request-arguments.json` | The `arguments` object sent to `proofable_job_create`, as sent | no | +| `3-create-response.txt` | The raw response body, unedited | no | +| `4-dispatch-decision.json` | The stored dispatch decision, with its portable proof envelope | yes | +| `5-job-record.json` | The finished job as the service holds it | no | +| `6-terminal-receipt.json` | The stored terminal receipt, with its portable proof envelope | yes | +| `health-at-run.json` | The service health response captured at run time | no | +| `verify.mjs` | Every check below, offline | | + +## The call + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "tools/call", + "params": { "name": "proofable_job_create", "arguments": "<2-request-arguments.json>" } +} +``` + +The arguments object is retained byte for byte. The JSON-RPC envelope around it is the standard MCP +`tools/call` shape. The credential is omitted. + +The response returned `jobId` `d259c7cc-0701-4624-a148-77b149f84e06`, outcome `ALLOW`, and the +decision qHash `0x74c441e6dad0d45b4804ada7a849d67f617dc064c8357b74fe9766b0d2f44f11` together. The +job made one tool call, a fetch of the URL in the prompt, and returned the marker the target served, +`target-ack 6b86b1f0cd3adaced3f1`. The terminal receipt is +`0xc21e33aa6f0f0308096b816a2bcce767fc2606bc20afeacc5e4874833e04b2f8`. + +## Who signed what + +Both envelopes are signed by the Proofable service key +`0xa41494e1e5f9e5eaf786961e6ef84cd1a3071eec` (EIP-191 over the CAIP-380 verification message). +The signature means Proofable attests a statement its service observed. The `owner` inside each +envelope is the principal `0x0d4e513a3a7eb92bab65c97786c67b198d9dca15`, named by the service. The +principal signed nothing in this packet. The delegation the decision names is referenced by its +qHash and is not included. + +The decision commits to the request through `argsDigest`: SHA-256 of `JSON.stringify` over this +object, in this key order. + +```js +{ + agentId, + agentWallet, // lowercased + prompt, + runtime, // null when the request has none + requiresJobApproval, // false when the request has none + acceptance: { criterion, mode }, +} +``` + +Fields outside it, here `runNowFirst` and the `criteria` alias, are not committed. The run-unique URL +and marker are inside `prompt`, so the decision commits to them. + +## Check it + +```sh +sha256sum -c SHA256SUMS +npm install ethers@6 +node verify.mjs +``` + +`verify.mjs` prints `MATCH` for each of these, and exits non-zero on any mismatch: + +1. Each envelope's signature recovers to the service key, and its qHash recomputes from the + envelope (SHAKE-256, 32 bytes, over the sorted canonical JSON of `did`, `verifierIds`, `data`, + `signedTimestamp` and `chainId`). +2. `argsDigest` recomputes from `2-request-arguments.json`. +3. `argsDigest` also recomputes from the fields the signed receipt carries. The receipt has no + `runtime` or `requiresJobApproval` field, so their defaults are used. +4. The create response's decision qHash is the decision envelope's, and its `jobId` is the one + inside the signed receipt. + +## Unsigned or correlation-only links + +1. **Decision to job.** The decision's `jobId` is `null`, because it is recorded before the job + exists. The tie is the unsigned create response, plus check 3: both signed records carry the same + request. Two jobs sent with identical requests would share a digest. The run-unique URL is what + makes this one distinct. +2. **Executor to target.** The fetch is a plain GET with no executor signature. Target ingress is + tied to the job only by the run-unique URL and marker in the prompt. +3. **Service responses.** The create response, the job record and the health response are what the + service returned. They are not signed records. + +## Boundaries + +- The target here is a public request bin, not an operator-owned target, and its request log is not + in this packet. An operator-owned target and observer are what would establish the effect. +- Dispatch-only. The delegation is re-read before each tool call. Nothing rechecks it while a call is + in flight or when the target commits. +- Authority unavailability does not apply on this path. Authority is evaluated inside the service, + so there is no separate authority to make unreachable. +- Proofable ran this and observed it. No outside party has run it. diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/SHA256SUMS b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/SHA256SUMS new file mode 100644 index 0000000..a71df4a --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/SHA256SUMS @@ -0,0 +1,9 @@ +566b2cc841a1c4966bf56ca98f21c4a479476a97172e3287c1572a2f0a59c871 1-invocation.json +8dd4cf11e11a29347ba1d73921a2b2fce0a8ac3ccac56aea860bbf6778d95da7 2-request-arguments.json +2db3795531b68a1f627d5e38d0a99783a2c789fcea0802629a6e4d85466fa1a8 3-create-response.txt +2970e1c6a1e7291d36bcb752e1b7b2c9416c24eb6e6c699c1dcfd19c2b2e6b5f 4-dispatch-decision.json +40e0bb4a7d75396182b026884f83c350316fa3be6b00bff2ce9ea3cac146d415 5-job-record.json +34688c283148a0524b550666fa74839b38410c26fd63425734a2753ba89f040c 6-terminal-receipt.json +b6849d19f65356cb3da0a1d0d4e840c1e1244830c9c2a637641f0cf7cf468616 health-at-run.json +d1919890e1d5ff3c5da0f552c90e09ef672e514c7f2dc3e35c91276358c926a6 verify.mjs +5bf14aa5dd602171336be09a83a692e0b4a26f49768203ae178f1bb8882800ec README.md diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/health-at-run.json b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/health-at-run.json new file mode 100644 index 0000000..6761655 --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/health-at-run.json @@ -0,0 +1 @@ +{"status":"ok","timestamp":1792864046046,"requestId":"bb3a1283-9042-4872-bfc1-f35a7ffacaa3","release":{"imagePackageVersion":"0.1.7","mcpVersion":"0.1.7","runtimeContractVersion":"neus.runtime-contract.v1","deploySha":"18433a48d74af913550de7a018f02c7c724cc1c9"}} \ No newline at end of file diff --git a/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/verify.mjs b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/verify.mjs new file mode 100644 index 0000000..03cf10f --- /dev/null +++ b/public/evidence/aaif/authority-at-dispatch/2026-10-24-fetch-route/verify.mjs @@ -0,0 +1,79 @@ +// Offline checks for this packet. No account and no network. +// npm install ethers@6 +// node verify.mjs +import { createHash } from 'node:crypto'; +import { readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { ethers } from 'ethers'; + +const here = dirname(fileURLToPath(import.meta.url)); +const text = (f) => readFileSync(join(here, f), 'utf8'); +const json = (f) => JSON.parse(text(f)); + +const request = json('2-request-arguments.json'); +const createResponse = JSON.parse( + text('3-create-response.txt').split('\n').find((line) => line.startsWith('data: ')).slice(6), +).result.structuredContent; +const decision = json('4-dispatch-decision.json').data.proofs[0].portableProof; +const receipt = json('6-terminal-receipt.json').data.proofs[0].portableProof; +const decisionContent = JSON.parse(decision.data.content); +const receiptContent = JSON.parse(receipt.data.content); + +let failed = 0; +const report = (label, ok, detail = '') => { + if (!ok) failed += 1; + console.log(`${ok ? 'MATCH ' : 'NO MATCH'} ${label}${detail ? ` ${detail}` : ''}`); +}; + +// CAIP-380 canonical JSON: keys sorted, no whitespace. +const canonical = (v) => v === null || typeof v !== 'object' ? JSON.stringify(v) + : Array.isArray(v) ? `[${v.map(canonical).join(',')}]` + : `{${Object.keys(v).map((k) => k.normalize('NFC')).sort() + .map((k) => `${JSON.stringify(k)}:${canonical(v[k])}`).join(',')}}`; + +// 1. Each envelope: the EIP-191 signature recovers to its walletAddress, and the qHash recomputes. +for (const [name, env] of [['dispatch decision', decision], ['terminal receipt', receipt]]) { + const message = [ + 'Portable Proof Verification Request', + `Wallet: ${env.walletAddress}`, + `Chain: ${env.chainId}`, + `Verifiers: ${env.verifierIds.join(',')}`, + `Data: ${canonical(env.data)}`, + `Timestamp: ${env.signedTimestamp}`, + ].join('\n').normalize('NFC'); + const signer = ethers.verifyMessage(message, env.signature); + report(`${name}: signature recovers to ${env.walletAddress}`, + signer.toLowerCase() === env.walletAddress.toLowerCase(), `recovered ${signer}`); + const subset = { did: env.did, verifierIds: env.verifierIds, data: env.data, + signedTimestamp: env.signedTimestamp, chainId: env.chainId }; + const qHash = `0x${createHash('shake256', { outputLength: 32 }).update(canonical(subset)).digest('hex')}`; + report(`${name}: qHash recomputes`, qHash.toLowerCase() === env.qHash.toLowerCase(), qHash); +} + +// 2. argsDigest: SHA-256 over a fixed projection of the request, in this key order. +// Fields outside the projection (runNowFirst, the criteria alias) are not committed. +const argsDigest = (fields) => createHash('sha256').update(JSON.stringify({ + agentId: fields.agentId, + agentWallet: fields.agentWallet.toLowerCase(), + prompt: fields.prompt, + runtime: fields.runtime ?? null, + requiresJobApproval: fields.requiresJobApproval === true, + acceptance: { criterion: fields.acceptance.criterion, mode: fields.acceptance.mode }, +})).digest('hex'); + +report('argsDigest from the request arguments', argsDigest(request) === decisionContent.argsDigest, + decisionContent.argsDigest); + +// 3. The same digest from the fields the signed receipt carries. The receipt does not carry +// runtime or requiresJobApproval, so their absent-request defaults (null, false) are used. +report('argsDigest from the terminal receipt fields', argsDigest(receiptContent) === decisionContent.argsDigest); + +// 4. The ties that rest on the unsigned create response. +report('create response decision qHash equals the decision envelope', + createResponse.authorityDecisionQHash === decision.qHash); +report('create response jobId equals the jobId inside the signed receipt', + createResponse.jobId === receiptContent.jobId, receiptContent.jobId); +console.log(`decision jobId field: ${JSON.stringify(decisionContent.jobId)} (recorded before the job exists)`); + +process.exitCode = failed ? 1 : 0; diff --git a/public/evidence/aaif/authority-at-dispatch/README.md b/public/evidence/aaif/authority-at-dispatch/README.md index ff36385..4c4233b 100644 --- a/public/evidence/aaif/authority-at-dispatch/README.md +++ b/public/evidence/aaif/authority-at-dispatch/README.md @@ -7,6 +7,7 @@ link to every record, is at | Folder | What it is | | --- | --- | | [`2026-10-24-served/`](./2026-10-24-served/) | **Current run.** Eight cases on revision `61724c9f4`, 17 signed records, checksums, and a result for each case | +| [`2026-10-24-fetch-route/`](./2026-10-24-fetch-route/) | One job on the fetch route: the call, the raw response, the signed decision and receipt, and an offline checker | | [`reproduce/`](./reproduce/) | Run the same cases under your own account | | [`action/`](./action/) | The same run as a GitHub Action, which writes a `trustharness.report/v1` report | | [`2026-10-08-eight-case/`](./2026-10-08-eight-case/) | Earlier run at revision `e1217327a`: 15 signed records and an offline checker |