temporalio / temporalio/features
Normalize Header Data Conversion across languages
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 32
- Forks
- 28
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 7
Description
Is your feature request related to a problem? Please describe.
As it stands, the way we choose to convert and/or encode headers varies substantially by language. See this AI-generated table:
| SDK | Converter applied to headers? | Codec applied to headers? |
|---|---|---|
| Go | No — headers are written as raw Payload |
Partial — only via opt-in client-side gRPC interceptor; not on worker activation path |
| Java | No — ContextPropagator returns Map<String, Payload> |
No — codec does not cover headers |
| Python | No — interceptors set Mapping[str, Payload] |
Optional via HeaderCodecBehavior; default is NO_CODEC |
| TypeScript | No — headers are Record<string, Payload> |
No — headers are skipped symmetrically |
| .NET | No — interceptor inputs use IDictionary<string, Payload> |
Yes — broad codec coverage |
| Ruby | Yes — headers pass through converter | Yes — combined data converter includes codec |
| PHP | Yes — values pass through converter | No SDK codec class; codec handled externally |
Describe the solution you'd like
All SDKs should be capable of the same, normalized behavior. My inclination would be that this is to convert and encode all user-set headers (there may be some SDK set headers that would use the standard data converter).
Obviously, for backwards compatibility reasons, this behavior would need to be opt-in where it varies from the existing implementation. We might consider other options here, like continuing to be able to successfully decode existing headers while writing new headers under the new scheme, using SDK flags.
Additional context
This came up as part of the encryption verification project
Per-SDK Tickets
- Go -
- Java -
- TypeScript -
- Python -
- .NET -
- Ruby -
- Rust -
- PHP -
- Temporal CLI -
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No files, tests, or entry points are named. Start with the SDK comparison table and the encryption verification context, then define separate work for the listed per-SDK tickets. Done means the SDKs have a documented, opt-in normalized header conversion and encoding behavior with backward-compatible decoding.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, go, java, php, python, ruby, rust, typescript
- Domain
- backend-api-design, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100