Composition boundary: attenu-guard delegation and VATE admission #7
Replies: 5 comments 3 replies
|
Both readings are right. On Three things can stop the hop between
So a chain can verify and still be narrowed, or refused, before the inner executor runs. On the bundle. Correct. It is authorization and lifecycle evidence. It records that a call was One correction on the commit you read. Two more things before you write the seam down. The client's bundle proves the caller's side. The server's bundle proves the receiving side. Neither And one that matters if you ever verify our bundles from something other than Python. Our A negative composition case you can use: cross-process revocation. Your boundary reads right to me. Tell me if you want the revocation case as a runnable test and I'll |
|
It landed. RFC 8785 JCS now, on all four surfaces, so bundle hashes are reproducible from any language and not If you were reading tokens at |
|
Thank you for the fast follow-through. I see that the JCS transition has now landed in For any future attenu-guard bundle evaluation, I will use the new JCS release line rather than The authority and outcome boundary is now clear as well. I will record the client and server bundles as authorization and lifecycle evidence, with One precision on the proposed revocation case: VATE’s post-execution linkage alone would not discover the revocation. VATE can deny at admission when current or bounded-freshness status or revocation evidence makes the stale authority observable. A later verifier may also re-evaluate that evidence when accepting the artifact set, but the current v0.3 runner does not continuously monitor later status changes. So I would frame the composition boundary as follows: attenu-guard accepts the receiving hop because no cross-process revocation source is wired, while a VATE admission profile supplied with current status evidence must deny the request before handoff. Post-execution linkage then determines whether later evidence belongs to that specific admission and admitted effective request; it is not itself a revocation-discovery mechanism. Yes, the runnable revocation test would be very valuable. Keeping it native to attenu-guard would be ideal. A minimal sequence showing:
would be enough. Once it lands, I can pin the exact commit and map it independently into a VATE composition case without changing its source semantics. Thank you for offering to write it, and for documenting these boundaries so precisely. |
|
The outcome-evidence gap you recorded now has a reviewed proposal: https://github.com/orgs/attenu-io/discussions/8 . For the VATE mapping the relevant parts are section 5, a missing or contradicting record becomes a named verification failure instead of an audit line, and section 3, the vocabulary is observations, not judgments, so your admission-side denial composes with it rather than overlapping it. |
|
It landed. attenu-guard 0.9.0 on PyPI, attenu-guard-ts 0.4.0 on npm, same contract in both. What you would pin for the VATE mapping: schema version 2, opt-in per chain ( |
Uh oh!
There was an error while loading. Please reload this page.
Hi Rafael — I read the current Python A2A and evidence paths at
3606464.GuardedAgentExecutorrunswire.load, asks deployment-suppliedauthority_for(agent_id, task)for required authority, derives a served guard no wider than the verified leaf, then callsinner.execute.complete()runs infinallyand addsdone;export_bundlecarries the guard ledger plus its signed head anchor.The VATE AL2 profile specifies a protocol-neutral relying-party decision on one concrete request from heterogeneous evidence:
allow,attenuate, ordeny. An attenuation records original/effective request bases; later post-execution evidence is checked against the specific admission and admitted effective request.That suggests a composition boundary: attenu-guard establishes and enforces delegated authority at the receiving hop, while VATE specifies concrete-request admission and admission-to-outcome evidence linkage. Could you confirm or correct this reading at two points?
authority_foris deployment-local input, so even a chain that passeswire.loadmay still be narrowed or refused before the inner executor runs.A correction would help us document the seam and choose a useful negative composition case. I’m asking about the boundary, not for adoption or implementation work.
All reactions