Implement planned topic: 0021-memo-data-converter#216
Open
skill-temporal-developer-updater[bot] wants to merge 1 commit into
Open
Implement planned topic: 0021-memo-data-converter#216skill-temporal-developer-updater[bot] wants to merge 1 commit into
skill-temporal-developer-updater[bot] wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Skill Validation Report — memo data converter
Branch:
draft/0021-memo-data-converterScope of change:
references/go/data-handling.mdonly (+22 lines). New H3 section Memo encoding: default vs. userDataConverterplus one new Best Practices bullet. NoSKILL.md,references/integrations.md, language-entry-point, or new-file changes.Topic class: Temporal SDK feature (not a third-party integration) — Check 5 skipped.
Validation date: 2026-05-14
Go/no-go
Overall verdict (strict rubric): RE-RUN AUTHORING. Check 1 falls below threshold.
Narrow-scope note for maintainer judgment: the Check 1 failures are exclusively wrong-line citations on
internal/internal_flags.go(3 occurrences). Every claim is independently verifiable, and the correct line in the same file is within ~10 lines of the cited line. A targeted patch fixing the three line numbers — without re-authoring the section — would lift Check 1 to 12/12 and convert the verdict to GO. The maintainer can choose to honor the strict rubric and re-run authoring, or treat this as a localized line-number fix.Check 1 findings — wrong line numbers on sdk-go citations
All three findings are on the same source file (
temporalio/sdk-go internal/internal_flags.go) and all three cite a line that does not contain the claimed content; the actual line is elsewhere in the same file. Content claims are accurate.Finding 1.1 —
data-handling.md:260<!-- sdk-go: internal/internal_flags.go @ v1.41.0:67 (sdkFlagsAllowed[SDKFlagMemoUserDCEncode] = false) -->//— a blank comment line inside the doc-comment block aboveloadFlagOverridesFromEnv.SDKFlagMemoUserDCEncode: false,inside thesdkFlagsAllowedmap.Finding 1.2 —
data-handling.md:263<!-- sdk-go release notes v1.41.0; sdk-go: internal/internal_flags.go @ v1.41.0:46 -->(for the claimSDKFlagMemoUserDCEncodenumeric ID7)// New flags should default to false until at least one release after introduction.— a comment in thesdkFlagsAlloweddoc block, unrelated to the flag's numeric value.SDKFlagMemoUserDCEncode = 7inside theconstblock.Finding 1.3 —
data-handling.md:267<!-- sdk-go: internal/internal_flags.go @ v1.43.0:67 -->(for the claim that the flag is disabled by default in v1.41.0 through v1.43.0)//— same blank comment line as Finding 1.1 (file structure unchanged across the version range).SDKFlagMemoUserDCEncode: false,.Check 1 — citations that resolved cleanly (9/12)
docs/develop/go/best-practices/data-handling/data-encryption.mdx:104-118client.Dialexample. Supports the "encrypts Workflow inputs/results" framing.sdk-go release notes v1.41.0sdk-go PR #2121file list (internal_workflow_client.go, internal_schedule_client.go, internal_event_handlers.go)sdk-go PR #2121: encodeMemoValue in internal/internal_workflow_client.gofunc encodeMemoValue(value interface{}, dc converter.DataConverter, useUserDC bool) (*commonpb.Payload, error).sdk-go: internal/internal_flags.go @ v1.41.0(no specific line, forloadFlagOverridesFromEnvenv-var pattern)loadFlagOverridesFromEnvbuildingfmt.Sprintf("TEMPORAL_SDK_FLAG_%d", flag)(L73) and accepting"1"/"0"(L76, L78).sdk-go PR #2121 introduces no new exported ClientOptions/WorkerOptions fieldClientOptions/WorkerOptionsfield; opt-in is via env var only.docs/develop/go/best-practices/data-handling/data-encryption.mdx:37-44, 112-117converter.NewCodecDataConverter(...)construction; L112–117 showclient.Dial(client.Options{DataConverter: ...}).sdk-go PR #2121: getWorkflowMemo is memo-onlygetWorkflowMemoreturns*commonpb.Memo— does not touch search attributes.sdk-go PR #2121: internal/internal_event_handlers.go(TryUse-gated in-workflow paths)wc.TryUse(SDKFlagMemoUserDCEncode)at bothUpsertMemoandExecuteChildWorkflowcall sites.docs/encyclopedia/workflow/workflow-execution/workflow-execution.mdx:169-181(Counted as 10 cleanly-resolved citation tags but I list 12 distinct citation comments — discrepancy is that L268 and L264 each compound multiple sources within a single comment. The 9/12 ratio reflects 12 distinct citation comments in the section, 3 of which contain wrong-line failures.)
Check 2 findings — none
Every factual token in the new section was located in the source-of-truth corpus. Tokens checked and resolved:
SDKFlagMemoUserDCEncode(sdk-go internal/internal_flags.go:37,39,56),sdkFlagsAllowed(L49),loadFlagOverridesFromEnv(L71),encodeMemoValue(PR #2121, internal_workflow_client.go),getWorkflowMemo(PR #2121, three files),TryUse(PR #2121, internal_event_handlers.go — capitalized form at workflow-context call sites; distinct from lowercasetryUsemethod onsdkFlags).TEMPORAL_SDK_FLAG_7— derived fromfmt.Sprintf("TEMPORAL_SDK_FLAG_%d", flag)with the verified flag-ID value7.7— internal/internal_flags.go v1.41.0:39.v1.41.0,v1.43.0— both valid published releases; both showSDKFlagMemoUserDCEncode: falseinsdkFlagsAllowed.#2121— verified at github.com/Introduce SDK flag to use user DC on Memo's sdk-go#2121.StartWorkflow,SignalWithStartWorkflow,ScheduleClient.Create,workflow.UpsertMemo,workflow.ExecuteChildWorkflow,client.Dial,client.Options,worker.Options,DataConverter,PayloadCodec,CodecDataConverter,converter.NewCodecDataConverter— all are standard, documented Go SDK identifiers found in the data-encryption.mdx source and the surroundingdata-handling.mdfile.Check 3 findings — none
Grep across the new section for the universal regression patterns (
--profile,TEMPORAL_TLS_CLIENT_CERT_PATH,TEMPORAL_TLS_CLIENT_KEY_PATH,TEMPORAL_TLS_SERVER_CA_CERT_PATH,tcld service-account,--output text|jsonl,saas-api.tmprl.cloud:7233) returned zero matches.Check 4 findings — none
Sampled all 13 distinct claims in the new section (sampling exhaustively rather than choosing 10, because the entire diff is 22 lines and small enough to cover fully). For each claim, I re-read the relevant docs section or sdk-go source independently and compared my own phrasing to the authored text. All 13 matched substantively. Notable nuances confirmed:
encodeMemoValue: attempts user DC first whenuseUserDC=true, falls back to default DC, and surfaces the user converter's error if both fail.StartWorkflow,SignalWithStartWorkflow,ScheduleClient.Create) and worker-side paths (UpsertMemo,ExecuteChildWorkflow), so the requirement to set the env var on both process classes is accurate.TryUse, so the decision is recorded in history and replay stays deterministic") —TryUserecords the flag use intosf.newFlags, which the SDK then sends to the server so replay decisions can be reproduced. Match.Check 5 — N/A
Not a third-party integration topic. The diff does not modify
references/integrations.md, does not add files underreferences/{lang}/integrations/, and does not editSKILL.mdor any language entry-point. Check skipped per template.Check 6 findings — minor, non-gating
No Pattern 1 (workaround-disclosure) findings
The new section teaches a single mechanism to enable the flag:
TEMPORAL_SDK_FLAG_7=1. This is the only documented public-surface way to enableSDKFlagMemoUserDCEncodein the v1.41.0–v1.43.0 range (PR #2121 added no exportedClientOptions/WorkerOptionsfield). The skill explicitly states "the env var is the only knob" — accurate.The SDK source code's own comment characterizes env-var flag-flipping as "strongly discouraged… an emergency mechanism" (internal_flags.go L68–70). I considered whether teaching the env var to agents disclosed a workaround. Concluded no, because (a) there is no alternative public mechanism, (b) the flag is documented and intentional, (c) the skill correctly frames it as opt-in rather than as a hack. The discouraged-in-source nature is worth a maintainer note but not a Check 6 finding.
Borderline Pattern 2/3 (in-the-weeds rationale) — flagged for optional tightening
data-handling.md:265— the fallback-order detail ("On encode error, the SDK falls back to the default Data Converter; if the default also errors, the user converter's error is returned") is implementation-detail-grade. An agent writing user code does not branch on which DC's error surfaces. This sentence could be removed without changing generated code.data-handling.md:276— the rationale tail "…so the decision is recorded in history and replay stays deterministic" explains a replay-safety guarantee. The agent will not write code that depends on this guarantee; the rationale doesn't change output. Could be tightened to just "For in-Workflow calls (UpsertMemo,ExecuteChildWorkflow), the flag is gated throughTryUse."Neither finding triggers a re-author. Bundle into a follow-up commit if the rest of the section is being touched.
No Pattern 4 (Public Preview admonition) finding
The cited docs do not flag this feature as Public Preview; the v1.41.0 release notes do not flag it as preview. Standard
[!NOTE]admonition not applicable.Statistics
references/go/data-handling.md)temporalio/sdk-go internal/internal_flags.go)