Station v1.5.15 consistently fails when delivering a native team approval request to the hosted RailCall relay.
Reproduction path:
- Create a valid team with three members carrying role approver.
- Configure provider approval policy with quorum 2.
- Preview a consequential command through native Airlock.
- Approve the exact payload hash through Airlock.
- Execute the exact same payload once.
- Station resolves the provider requirement and eligible approvers, creates the native team approval request, and attempts relay delivery.
Observed result:
POST https://railcall-marketplace-lggm.onrender.com/relay/team/send
returns:
HTTP 400 Bad Request
The generated request is a signed schema-1 team envelope with:
- valid team_id
- manifest version 4
- valid sender public key
- to_pubkey: role:approver
- valid action_hash
- role: approver
- quorum: 2
The request is structurally valid against the local Station v1.5.15 relay contract.
Safety evidence:
- team request persisted locally as pending
- handler was not executed
- external_api_touched = false
- no downstream provider mutation occurred
A controlled reproduction on Station v1.5.15 produced the same HTTP 400.
Diagnostic limitation:
relay_client._post_json() raises HTTPError, while the team approval path surfaces only str(e). The relay response body is not preserved or logged, so the exact server-side validation error cannot be recovered locally.
Expected behavior:
A valid native team approval request should be accepted by the hosted relay and delivered to eligible approvers, or the client should expose a sanitized server-side validation error explaining why it was rejected.