Choose the safest Explain workflow
Use the least invasive workflow that answers the question:- Inspect the directed service profile with
tensor9 explain. This reads the published origin-to-target mapping and does not launch an adapter or call a cloud API. - Reproduce the request in an approved test appliance. Use
Explainmode when you need a hypothetical decision without applying the target operation. UseExecuteAndExplainonly when the test is meant to perform the operation. - Add the
x-t9-explainrequest control through the application’s existing, signed SDK request. The adapter returns an explanation receipt when the selected operation supports request explanation. - Attempt to retrieve the report named by the receipt, preserve an authorized and redacted copy when available, and only then have the report owner acknowledge the exact consumable revision.
Establish the deployment context
Before interpreting a report, identify the deployment it came from. For a vendor investigation, record:- app, customer and release, such as
orders-api,example-customerandexample-release; - appliance form factor, origin service, target service and selected mapping;
- application, service-adapter and CLI versions;
- operation, timestamp and origin-facing endpoint;
- response status, origin request IDs and target request IDs, when supplied;
- explanation report ID, mode and revision;
- relevant tuning tags and sanitized adapter configuration; and
- the target resource observations that establish whether a mutation occurred.
Capture one request
Record its timestamp, endpoint, status, error code and response headers. Preserve the exact request identifiers returned by the adapter. Redact credentials, signed URLs, session tokens and sensitive payloads before sharing a reproduction or logs. Do not enable unrestricted SDK wire logging in a customer environment merely to collect identifiers. Wire logs can contain authentication material and application data. Use scoped collection and the customer’s approved access and handling procedures. When request explanation is enabled, capture the explanation receipt alongside the ordinary SDK result. A receipt is a correlation locator and records capture intent; it does not prove that a report row was persisted, that the operation succeeded, that the report is complete, or that the request was authorized. Keep the origin response, target observation and explanation report as separate evidence.Read the explanation before guessing
Read the report in the format appropriate to the investigator: Human for an operator, Agent for a bounded coding-agent investigation, or JSON for tooling. Follow Reading an Explanation to distinguish observed facts, adapter decisions, constraints, target mappings and unknowns. An explanation can establish which mapping was selected and why an adapter accepted, refused or translated a covered request. It cannot establish facts that were not captured. In particular:- an allowed authorization fact does not prove the target accepted the request;
- a target mapping does not prove a write committed;
- a partial report does not prove the remaining steps did not occur; and
- the absence of an explanation receipt does not prove the request had no effect.
Read the diagnostic headers
Request identifiers are not proof that a backend operation completed or that a retry is safe. The request-effect header is not emitted by every adapter or every failure path.
An absent or unrecognized request-effect value means the effect is unknown. Check resource state and the operation’s idempotency rules before retrying a write. A timeout can occur after the backend performed the operation.
Python clients using Botocore response dictionaries expose headers in
ResponseMetadata.HTTPHeaders. A caught ClientError has its response dictionary on error.response; a transport exception may have no HTTP response. Collect only the metadata needed for the investigation.
Trace the deployment-specific path
Check the origin client endpoint, adapter configuration, backend identity and the resource state in the customer’s target environment. Distinguish origin authorization from backend permissions. An application’s ordinary network traffic or native database protocol may follow a different path from its cloud-management API calls. Use response identifiers to find the corresponding adapter logs in your approved observability workflow. Preserve relevant tuning tags, including tags set during resource creation. An empty test resource can hide a state-dependent bug. Use the Adapter Errors provenance header when it is present to choose the next system to inspect. Error provenance and Explain answer different questions: provenance identifies the layer that returned a failure, while Explain describes the adapter’s reasoning and recorded request path. Neither is a substitute for checking target state after an uncertain mutation.Reproduce in a test appliance
Prefer a test appliance with the same form factor and a minimal workload. Use synthetic data and scoped credentials. Reproduce the setup that matters to the request, then compare the observed result with the service’s operation coverage and documented differences. Do not replay a mutating request in a customer appliance merely to get a cleaner error. Determine whether the original request already changed resources and obtain appropriate authorization before any further live action. For a useful reproduction, keep the deployment shape faithful while reducing the data and permissions:- Match the customer appliance form factor, release and service mapping.
- Create a disposable resource with synthetic data and a scoped origin identity.
- Inspect the static profile for the exact origin, target and operation.
- Run a hypothetical explanation first when the operation supports it.
- If execution is necessary, use a unique resource name or idempotency key and observe the target before and after the request.
- Retrieve and redact the report before acknowledging it.
- Remove only the resources created by the test and record the cleanup result.
Coordinate vendor and customer responsibilities
The vendor and customer often hold different pieces of the evidence. Before sending the request, decide which application or collector will use the authenticated owner identity. That owner alone can read and acknowledge through the report HTTP routes; it exports sanitized evidence to approved participants out of band.
The originating request fixes the report owner to its authenticated principal; ownership is not reassigned after the response. The owner shares redacted evidence with approved participants and acknowledges only the exact revision advertised as consumable. Retrying the same owner acknowledgment at the same sealed revision is idempotent. Do not acknowledge merely to make an investigation queue look clean.
Use coding agents with captured evidence
The service reference, diagnostic response headers and captured logs can help identify the selected mapping and relevant limits. Documentation cannot establish what happened in a particular live request, and an investigation must not silently replay mutations against customer resources. You can ask Codex, Claude or another coding agent to investigate a sanitized reproduction through public CLI help and documentation. Give it explicit limits, for example:Report an unresolved issue
Use Getting Help for the step-by-step vendor/customer handoff. How Support Works separates adapter responsibilities from native target-service responsibilities; you do not need to establish fault before opening a case. Include versions, mapping, operation, timestamp, request identifiers, explanation report ID and revision, redacted error and configuration, relevant tags, reproduction steps and expected behavior. State what you verified about side effects, what remains unknown and whether the issue also occurs in a test appliance. Share the smallest useful evidence bundle, not the customer’s complete logs. A complete handoff for theorders-api example contains the example-customer appliance and example-release identity, the selected service mapping, adapter version, one sanitized origin response, native target observations, the redacted explanation report, report capture and acknowledgment state, and the exact next test. Keep credentials, signed URLs, customer payloads and unrestricted logs out of the bundle.