Context
The v1 Receipt.action includes optional session and call_id fields, and these are carried into the BilateralReceipt.agent_receipt. However, verify_bilateral() does not provide a way to assert that a bilateral receipt corresponds to a specific session or call.
A caller who expects a response for call_id=abc could receive a valid bilateral receipt for call_id=xyz without detection at the verification layer.
What needs to change
Rust (crates/signet-core/src/verify.rs):
- Add optional
expected_session and expected_call_id fields to BilateralVerifyOptions
- If set, verify they match
receipt.agent_receipt.action.session / call_id
Acceptance criteria
Difficulty
Beginner-friendly. Simple field comparison, similar pattern to trusted_agent_pubkey.
Context
The v1
Receipt.actionincludes optionalsessionandcall_idfields, and these are carried into theBilateralReceipt.agent_receipt. However,verify_bilateral()does not provide a way to assert that a bilateral receipt corresponds to a specific session or call.A caller who expects a response for
call_id=abccould receive a valid bilateral receipt forcall_id=xyzwithout detection at the verification layer.What needs to change
Rust (
crates/signet-core/src/verify.rs):expected_sessionandexpected_call_idfields toBilateralVerifyOptionsreceipt.agent_receipt.action.session/call_idAcceptance criteria
BilateralVerifyOptionsgains optionalexpected_sessionandexpected_call_idErr(SignetError::InvalidReceipt(...))Difficulty
Beginner-friendly. Simple field comparison, similar pattern to
trusted_agent_pubkey.