Skip to content

Implement planned topic: 0021-memo-data-converter#142

Closed
skill-temporal-developer-updater[bot] wants to merge 1 commit into
mainfrom
draft/0021-memo-data-converter
Closed

Implement planned topic: 0021-memo-data-converter#142
skill-temporal-developer-updater[bot] wants to merge 1 commit into
mainfrom
draft/0021-memo-data-converter

Conversation

@skill-temporal-developer-updater

Copy link
Copy Markdown
Contributor

Validation Report — temporal-developer (draft 0021-memo-data-converter)

Scope: unstaged diff to references/go/data-handling.md on branch draft/0021-memo-data-converter. git log main..HEAD is empty; the diff is the entire change-set.
Source of truth: ../documentation/docs/ (Temporal docs clone).
Validator session: independent of authoring.


Go / No-Go

Check Threshold Result Verdict
1 — Citation audit ≥ 98% resolve 6/6 = 100% PASS
2 — Reverse-grep audit zero unexplained misses 0 misses; all undocumented tokens flagged with <!-- VERIFY --> + source caveat PASS
3 — Regression on known bugs zero hits 0 universal hits; 0 topic-specific hits PASS
4 — Independent re-verification ≥ 95% match 6/6 cited claims match = 100% PASS

Overall verdict: GO, with one strongly-recommended caveat captured below.


Check 1 findings

All six inline doc citations introduced by the diff resolve cleanly and substantively support the authored claim:

  1. docs/encyclopedia/workflow/workflow-execution/workflow-execution.mdx:169 — supports "non-indexed set of Workflow Execution metadata supplied at start time / from Workflow code / returned when describing or listing".
  2. docs/encyclopedia/workflow/workflow-execution/workflow-execution.mdx:179-180 — supports both "lack type safety" and "eventual consistency" sub-claims, with the surrounding bullet at 177 also supporting the "don't use for execution-critical data" framing.
  3. docs/develop/go/client/temporal-client.mdx:700,888 — supports map[string]interface{} type (line 700 table row; line 888 Type:) and default-empty (line 889 Default: Empty).
  4. docs/develop/go/client/temporal-client.mdx:891-902 — shape-match citation for the start-options example. The authored example uses different field values ("order-123", "customerName") but the same structural form as the docs example. Shape claim is accurate.
  5. docs/develop/go/best-practices/data-handling/data-encryption.mdx:110-118 — supports the syntactic form client.Dial(client.Options{ DataConverter: ... }). Note that this citation is being used as a shape reference; the cited section does not specifically discuss Memo routing (which is why the surrounding prose is tagged <!-- VERIFY -->).
  6. docs/develop/go/client/temporal-client.mdx:904-933 — SearchAttributes section; supports "Search Attributes … follow their own typing rules" (Keyword/Int/Double/Bool/Datetime/Text types are listed). Minor note: "stored indexed" portion of the authored sentence is not directly stated in 904-933, though it is correct general Temporal knowledge.

No unresolved citations. No findings.


Check 2 findings

All technical tokens introduced by the diff that should be documented are documented:

  • CodecDataConverter → present in develop/go/best-practices/data-handling/data-encryption.mdx.
  • CompositeDataConverter → present in encyclopedia/data-conversion/payload-converter.mdx and develop/go/best-practices/data-handling/data-conversion.mdx.
  • PayloadCodec, PayloadConverter → present in develop/go/best-practices/data-handling/{data-conversion,data-encryption,index}.mdx.
  • client.Options, client.Dial, DataConverter → present across 14 Go docs.
  • StartWorkflowOptions.Memo, map[string]interface{} → present in develop/go/client/temporal-client.mdx.

The new Go-SDK-only "Memo-routing flag" claim is not present in the local docs clone:

  • MemoUsesDataConverter / MemoSerializationUsesDataConverter / DataConverterEncodesMemo / EncodeMemoWith / etc.: zero hits in ../documentation/docs/.
  • Memo.*DataConverter / DataConverter.*Memo co-occurrences: zero hits.

The diff handles this responsibly:

  • All five specific factual claims about the flag carry <!-- VERIFY --> comments naming the godoc as the verification target.
  • A prominent "Source caveat" blockquote at the end of the new subsection tells readers "the local temporalio/documentation clone does not document this flag. Confirm … by reading the Go SDK godoc at pkg.go.dev/go.temporal.io/sdk/client before relying on this section."

Under Check 2's rule that "real but undocumented" tokens are acceptable when marked, this passes. No fabrication suspects.


Check 3 findings

Universal regression patterns (--profile, TEMPORAL_TLS_CLIENT_*_PATH, tcld service-account, --output text|jsonl, saas-api.tmprl.cloud:7233): zero hits in references/go/data-handling.md.

Topic-specific regression patterns:

  • ✓ No specific client.Options field name is hard-coded for the Memo-routing flag. The diff describes it abstractly as "a client.Options flag," avoiding the trap of inventing a field name.
  • ✓ Default-behavior claim ("Go SDK does NOT route by default") is tagged <!-- VERIFY: confirm default behavior against godoc -->.
  • ✓ Diff scopes the flag correctly: "This flag is Go SDK-only. Other SDKs may expose equivalent behavior under different names."
  • ✓ Search Attributes correctly stated as unaffected by the flag; the citation to temporal-client.mdx:904-933 is to the parallel typing-rules section.
  • ✓ Pre-existing "Upsert memo (Go SDK only)" wording remains correct and untouched.
  • ✓ No verbatim godoc snippets or error strings are quoted.

No regression hits.


Check 4 findings

Sampled all 6 doc-cited claims and all 5 <!-- VERIFY -->-tagged claims (11 total). Comparison table is in VALIDATION_PLAN.md §3 Check 4.

  • 6/6 cited claims independently match the source = 100%.
  • 5/5 unverifiable claims are properly tagged with <!-- VERIFY --> and additionally covered by the "Source caveat" block.

No claims diverge from the docs in a way that would lead a reader to behave differently than the docs intend.

Minor observation (not a finding)

Citation #6 (temporal-client.mdx:904-933) backs the "follow their own typing rules" portion of the sentence but does not directly back "are stored indexed". This is generic Temporal knowledge and easily verifiable elsewhere, so it does not rise to a finding — but a tightening pass could either cite a more specific source for "indexed" or trim the claim.


Strongly-recommended caveat (out of band of the four checks)

The new "Routing Memo serialization through your DataConverter (Go SDK flag)" subsection (lines 265–281 of the updated references/go/data-handling.md) makes five substantive technical claims about Go SDK behavior:

  1. Default routing of Memo through the SDK's built-in JSON, not the user DataConverter.
  2. Existence of a new client.Options flag (field name not specified) that opts in.
  3. Custom PayloadConverters apply to Memo when enabled.
  4. Wrapping CodecDataConverter also applies to Memo when enabled.
  5. Switching the flag does not retroactively re-encode existing Memos.

None of these five are documented in the local ../documentation/docs/ clone. The diff itself transparently states this in its "Source caveat" block.

This is not a Check-1/2/3/4 failure because:

  • The diff does not name a specific field name (so it can't fabricate one).
  • Every undocumented claim is <!-- VERIFY -->-tagged.
  • The reader is explicitly told to check the godoc before relying on the section.

But it is worth flagging for the maintainer because:

  • A validator running purely against the docs clone cannot confirm the section is true. Future maintenance/regression passes will keep flagging this same uncertainty unless either (a) Temporal docs publish coverage of the flag, or (b) the section is rewritten to cite the godoc explicitly with version + field name.
  • If the field name, default, or codec-stage coverage turns out to be different from what the prose implies, readers following the section's "Practical consequences" bullets could misconfigure production. The VERIFY tags are an honest hedge, but they don't substitute for a verified field name.

Recommendation (maintainer choice, not a validator block):

  • Run a follow-up pass that consults pkg.go.dev/go.temporal.io/sdk/client and fills in the specific field name + default + scope of the flag; replace each <!-- VERIFY --> with an <!-- undocumented: source = pkg.go.dev/go.temporal.io/sdk/client.Options.<FieldName> --> tag once verified.
  • OR scope the subsection down to "consult the Go SDK godoc; the flag exists on client.Options," dropping the five specific behavioral claims, until docs publish.

Statistics

Metric Value
Files changed in diff 1 (references/go/data-handling.md)
Lines added ~25
Inline doc citations added 6
<!-- VERIFY -->-tagged claims added 5
Citations resolved cleanly 6/6 (100%)
Reverse-grep unexplained misses 0
Regression-pattern hits 0
Check 4 sample size 11 (6 cited + 5 VERIFY)
Check 4 cited-claim match rate 6/6 (100%)

Stop conditions

None triggered. Authoring artifacts present (diff exists), docs clone present and populated, citation pass rate well above 70%, no scope violations (only an existing reference file was modified).

End of report.

@skill-temporal-developer-updater skill-temporal-developer-updater Bot requested a review from a team as a code owner May 13, 2026 16:06
@donald-pinckney donald-pinckney deleted the draft/0021-memo-data-converter branch May 13, 2026 17:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant