Every sealed interaction now names the principal that fired it. The actor is a required field on Interaction, a required argument to run_interaction, and is bound into the signed canonical core — so an interaction can no longer be attributed to a different principal without breaking the chain. Human and agent are traced identically (a did:key either way); the standard draws no distinction. An unauthenticated host attributes fires to its own session principal — joule-ui-serve defaults this to the host's own did:key (derived from its signing key) and exposes with_session_actor for deployments that authenticate the caller. The canonical-core profile tag is bumped joule-ui/interaction/1 -> /2, since the actor is now part of the signed preimage; the two cores are distinct bytes and never collide. SPEC §7.1 + C2/C3 updated, conformance v1 vectors regenerated, examples and the conformance harness pass an actor. Co-Authored-By: Claude Opus 4.8 <[email protected]>
367 lines
No EOL
6.2 KiB
JSON
367 lines
No EOL
6.2 KiB
JSON
{
|
|
"chain": [
|
|
{
|
|
"interaction": {
|
|
"action": "apply",
|
|
"actor": "did:key:z6MkConformanceActor",
|
|
"budget_remaining_uj": 4800,
|
|
"energy": {
|
|
"estimated_uj": 4200,
|
|
"measured_uj": 4200,
|
|
"provenance": "HwShunt"
|
|
},
|
|
"grant_id": "did:web:conformance#grant",
|
|
"inputs": "b3:e1e0e81d6ea39b0cf8b86ffd440921011f57400cbc3f76a8a171906a9b8d7505",
|
|
"outputs": "b3:e1e0e81d6ea39b0cf8b86ffd440921011f57400cbc3f76a8a171906a9b8d7505",
|
|
"surface": "b3:ddf8a971aaeefc840592a98d0018812a4092630ed642c257bff68db3dd882ad7",
|
|
"verdict": "Allow"
|
|
},
|
|
"prev": "b3:0000000000000000000000000000000000000000000000000000000000000000",
|
|
"seq": 0,
|
|
"signature": [
|
|
63,
|
|
152,
|
|
219,
|
|
199,
|
|
37,
|
|
117,
|
|
214,
|
|
234,
|
|
169,
|
|
226,
|
|
190,
|
|
79,
|
|
133,
|
|
114,
|
|
184,
|
|
109,
|
|
10,
|
|
63,
|
|
179,
|
|
121,
|
|
136,
|
|
125,
|
|
28,
|
|
139,
|
|
111,
|
|
5,
|
|
31,
|
|
47,
|
|
161,
|
|
55,
|
|
234,
|
|
177,
|
|
79,
|
|
191,
|
|
198,
|
|
161,
|
|
196,
|
|
108,
|
|
75,
|
|
9,
|
|
45,
|
|
112,
|
|
84,
|
|
248,
|
|
67,
|
|
21,
|
|
180,
|
|
111,
|
|
54,
|
|
188,
|
|
71,
|
|
72,
|
|
206,
|
|
56,
|
|
31,
|
|
127,
|
|
5,
|
|
131,
|
|
126,
|
|
98,
|
|
99,
|
|
1,
|
|
166,
|
|
1
|
|
],
|
|
"signer": [
|
|
49,
|
|
222,
|
|
190,
|
|
85,
|
|
211,
|
|
124,
|
|
114,
|
|
39,
|
|
104,
|
|
177,
|
|
55,
|
|
19,
|
|
28,
|
|
170,
|
|
96,
|
|
135,
|
|
8,
|
|
11,
|
|
46,
|
|
11,
|
|
96,
|
|
185,
|
|
75,
|
|
215,
|
|
133,
|
|
209,
|
|
69,
|
|
117,
|
|
207,
|
|
164,
|
|
152,
|
|
188
|
|
]
|
|
},
|
|
{
|
|
"interaction": {
|
|
"action": "apply",
|
|
"actor": "did:key:z6MkConformanceActor",
|
|
"budget_remaining_uj": 600,
|
|
"energy": {
|
|
"estimated_uj": 4200,
|
|
"measured_uj": 4200,
|
|
"provenance": "HwShunt"
|
|
},
|
|
"grant_id": "did:web:conformance#grant",
|
|
"inputs": "b3:1c310b6bdadd69991cd4e5dbef96c2638536c32b534e3ed64785846bfcebd206",
|
|
"outputs": "b3:1c310b6bdadd69991cd4e5dbef96c2638536c32b534e3ed64785846bfcebd206",
|
|
"surface": "b3:ddf8a971aaeefc840592a98d0018812a4092630ed642c257bff68db3dd882ad7",
|
|
"verdict": "Allow"
|
|
},
|
|
"prev": "b3:c99cb45b15f754a62abe38a20740392726514c96b2addcd4059b898c6a4439b3",
|
|
"seq": 1,
|
|
"signature": [
|
|
62,
|
|
70,
|
|
199,
|
|
98,
|
|
221,
|
|
116,
|
|
35,
|
|
79,
|
|
166,
|
|
249,
|
|
32,
|
|
136,
|
|
197,
|
|
126,
|
|
140,
|
|
203,
|
|
166,
|
|
14,
|
|
144,
|
|
182,
|
|
18,
|
|
53,
|
|
50,
|
|
76,
|
|
68,
|
|
125,
|
|
60,
|
|
125,
|
|
106,
|
|
81,
|
|
30,
|
|
77,
|
|
36,
|
|
10,
|
|
196,
|
|
107,
|
|
40,
|
|
19,
|
|
80,
|
|
153,
|
|
211,
|
|
165,
|
|
63,
|
|
25,
|
|
4,
|
|
89,
|
|
120,
|
|
74,
|
|
237,
|
|
79,
|
|
96,
|
|
83,
|
|
241,
|
|
129,
|
|
62,
|
|
86,
|
|
189,
|
|
26,
|
|
223,
|
|
172,
|
|
223,
|
|
152,
|
|
138,
|
|
1
|
|
],
|
|
"signer": [
|
|
49,
|
|
222,
|
|
190,
|
|
85,
|
|
211,
|
|
124,
|
|
114,
|
|
39,
|
|
104,
|
|
177,
|
|
55,
|
|
19,
|
|
28,
|
|
170,
|
|
96,
|
|
135,
|
|
8,
|
|
11,
|
|
46,
|
|
11,
|
|
96,
|
|
185,
|
|
75,
|
|
215,
|
|
133,
|
|
209,
|
|
69,
|
|
117,
|
|
207,
|
|
164,
|
|
152,
|
|
188
|
|
]
|
|
},
|
|
{
|
|
"interaction": {
|
|
"action": "apply",
|
|
"actor": "did:key:z6MkConformanceActor",
|
|
"budget_remaining_uj": 0,
|
|
"energy": {
|
|
"estimated_uj": 0,
|
|
"measured_uj": null,
|
|
"provenance": "Estimator"
|
|
},
|
|
"grant_id": "did:web:conformance#grant",
|
|
"inputs": "b3:7219aa1099ced7445c5bf949990ff7d9f6b71a94b8ec02b3eb61fb175a66ba25",
|
|
"outputs": "b3:0000000000000000000000000000000000000000000000000000000000000000",
|
|
"surface": "b3:ddf8a971aaeefc840592a98d0018812a4092630ed642c257bff68db3dd882ad7",
|
|
"verdict": {
|
|
"Deny": "budget-exceeded"
|
|
}
|
|
},
|
|
"prev": "b3:e9b362d702a439919b01ac5a73ff356f9ca411187bf106ea2aee8aeb84095c0a",
|
|
"seq": 2,
|
|
"signature": [
|
|
29,
|
|
23,
|
|
135,
|
|
238,
|
|
67,
|
|
124,
|
|
215,
|
|
59,
|
|
134,
|
|
11,
|
|
202,
|
|
57,
|
|
244,
|
|
142,
|
|
82,
|
|
180,
|
|
255,
|
|
231,
|
|
175,
|
|
20,
|
|
6,
|
|
4,
|
|
146,
|
|
76,
|
|
25,
|
|
56,
|
|
143,
|
|
114,
|
|
80,
|
|
23,
|
|
205,
|
|
87,
|
|
53,
|
|
53,
|
|
169,
|
|
188,
|
|
90,
|
|
149,
|
|
12,
|
|
184,
|
|
154,
|
|
56,
|
|
243,
|
|
194,
|
|
127,
|
|
75,
|
|
163,
|
|
47,
|
|
106,
|
|
29,
|
|
17,
|
|
51,
|
|
245,
|
|
67,
|
|
147,
|
|
240,
|
|
252,
|
|
228,
|
|
144,
|
|
222,
|
|
198,
|
|
95,
|
|
2,
|
|
5
|
|
],
|
|
"signer": [
|
|
49,
|
|
222,
|
|
190,
|
|
85,
|
|
211,
|
|
124,
|
|
114,
|
|
39,
|
|
104,
|
|
177,
|
|
55,
|
|
19,
|
|
28,
|
|
170,
|
|
96,
|
|
135,
|
|
8,
|
|
11,
|
|
46,
|
|
11,
|
|
96,
|
|
185,
|
|
75,
|
|
215,
|
|
133,
|
|
209,
|
|
69,
|
|
117,
|
|
207,
|
|
164,
|
|
152,
|
|
188
|
|
]
|
|
}
|
|
],
|
|
"expected_excise_index_1_breaks_at": 1,
|
|
"expected_verify_ok_count": 3,
|
|
"note": "C4 — a sealed three-link chain (allow, allow, deny). verify_chain accepts it; removing index 1 breaks it at index 1. Steward key = 0x17*32 (published; attests nothing).",
|
|
"steward_verifying_key_hex": "31debe55d37c722768b137131caa6087080b2e0b60b94bd785d14575cfa498bc"
|
|
} |