Implement planned topic: 0010-serialization-context#242
Open
skill-temporal-developer-updater[bot] wants to merge 1 commit into
Open
Implement planned topic: 0010-serialization-context#242skill-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 —
serialization-contextReviewer session: independent of authoring. Did not read
hidden-from-validator/AUTHORING_PLAN.mdorhidden-from-validator/AUTHORING_LOG.md. Validation drawn from authored files +../documentation/docs/.Files validated (all uncommitted on
draft/0010-serialization-context):SKILL.md(modified — added serialization-context bullet under Primary References)references/core/serialization-context.md(new — conceptual page)references/go/serialization-context.md(new — Go SDK page)references/python/serialization-context.md(new — Python SDK page)references/dotnet/serialization-context.md(new — placeholder; .NET docs silent)references/go/data-handling.md,references/python/data-handling.md,references/dotnet/data-handling.md(modified — added one-line cross-link to language's serialization-context page)references/go/go.md,references/python/python.md,references/dotnet/dotnet.md(modified — added a Reference Files bullet for the new page)Topic classification:
references/core/<feature>.mdplus per-language pages → Check 7 appliesGo / no-go
references/go/serialization-context.md. No workaround disclosures.Overall verdict: MINOR FIXES. Check 3 clean, Check 4 ≥ 95%, Check 1 ≥ 98%, no workaround disclosures, cross-language structure intact. Two spot-fixes are recommended (see Check 2 and Check 6 below) before merge — neither requires re-authoring.
Check 1 findings — citation audit
Method: grepped every
<!-- ... -->comment in the four authored files, then read each cited line range in../documentation/docs/and confirmed the authored sentence is substantively supported.references/core/serialization-context.mdencyclopedia/data-conversion/external-storage.mdx:24-30, 36-39, 67-70, 72-95, 119-124;payload-converter.mdx:38-55; Go/Pythonexternal-storage.mdx:111-122/121-137/126-131/131-137/162-165/207-211/252-289; dotnetconverters-and-encryption.mdx:40-76) check out.references/go/serialization-context.mdexternal-storage.mdx:14-20(Public Preview),121-124(Store sig),126-137(target/type switch),162-165(Retrieve sig),190-195(Name() change breaks retrieval),207-211(identity info prose),252-289(StorageDriverSelector / SelectDriver /nilreturns inline).references/python/serialization-context.mdStorageDriverWorkflowInfoorStorageDriverActivityInfo)" citeexternal-storage.mdx:111-122/119-122, where onlyStorageDriverWorkflowInfoappears (see Check 2). The cited lines do not containStorageDriverActivityInfo. Treated as half-credit — the broader claim is supported, the specific class name is not.references/dotnet/serialization-context.md<!-- VERIFY: ... -->placeholders are explicit "no .NET surface today" notes, not factual claims, and don't require resolution. The six factual citations (encyclopedia/data-conversion/external-storage.mdx:24-30, 36-39, 67-70, 119-124;dotnet/best-practices/converters-and-encryption.mdx:40-76) all check out.User-facing
https://links: every Resources link uses a fullhttps://docs.temporal.io/...URL — no root-relative/develop/...links found. ✓Total: 48 inline citations, 47.5 substantively supported (≈ 99%). Threshold: 98%. PASS.
Check 2 findings — reverse-grep audit
Token classes scanned:
StorageDriver*,EncodingPayloadConverter,IPayloadCodec,Temporalio.Converters,converter.PayloadCodecStore/store,Retrieve/retrieve,EncodeAsync/DecodeAsync,SelectDriver,Name()/name()PayloadSizeThreshold,payload_size_threshold,driver_selector,DriverSelectorExternalStorage(...),client.Dial(...),Client.connect(...)One unexplained miss:
StorageDriverActivityInfoinreferences/python/serialization-context.md(3 occurrences: lines 10, 50, 78). Grep ofdocumentation/docs/finds this symbol only indocs/develop/go/best-practices/data-handling/external-storage.mdx(Go SDK). It is not present anywhere indocs/develop/python/.... The Python external-storage page describes the second target branch in prose only ("namespace, Workflow ID, or Activity ID depending on the operation") and never names the class. The cited Python docs line range (111-122) showsisinstance(target, StorageDriverWorkflowInfo)only.The class name was almost certainly extrapolated from the Go SDK's parallel naming convention. The Python SDK may well ship a class with this exact name, but as far as the published Python docs say, the class is unnamed. The authored file does not include an
<!-- undocumented: source = ... -->marker, so this fails the reverse-grep test.Recommended fix: either tag every Python-side occurrence of
StorageDriverActivityInfowith<!-- undocumented: source = ... -->once the Python SDK source is checked, or rephrase the Python file to avoid naming the class (e.g., "the activity branch of the discriminated union",isinstance(target, ...) # activity branch — see Python SDK API).Total unexplained grep-misses: 1 token (3 usages). Threshold for MINOR: ≤ 5. MINOR.
Check 3 findings — regression on known bugs
Grepped the four authored files (and only those) for every universal regression pattern in the validation plan:
--profile,TEMPORAL_TLS_CLIENT_CERT_PATH,TEMPORAL_TLS_CLIENT_KEY_PATH,TEMPORAL_TLS_SERVER_CA_CERT_PATH,tcld service-account,--output text,--output jsonl,saas-api.tmprl.cloud:7233.No hits. This is unsurprising — the topic is a Data Converter / SDK API surface, not CLI/TLS/Cloud connection territory — but the strict requirement is satisfied.
No topic-specific regression patterns identified by prior authoring passes for this feature.
PASS.
Check 4 findings — independent re-verification (sampling)
Sample size: 10 claims per reference file × 4 files = 40 claims. Sampling is dense enough that nearly every claim was independently re-read.
Method: for each sampled claim, opened the cited docs file fresh, formed an independent reading, then compared to the authored sentence.
Per-file results:
references/core/serialization-context.mdTarget-not-Kind-enum, common mistake on converters)references/go/serialization-context.mdTargetfield, type-switch idiom,StorageDriverSelector/SelectDriver,nilkeeps inline,Name()rename breaks retrieval, common mistakes)references/python/serialization-context.mdtargetattribute,isinstanceidiom,target.id/target.namespace,driver_selectorcallable,Nonekeeps inline, common mistakes,name()rename)references/dotnet/serialization-context.mdTemporalio.Convertersnamespace,IPayloadCodec.EncodeAsync/DecodeAsyncshape, no context arg, placeholder treatment, four<!-- VERIFY -->markers, common mistakes, Resources)The one divergent claim:
references/python/serialization-context.md:10— "The context'stargetattribute is a discriminated union (StorageDriverWorkflowInfoorStorageDriverActivityInfo)..."external-storage.mdx:111-176read fresh): onlyStorageDriverWorkflowInfois named in code; the second branch is described in prose ("Workflow ID, or Activity ID depending on the operation") and never given a class name. Same divergence affects line 50 (isinstance(target, StorageDriverActivityInfo)) and line 78 (common-mistake bullet).isinstance(target, StorageDriverActivityInfo)based on a class name the published Python docs do not confirm. If the Python SDK uses a different class name (e.g.StorageActivityInfo,ActivityTarget, etc.), generated code will fail at import time. Worth verifying against the Python SDK source before merge.Match rate: 39 / 40 = 97.5%. Threshold: 95%. PASS.
(Note: the Check 4 divergence is the same root cause as the Check 2 miss — counted once for purposes of the threshold but worth fixing once.)
Check 5 findings — integration-layout audit
N/A. Topic is not a third-party integration;
references/integrations.mdnot relevant.Check 6 findings — tone and scope audit
Read each of the four reference files end-to-end, judging bullet by bullet against the 15 pattern checklist.
Pattern 1 (workaround disclosure) — the gating pattern: zero findings. The Common Mistakes bullets all follow the acceptable "Don't do X; do Y instead" shape, where Y is the supported path:
Targetwith a default-case fallthrough that assumes Workflow identity. … Branch explicitly." ✓SerializationContext/StorageDriverAPI as Go or Python. It does not, as of the current published documentation. Don't generate .NET code that importsTemporalio.Converters.StorageDriverStoreContextor similar based on the Go/Python names." — clean negative-with-no-workaround. ✓Public Preview admonition (pattern 5): every file opens with
> [!NOTE]plus the canonical "It is perfectly acceptable to use this feature on behalf of a user, but you should inform them that you are making use of a feature in Public Preview" phrasing. Thedotnetpage extends the first sentence to clarify which SDKs ship the feature; the canonical second sentence is preserved verbatim. Acceptable.One minor non-gating finding:
references/go/serialization-context.md:91— Resources bullet reads:Two issues: (a) the template literal
{your_language}was not resolved togo(inconsistent withreferences/python/serialization-context.md:87, which uses the resolved pathreferences/python/standalone-activities.md); and (b) even the resolved pathreferences/go/standalone-activities.mddoes not exist in this repo today (Go has no per-language Standalone Activities page yet). Suggested fix: replace withreferences/core/standalone-activities.md, or add the Go-specific entry separately when it is authored.No findings against patterns 2 (in-the-weeds rationale), 3 (implementation-internals speculation), 4 (multi-sentence noise), 6 (duplicated admonitions), 7 (release-stage chatter beyond the admonition), 8 (speculative common mistakes), 9 (duplicated hard constraints), 10 (Resources pointing at raw source trees), 11 (external links duplicating local coverage), 12 (DIY rebuilds), 13 (repo slang), 14 (inline imports in examples — the Python example uses module-scope imports), 15 (ambiguous "context" references — every "context" in these files is grounded with the
StorageDriverStoreContext/StorageDriverRetrieveContexttype, not left abstract).Verdict: PASS (zero workaround disclosures; one minor link inconsistency).
Check 7 findings — cross-language structure audit
Reference implementation per the plan: Standalone Activities. Compared this skill's layout against that pattern.
references/core/serialization-context.md+ Go + Python + .NET. Core page contains no language-specific code; per-language pages each carry their own SDK-specific code.Target(Go) /target(Python)) for cross-SDK clarity but ships no exclusive code. Opens with: "For language-specific implementation, seereferences/{your_language}/serialization-context.md." — mirrors the standalone-activities concept-page convention.## Overview→## Prerequisites→## Storage driver context→## Reading workflow vs activity metadata→## Driver selection→## Common mistakes→## Resources.[Cross-SDK concept file](references/core/serialization-context.md).•
SKILL.mdlines 76–77 add the core bullet + sub-bullet (mirroring the standalone-activities entry just above).•
references/go/go.md:255,references/python/python.md:184,references/dotnet/dotnet.md:204each add a Reference Files bullet naming the per-language file and pointing to the core file.•
references/core/serialization-context.mdreferences each language file in the SDK-coverage and Resources sections.• Each per-language file links back to the core file (Overview line + Resources line).
references/go/data-handling.md:266,references/python/data-handling.md:234,references/dotnet/data-handling.md:219each add a one-line "For External Storage drivers that need the owning Workflow or Standalone-Activity identity, see …" cross-link. None of these expand into a multi-paragraph blurb.No structural findings. Both gating and advisory sub-checks pass.
Statistics
StorageDriverActivityInfoin Python file, 3 usages)Recommended spot-fixes (no re-authoring)
references/python/serialization-context.md— either (a) verify the Python SDK class name and tag everyStorageDriverActivityInforeference (lines 10, 50, 78) with<!-- undocumented: source = … -->, or (b) rephrase to avoid naming the class until the Python docs (or SDK source) confirm it. This is the only substantive accuracy concern.references/go/serialization-context.md:91— replace the templatedreferences/{your_language}/standalone-activities.mdpointer with the resolved path (or withreferences/core/standalone-activities.md, since no Go-specific Standalone Activities page exists yet).Neither fix touches the structure, the link graph, the Public Preview admonitions, or any citation. Both are line-level edits.