Skip to content

fix: correct Trusted Agent Provider delegation SVG diagram#261

Open
AdijeShen wants to merge 3 commits into
google-agentic-commerce:mainfrom
AdijeShen:fix/trusted-agent-provider-svg
Open

fix: correct Trusted Agent Provider delegation SVG diagram#261
AdijeShen wants to merge 3 commits into
google-agentic-commerce:mainfrom
AdijeShen:fix/trusted-agent-provider-svg

Conversation

@AdijeShen
Copy link
Copy Markdown

Summary

The mandate_delegation_trusted_agent_provider.svg was incorrectly duplicated from mandate_delegation_user_credential.svg, showing the User Credential model instead of the Trusted Agent Provider model.

Problem

Both SVGs had identical content with:

  • 4 participants: User, Trusted Surface, Agent, Issuer
  • "Issue User Credential (In Advance)" pre-issuance step
  • "issuer_signed(Credential) w/user Pk" and "Issuer_signed(UserCredential) + user_signed(Mandate)" messages

This does not match the Trusted Agent Provider model described in docs/ap2/agent_authorization.md, which states:

"This model does not require a pre-issued credential."
"The Agent Provider uses a securely stored signing key to create the Mandate."

Fix

Replaced the diagram with the correct Trusted Agent Provider flow:

Aspect Before (incorrect, same as UC) After (correct, matches spec)
Participants User, Trusted Surface, Agent, Issuer User, Agent Provider Trusted Surface, Agent
Pre-issuance "Issue User Credential (In Advance)" Removed (not needed)
Request Authorization Request(Mandate Content) Authorization Request(Mandate Content, agent_pk)
Signing issuer_signed(Credential) w/user Pk Sign Mandate w/ Agent Provider key
Response Issuer_signed(UserCredential) + user_signed(Mandate) Signed Mandate

Test plan

  • Visually verify the new SVG renders correctly in the docs
  • Confirm the diagram matches the Trusted Agent Provider description in agent_authorization.md
  • Confirm mandate_delegation_user_credential.svg is unchanged

🤖 Generated with Claude Code

@AdijeShen AdijeShen requested a review from a team as a code owner May 12, 2026 07:43
@google-cla
Copy link
Copy Markdown

google-cla Bot commented May 12, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the mandate_delegation_trusted_agent_provider.svg diagram to reflect a revised delegation flow involving an Agent Provider and Trusted Surface. The review feedback identifies a technical error in the SVG path data where an incorrect Bézier control point causes a message arrow to point in the wrong direction. Additionally, it is recommended to add a viewBox attribute to the SVG root element to ensure the diagram scales correctly across different screen sizes.

<rect x="215" y="288" width="290" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect>
<text x="360" y="297.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Sign Mandate w/ Agent Provider key</tspan></text><path fill="none" stroke="#000000" d="M235,307L275,307L275,322L235,322" stroke-width="2" marker-end="url(#raphael-marker-endblock55-obj4)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
<rect x="322.5" y="337" width="120" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect>
<text x="382.5" y="346.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Signed Mandate</tspan></text><path fill="none" stroke="#000000" d="M235,356C235,356,535,356,530,356" stroke-width="2" marker-end="url(#raphael-marker-endblock55-obj5)" stroke-dasharray="6,3" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The path for the "Signed Mandate" response has an incorrect control point for the cubic Bézier curve. The message flows from the Agent Provider (x=235) to the Agent (x=530), so the arrow should point right. However, the current control point 535 (which is End + 5) results in a left-pointing tangent at the end point 530. It should be 525 (which is End - 5) to ensure the arrow points in the correct direction.

<text x="382.5" y="346.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Signed Mandate</tspan></text><path fill="none" stroke="#000000" d="M235,356C235,356,525,356,530,356" stroke-width="2" marker-end="url(#raphael-marker-endblock55-obj5)" stroke-dasharray="6,3" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>

<?xml version="1.0" encoding="utf-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"><svg xmlns="http://www.w3.org/2000/svg" width="730" height="558" xmlns:xlink="http://www.w3.org/1999/xlink"><desc style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Created with Raphaël 2.2.0</desc><defs style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><marker id="raphael-marker-endblock55-objcsxop" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-objceph4" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-objmkk4e" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-obji8ig0" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-objrqrpo" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-objnb3gn" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker><marker id="raphael-marker-endblock55-obja1uqe" markerHeight="5" markerWidth="5" orient="auto" refX="2.5" refY="2.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"><use xlink:href="#raphael-marker-block" transform="rotate(180 2.5 2.5) scale(1,1)" stroke-width="1.0000" fill="#000" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></use></marker></defs><rect x="10" y="20" width="52.6171875" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="20.0390625" y="30" width="32.6171875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="36.30859375" y="39.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">User</tspan></text><rect x="10" y="499" width="52.6171875" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="20.0390625" y="509" width="32.6171875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="36.30859375" y="518.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">User</tspan></text><path fill="none" stroke="#000000" d="M36.30859375,59L36.30859375,499" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="108.33203125" y="20" width="133.15625" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="118.33203125" y="30" width="113.15625" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="174.91015625" y="39.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Trusted Surface</tspan></text><rect x="108.33203125" y="499" width="133.15625" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="118.33203125" y="509" width="113.15625" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="174.91015625" y="518.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Trusted Surface</tspan></text><path fill="none" stroke="#000000" d="M174.91015625,59L174.91015625,499" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="554.7265625" y="20" width="61.9765625" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="564.7265625" y="30" width="41.9765625" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="585.71484375" y="39.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Agent</tspan></text><rect x="554.7265625" y="499" width="61.9765625" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="564.7265625" y="509" width="41.9765625" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="585.71484375" y="518.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Agent</tspan></text><path fill="none" stroke="#000000" d="M585.71484375,59L585.71484375,499" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="636.703125" y="20" width="63.671875" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="646.7421875" y="30" width="43.671875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="668.5390625" y="39.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Issuer</tspan></text><rect x="636.703125" y="499" width="63.671875" height="39" rx="0" ry="0" fill="none" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="646.7421875" y="509" width="43.671875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="668.5390625" y="518.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Issuer</tspan></text><path fill="none" stroke="#000000" d="M668.5390625,59L668.5390625,499" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="26.30859375" y="79" width="652.23046875" height="29" rx="0" ry="0" fill="#ffff00" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="230.150390625" y="84" width="244.546875" height="19" rx="0" ry="0" fill="#ffff00" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="352.423828125" y="93.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Issue User Credential (In Advance)</tspan></text><rect x="357.818359375" y="123.5" width="127.8125" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="421.724609375" y="133" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">request credential</tspan></text><path fill="none" stroke="#000000" d="M174.91015625,147C174.91015625,147,611.7062094977591,147,663.5330849563555,147" stroke-width="2" marker-end="url(#raphael-marker-endblock55-objcsxop)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="290.541015625" y="162.5" width="123.84375" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="352.423828125" y="172" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">authenticate user</tspan></text><path fill="none" stroke="#000000" d="M668.5390625,186C668.5390625,186,100.64596780855209,186,41.305576078098056,186" stroke-width="2" marker-end="url(#raphael-marker-endblock55-objceph4)" stroke-dasharray="6,2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="293.294921875" y="201.5" width="257.25" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="421.724609375" y="211" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">issuer_signed(Credential) w/user Pk</tspan></text><path fill="none" stroke="#000000" d="M668.5390625,225C668.5390625,225,231.74300925224088,225,179.91613379364446,225" stroke-width="2" marker-end="url(#raphael-marker-endblock55-objmkk4e)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="26.30859375" y="245" width="652.23046875" height="29" rx="0" ry="0" fill="#800080" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="261.669921875" y="250" width="181.5078125" height="19" rx="0" ry="0" fill="#800080" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="352.423828125" y="259.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#ffffff" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Mandate Delegation Start</tspan></text><rect x="234.453125" y="289.5" width="291.71875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="380.3125" y="299" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Authorization Request(Mandate Content)</tspan></text><path fill="none" stroke="#000000" d="M585.71484375,313C585.71484375,313,226.72163967089728,313,179.9193030062877,313" stroke-width="2" marker-end="url(#raphael-marker-endblock55-obji8ig0)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="46.30859375" y="328.5" width="118.6015625" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="105.609375" y="338" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Display Mandate</tspan></text><path fill="none" stroke="#000000" d="M174.91015625,352C174.91015625,352,66.11184190725908,352,41.30285128320634,352" stroke-width="2" marker-end="url(#raphael-marker-endblock55-objrqrpo)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="77.0703125" y="367.5" width="57.078125" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="105.609375" y="377" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">approve</tspan></text><path fill="none" stroke="#000000" d="M36.30859375,391C36.30859375,391,145.10690809274092,391,169.91589871679366,391" stroke-width="2" marker-end="url(#raphael-marker-endblock55-objnb3gn)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="184.91015625" y="406.5" width="390.8046875" height="19" rx="0" ry="0" fill="#fafafa" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="380.3125" y="416" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#000000" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Issuer_signed(UserCredential) + user_signed(Mandate)</tspan></text><path fill="none" stroke="#000000" d="M174.91015625,430C174.91015625,430,533.9033603291027,430,580.7056969937123,430" stroke-width="2" marker-end="url(#raphael-marker-endblock55-obja1uqe)" stroke-dasharray="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path><rect x="26.30859375" y="450" width="652.23046875" height="29" rx="0" ry="0" fill="#800080" stroke="#000000" stroke-width="2" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><rect x="244.587890625" y="455" width="215.671875" height="19" rx="0" ry="0" fill="#800080" stroke="none" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></rect><text x="352.423828125" y="464.5" text-anchor="middle" font-family="Roboto" font-size="16px" stroke="none" fill="#ffffff" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0); text-anchor: middle; font-family: Roboto; font-size: 16px;"><tspan dy="5.5" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">Mandate Delegation Complete</tspan></text></svg> No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" width="620" height="480" xmlns:xlink="http://www.w3.org/1999/xlink">
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

It is recommended to include a viewBox attribute in the <svg> tag. This ensures the diagram scales correctly and maintains its aspect ratio across different screen sizes and resolutions.

<svg xmlns="http://www.w3.org/2000/svg" width="620" height="480" viewBox="0 0 620 480" xmlns:xlink="http://www.w3.org/1999/xlink">

@AdijeShen AdijeShen force-pushed the fix/trusted-agent-provider-svg branch from f54141a to e088fbf Compare May 12, 2026 07:53
AdijeShen added 2 commits May 12, 2026 15:54
The mandate_delegation_trusted_agent_provider.svg was incorrectly
duplicated from mandate_delegation_user_credential.svg, showing the
User Credential model (with Issuer, credential pre-issuance, and
issuer_signed responses) instead of the Trusted Agent Provider model.

The Trusted Agent Provider model is a simpler two-party flow where
the Agent Provider is directly trusted by Verifiers — no external
Issuer or User Credential is needed. The corrected diagram now shows:

- 3 participants: User, Agent Provider Trusted Surface, Agent
  (removed Issuer)
- Agent constructs Mandate Content and sends Authorization Request
  with agent_pk (not just Mandate Content)
- Agent Provider's Trusted Surface signs the Mandate with its own key
  (not issuer_signed UserCredential)
- No "Issue User Credential (In Advance)" pre-issuance step

This matches the specification in agent_authorization.md which states:
"The Agent Provider uses a securely stored signing key to create the
Mandate" and "This model does not require a pre-issued credential."
- Fix Bézier control point for "Signed Mandate" arrow: change 535 to
  525 so the tangent points right (TS→Agent direction) instead of left
- Add viewBox attribute to SVG root element for proper scaling across
  different screen sizes
@AdijeShen AdijeShen force-pushed the fix/trusted-agent-provider-svg branch from e088fbf to 785ae3a Compare May 12, 2026 07:54
Raphaël is the JavaScript library used to generate the SVG diagrams.
All existing SVGs in the repo contain "raphael" in marker IDs, but
the spellcheck only flagged the new file because it's the only one
in this PR's diff.
@AdijeShen AdijeShen force-pushed the fix/trusted-agent-provider-svg branch from 6c048aa to 7d7706a Compare May 12, 2026 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant