Skip to content

Server's x-pmxt-verbose debug-tracing header is unreachable from either SDK #1685

Description

@realfishsam

Gap

The sidecar server supports a per-request debug-tracing toggle via the x-pmxt-verbose HTTP header, which flips BaseExchange.verbose on the resolved exchange instance for that call. When enabled, the exchange's axios interceptors log full outbound request URL/params/body and inbound status/response/error data — a raw HTTP tracing mode useful for diagnosing venue integration issues (e.g. malformed order payloads, unexpected 4xx responses). Neither SDK exposes any way to set this header or an equivalent client-side debug/verbose option.

Core

core/src/server/app.ts:447-451 — inside dispatchMethod, reads the x-pmxt-verbose request header and sets exchange.verbose = true/false on the resolved exchange instance before invoking the method:

if (req.headers["x-pmxt-verbose"] === "true") {
  exchange.verbose = true;
} else {
  exchange.verbose = false;
}

Consumed by core/src/BaseExchange.ts:438 (public verbose: boolean = false;) and the axios request/response interceptors at BaseExchange.ts:511-534, which call logger.debug with full request/response detail when verbose is true.

TypeScript SDK

Missing — grep -n "verbose" across sdks/typescript/pmxt/*.ts returns no matches; no header is ever sent and no verbose/debug constructor option exists on the Exchange/Client classes.

Python SDK

Missing — grep -n "verbose" across sdks/python/pmxt/*.py returns no matches either.

Evidence

Read core/src/server/app.ts:447-451 (header→field wiring) and core/src/BaseExchange.ts:438,511-534 (what the field actually does) directly, then grepped both SDKs' full source trees for verbose/debug/logLevel and found zero occurrences. Cross-checked against the existing 157-issue backlog — distinct from the existing rateLimit getter/setter gap (different field, different purpose: debug tracing vs. throttle configuration).

Impact

SDK users have no way to turn on raw HTTP request/response tracing for a single call or exchange instance when debugging an issue against a venue — they would have to hand-roll a raw HTTP request with the header set instead of using the SDK, defeating the purpose of using a client library for diagnostics.


Found by automated Core-to-SDK surface coverage audit

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions