Skip to content

docs: apply Vercel technical writing standards - #3704

Open
TooTallNate wants to merge 3 commits into
mainfrom
nrajlich/docs-writing-audit
Open

docs: apply Vercel technical writing standards#3704
TooTallNate wants to merge 3 commits into
mainfrom
nrajlich/docs-writing-audit

Conversation

@TooTallNate

@TooTallNate TooTallNate commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

Audits the complete Workflow SDK documentation corpus, package READMEs, skills, and source TSDoc/comments against the vercel-technical-writing skill and its style-rules.md reference.

  • normalizes content headings to sentence case while preserving every published heading slug
  • removes prose em dashes, filler wording, minimizers, and AI-writing patterns; intentional table placeholders and exact runtime/output strings remain unchanged
  • improves active voice, direct address, self-contained passages, section introductions, and American English
  • standardizes Vercel/product capitalization, Oxford commas, list labels, numbers, units, abbreviations, and UI references
  • labels every previously bare MDX code fence, fixes code-comment prose without changing sample semantics, and keeps v4/v5 behavior distinct
  • applies the same rules to package READMEs, contributor docs, skills, and real source TSDoc/comments (never executable strings or generated payloads)
  • bumps every modified skill's metadata.version, as required by AGENTS.md

This is intentionally a writing-only change. It modifies no executable code, types, runtime strings, APIs, or package behavior.

Scope

  • 335 pages under docs/content/ (v4, v5, and Worlds)
  • 227 TypeScript/TSX source files (comments/TSDoc only)
  • package READMEs, design docs, compiler specifications, workbench guides, docs/README.md, and AGENTS.md
  • generated package CHANGELOG.md files are explicitly excluded
  • 4 skills plus their reference Markdown (skill versions bumped)

Validation

  • pnpm test:docs (985 passed, 290 skipped)
  • pnpm --filter docs lint:links
  • pnpm --filter docs build (903 pages generated)
  • pnpm --filter docs lint:rendered-links
  • pnpm build (28/28 packages)
  • pnpm typecheck (43/43 tasks)
  • pnpm lint (existing advisory warnings only; no new diagnostics from this diff)
  • pnpm test: all suites passed except one existing timing-sensitive world-postgres retention test (should release a retained hook after its deadline); the isolated rerun passed
  • full diff review verified no executable code changes, no changed heading slugs, balanced/labeled fences, valid MDX/frontmatter, and no broken internal links

Intentional exceptions

  • em dashes used as table placeholders for “not applicable” remain
  • em dashes inside exact runtime messages, CLI output, and executable string literals remain
  • technically meaningful uses of words such as temporal “just,” comparative “simple,” and sample data remain
  • frontmatter titles and navigation labels retain their existing title case; content H2-H4 headings use sentence case

Docs Preview

All changed content pages are linked below. The preview deployment requires Vercel team access.

v4 docs (153 pages)
v5 docs (174 pages)
v4 Worlds (4 pages)
v5 Worlds (4 pages)

Audit the complete documentation corpus, package READMEs, skills, and
source TSDoc/comments against the vercel-technical-writing skill and
style-rules.md. Normalize sentence-case headings without changing
published anchors, remove prose em dashes and filler wording, improve
active voice and self-contained phrasing, standardize product/brand
capitalization, American English, list punctuation, units, and code
fence languages, and preserve exact runtime strings/table placeholders.

All executable code is unchanged. Modified skills have their metadata
versions bumped.
@TooTallNate
TooTallNate requested a review from msullivan as a code owner August 20, 2026 23:54
Copilot AI lite review requested due to automatic review settings August 20, 2026 23:54
@TooTallNate
TooTallNate requested review from a team and fantix as code owners August 20, 2026 23:54
@changeset-bot

changeset-bot Bot commented Aug 20, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 47d8bf4

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
example-nextjs-workflow-turbopack Ready Ready Preview Aug 21, 2026 3:02am
example-nextjs-workflow-webpack Ready Ready Preview Aug 21, 2026 3:02am
example-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-astro-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-express-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-fastify-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-hono-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-nestjs-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-nitro-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-nuxt-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-python-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-sveltekit-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-tanstack-start-workflow Ready Ready Preview Aug 21, 2026 3:02am
workbench-vite-workflow Ready Ready Preview Aug 21, 2026 3:02am
workflow-docs Ready Ready Preview, v0 Aug 21, 2026 3:02am
workflow-swc-playground Ready Ready Preview Aug 21, 2026 3:02am
workflow-tarballs Ready Ready Preview Aug 21, 2026 3:02am
workflow-web Ready Ready Preview Aug 21, 2026 3:02am

@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

📊 Workflow Benchmarks

The benchmark run for 47d8bf4 failed. See the run logs for details.

No benchmark results were produced.

ℹ️ Metric definitions & methodology

Metrics —

All timestamps are deployment-side; runs are triggered in-deployment, so the CI runner and api.vercel.com sit outside every measured window. TTFS = start() → first step body (includes dispatch + any cold start); Fan-out TTFS/TTLS = first/last step completion of one Promise.all from the same anchor (the gap is the runtime’s fan-out spread); STSO/WO between step bodies; CRTT inside the workflow (excludes the api.vercel.com read path).

Cold starts stay in the numbers (real bursty-workload latency, inflates P75+); Best is the warm floor.

@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

🧪 E2E Test Results

Some tests failed

❌ Failed E2E Tests

▲ Vercel Production (237 failed)

astro-node (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

astro-quickjs (9 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

example-node (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

example-quickjs (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

express-node (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

express-quickjs (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

fastify-node (9 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

fastify-quickjs (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

hono-node (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

hono-quickjs (11 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nest-node (9 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nest-quickjs (12 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nextjs-turbopack-node (4 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

nextjs-turbopack-quickjs (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

nextjs-webpack-node (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

nextjs-webpack-quickjs (12 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nitro-node (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

nitro-quickjs (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

nuxt-node (11 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

nuxt-quickjs (9 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands

sveltekit-node (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

sveltekit-quickjs (10 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

tanstack-start-node (7 failed):

  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

tanstack-start-quickjs (11 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes validation DX: invalid writes throw catchable FatalErrors naming rule and limit

vite-node (8 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously | wrun_41M0H4EGAY0GSGDJQ43HEEVRCZ | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting

vite-quickjs (9 failed):

  • hookCleanupTestWorkflow - hook token reuse after workflow completion | wrun_41M0H4GXQC0GVSSV9VMX18Y81F | 🔍 observability
  • hookGetConflictWorkflow - hook.getConflict() resolves with the conflicting run when token is already registered | wrun_41M0H4HMFZ0GJ7K3X582BX834D | 🔍 observability
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable | wrun_41M0H4K13Q0GR2B2J0N79MR3NV | 🔍 observability
  • setAttributes start: initial attributes are seeded on run creation
  • setAttributes start: reserved-prefix initial attributes are seeded with allowReservedAttributes
  • setAttributes setAttributesInsideStepWorkflow: step-body calls append attributed native events
  • setAttributes fire-and-forget: void setAttributes lands without awaiting
  • setAttributes Promise.all of disjoint-key writes: every key lands
  • setAttributes workflow throws after awaited setAttributes: attribute still persists on the failed run

⚠️ Flaky E2E Tests (passed on retry)

These tests failed at least once and passed on a retry. A recurring entry here is a real race worth investigating.

26 flaky tests
  • addTenWorkflow (express)
  • cancelRun via CLI - cancelling a running workflow (nextjs-turbopack)
  • cancelRun via CLI - cancelling a running workflow (sveltekit)
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (astro)
  • concurrent hook token conflict - two workflows cannot use the same hook token simultaneously (fastify)
  • hookCleanupTestWorkflow - hook token reuse after workflow completion (nextjs-webpack)
  • hookCleanupTestWorkflow - hook token reuse after workflow completion (tanstack-start)
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable (nest)
  • hookMinRetentionWorkflow - terminal Hook cannot resume and its token stays unavailable (nuxt)
  • Promise.all of disjoint-key writes: every key lands (nest)
  • Promise.all of disjoint-key writes: every key lands (nextjs-turbopack)
  • Promise.all of disjoint-key writes: every key lands (sveltekit)
  • setAttributesInsideStepWorkflow: step-body calls append attributed native events (example)
  • setAttributesInsideStepWorkflow: step-body calls append attributed native events (fastify)
  • setAttributesInsideStepWorkflow: step-body calls append attributed native events (nextjs-webpack)
  • setAttributesWorkflow: workflow-body calls append native attr_set events and merge correctly (vite)
  • start: initial attributes are seeded on run creation (nextjs-turbopack)
  • start: reserved-prefix initial attributes are seeded with allowReservedAttributes (hono)
  • step throw of a non-Error value preserves it as cause on the wrapping FatalError (tanstack-start)
  • validation DX: invalid writes throw catchable FatalErrors naming rule and limit (example)
  • validation DX: invalid writes throw catchable FatalErrors naming rule and limit (nextjs-turbopack)
  • validation DX: invalid writes throw catchable FatalErrors naming rule and limit (nextjs-webpack)
  • validation DX: invalid writes throw catchable FatalErrors naming rule and limit (nitro)
  • validation DX: invalid writes throw catchable FatalErrors naming rule and limit (sveltekit)
  • workflow throws after awaited setAttributes: attribute still persists on the failed run (example)
  • workflow throws after awaited setAttributes: attribute still persists on the failed run (express)

🛠 Infra Events (absorbed by the harness)

Platform anomalies the e2e harness detected and worked around (e.g. a run the queue never picked up, replaced by a fresh run). Clustered timestamps indicate a backend blip; a steady drip indicates a platform issue worth escalating.

  • cold-start-warmup · suite warmup (tanstack-start) · at 03:03:49Z · abandoned wrun_01M0H4BSVRGD8YS14N80JF4K8J

E2E Test Summary

Summary
Passed Failed Skipped Total
❌ ▲ Vercel Production 3341 237 742 4320
✅ 💻 Local Development 3922 0 558 4480
✅ 📦 Local Production 3922 0 558 4480
✅ 🐘 Local Postgres 3922 0 558 4480
✅ 🪟 Windows 160 0 0 160
✅ 🌐 Cross-language Conformance 9 0 132 141
✅ vercel-multi-region 27 0 0 27
Total 15303 237 2548 18088
Details by Category

❌ ▲ Vercel Production

App Passed Failed Skipped
❌ astro-node 122 10 28
❌ astro-quickjs 123 9 28
❌ example-node 124 8 28
❌ example-quickjs 124 8 28
❌ express-node 122 10 28
❌ express-quickjs 122 10 28
❌ fastify-node 123 9 28
❌ fastify-quickjs 124 8 28
❌ hono-node 124 8 28
❌ hono-quickjs 121 11 28
❌ nest-node 123 9 28
❌ nest-quickjs 120 12 28
❌ nextjs-turbopack-node 153 4 3
❌ nextjs-turbopack-quickjs 149 8 3
❌ nextjs-webpack-node 149 8 3
❌ nextjs-webpack-quickjs 145 12 3
❌ nitro-node 122 10 28
❌ nitro-quickjs 122 10 28
❌ nuxt-node 121 11 28
❌ nuxt-quickjs 123 9 28
✅ python-node 8 0 152
❌ sveltekit-node 143 8 9
❌ sveltekit-quickjs 141 10 9
❌ tanstack-start-node 125 7 28
❌ tanstack-start-quickjs 121 11 28
❌ vite-node 124 8 28
❌ vite-quickjs 123 9 28

✅ 💻 Local Development

App Passed Failed Skipped
✅ astro-stable-node 134 0 26
✅ astro-stable-quickjs 134 0 26
✅ express-stable-node 134 0 26
✅ express-stable-quickjs 134 0 26
✅ fastify-stable-node 134 0 26
✅ fastify-stable-quickjs 134 0 26
✅ hono-stable-node 134 0 26
✅ hono-stable-quickjs 134 0 26
✅ nest-stable-node 134 0 26
✅ nest-stable-quickjs 134 0 26
✅ nextjs-turbopack-canary-node 141 0 19
✅ nextjs-turbopack-canary-quickjs 141 0 19
✅ nextjs-turbopack-stable-node 160 0 0
✅ nextjs-turbopack-stable-quickjs 160 0 0
✅ nextjs-webpack-canary-node 141 0 19
✅ nextjs-webpack-canary-quickjs 141 0 19
✅ nextjs-webpack-stable-node 160 0 0
✅ nextjs-webpack-stable-quickjs 160 0 0
✅ nitro-stable-node 134 0 26
✅ nitro-stable-quickjs 134 0 26
✅ nuxt-stable-node 134 0 26
✅ nuxt-stable-quickjs 134 0 26
✅ sveltekit-stable-node 153 0 7
✅ sveltekit-stable-quickjs 153 0 7
✅ tanstack-start-node 134 0 26
✅ tanstack-start-quickjs 134 0 26
✅ vite-stable-node 134 0 26
✅ vite-stable-quickjs 134 0 26

✅ 📦 Local Production

App Passed Failed Skipped
✅ astro-stable-node 134 0 26
✅ astro-stable-quickjs 134 0 26
✅ express-stable-node 134 0 26
✅ express-stable-quickjs 134 0 26
✅ fastify-stable-node 134 0 26
✅ fastify-stable-quickjs 134 0 26
✅ hono-stable-node 134 0 26
✅ hono-stable-quickjs 134 0 26
✅ nest-stable-node 134 0 26
✅ nest-stable-quickjs 134 0 26
✅ nextjs-turbopack-canary-node 141 0 19
✅ nextjs-turbopack-canary-quickjs 141 0 19
✅ nextjs-turbopack-stable-node 160 0 0
✅ nextjs-turbopack-stable-quickjs 160 0 0
✅ nextjs-webpack-canary-node 141 0 19
✅ nextjs-webpack-canary-quickjs 141 0 19
✅ nextjs-webpack-stable-node 160 0 0
✅ nextjs-webpack-stable-quickjs 160 0 0
✅ nitro-stable-node 134 0 26
✅ nitro-stable-quickjs 134 0 26
✅ nuxt-stable-node 134 0 26
✅ nuxt-stable-quickjs 134 0 26
✅ sveltekit-stable-node 153 0 7
✅ sveltekit-stable-quickjs 153 0 7
✅ tanstack-start-node 134 0 26
✅ tanstack-start-quickjs 134 0 26
✅ vite-stable-node 134 0 26
✅ vite-stable-quickjs 134 0 26

✅ 🐘 Local Postgres

App Passed Failed Skipped
✅ astro-stable-node 134 0 26
✅ astro-stable-quickjs 134 0 26
✅ express-stable-node 134 0 26
✅ express-stable-quickjs 134 0 26
✅ fastify-stable-node 134 0 26
✅ fastify-stable-quickjs 134 0 26
✅ hono-stable-node 134 0 26
✅ hono-stable-quickjs 134 0 26
✅ nest-stable-node 134 0 26
✅ nest-stable-quickjs 134 0 26
✅ nextjs-turbopack-canary-node 141 0 19
✅ nextjs-turbopack-canary-quickjs 141 0 19
✅ nextjs-turbopack-stable-node 160 0 0
✅ nextjs-turbopack-stable-quickjs 160 0 0
✅ nextjs-webpack-canary-node 141 0 19
✅ nextjs-webpack-canary-quickjs 141 0 19
✅ nextjs-webpack-stable-node 160 0 0
✅ nextjs-webpack-stable-quickjs 160 0 0
✅ nitro-stable-node 134 0 26
✅ nitro-stable-quickjs 134 0 26
✅ nuxt-stable-node 134 0 26
✅ nuxt-stable-quickjs 134 0 26
✅ sveltekit-stable-node 153 0 7
✅ sveltekit-stable-quickjs 153 0 7
✅ tanstack-start-node 134 0 26
✅ tanstack-start-quickjs 134 0 26
✅ vite-stable-node 134 0 26
✅ vite-stable-quickjs 134 0 26

✅ 🪟 Windows

App Passed Failed Skipped
✅ nextjs-turbopack-node 160 0 0

✅ 🌐 Cross-language Conformance

App Passed Failed Skipped
✅ python 9 0 132

✅ vercel-multi-region

App Passed Failed Skipped
✅ nextjs-turbopack 27 0 0

📋 View full workflow run

@github-actions

github-actions Bot commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Sim World

Simulated world deterministic testing for races. Traces

🟠 world-sim scenario book — 1 fail of 41 total

fence=per-spec

scenario outcome events virt replay violations
smoke-no-steps completed 3 0ms ok 0
smoke-one-step completed 6 0ms ok 0
hook-at-step-started completed 12 0ms ok 0
hook-at-step-completed completed 12 0ms ok 0
hook-at-hook-created completed 12 0ms ok 0
deadline-hook-wins completed 7 1.0h ok 0
deadline-expires completed 7 1.0h ok 0
long-sleep completed 11 30.0d ok 0
hook-never-arrives stalled 3 0ms skipped 0
step-retries-twice completed 10 2.0s ok 0
parallel-steps completed 9 0ms ok 0
hook-on-execution-state completed 12 0ms ok 0
peek-hook-before-branch completed 12 0ms ok 0
peek-hook-after-branch completed 12 0ms ok 0
peek-hook-at-registration completed 12 0ms ok 0
race-hook-before-probe completed 12 0ms ok 0
race-hook-after-probe completed 12 0ms ok 0
race-duplicate-delivery completed 13 0ms ok 0
attr-hook-before-step completed 11 0ms ok 0
attr-hook-after-step completed 11 0ms ok 0
attr-from-step-body completed 13 0ms ok 0
fork-hook-after-timeout completed 14 1.0m ok 0
fork-hook-before-timeout completed 14 1.0m ok 0
count-hook-after-timeout completed 17 1.0m ok 0
count-hook-before-timeout completed 20 1.0m ok 0
stale-read-step-count-fork completed 20 1.0m ok 0
stale-read-equal-step-counts completed 14 1.0m ok 0
step-vs-step-fork completed 12 0ms ok 0
step-vs-step-fork-fenced completed 12 0ms ok 0
fence-catches-benign-direction completed 12 5ms ok 0
in-flight-before-decision completed 17 1.0m ok 0
in-flight-before-decision-counted completed 17 1.0m ok 0
in-flight-after-decision completed 19 2.0m ok 0
stale-read-step-count-fork-fenced completed 20 1.0m ok 0
fork-hook-wins completed 13 1.0m ok 0
fork-timeout-wins completed 13 1.0m ok 0
unclaimed-payload-under-fork completed 17 1.0m ok 0
claimed-payload-under-fork completed 17 1.0m ok 0
writers-independent-step-bodies completed 12 0ms ok 0
writers-scripted-tempo completed 12 0ms ok 0
cancel-mid-step cancelled 7 0ms skipped 0

Full trace: world-sim.txt

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Applies Vercel technical-writing style rules across the Workflow SDK documentation, skills/reference material, package READMEs, and in-code comments/TSDoc—intended to be a writing-only change with no runtime/API behavior changes.

Changes:

  • Normalizes headings and prose style (sentence case, punctuation, filler removal) across docs and reference content.
  • Updates in-repo skills and package READMEs for consistent terminology/capitalization and clearer phrasing.
  • Refines inline code comments/TSDoc (clarity/punctuation) across multiple packages without changing executable logic.

Reviewed changes

Copilot reviewed 244 out of 582 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
skills/workflow-init/SKILL.md Bumps skill version + sentence-case headings and prose tweaks.
skills/migrating-to-workflow-sdk/references/temporal.md Punctuation/clarity edits in migration mapping reference.
skills/migrating-to-workflow-sdk/references/retries.md Link-list formatting/wording standardization.
skills/migrating-to-workflow-sdk/references/inngest.md Punctuation/clarity edits in migration checklist.
skills/migrating-to-workflow-sdk/references/aws-step-functions.md Punctuation/clarity edits in migration checklist.
packages/world/src/ulid.ts Comment wording/punctuation tweaks only.
packages/world/src/steps.ts Comment wording tweak only.
packages/world/src/spec-version.ts Comment wording/punctuation tweaks only.
packages/world/src/node-http.ts Comment punctuation tweak only.
packages/world/src/attributes.ts Comment punctuation tweaks only.
packages/world-vercel/src/ws-transport-enabled.ts Comment punctuation tweaks only.
packages/world-vercel/src/steps.ts Comment punctuation tweaks only.
packages/world-vercel/src/run-id/codec.ts Comment punctuation tweaks only.
packages/world-vercel/src/instrumentObject.ts Comment punctuation tweaks only.
packages/world-vercel/src/index.ts Comment punctuation tweaks only.
packages/world-vercel/src/analytics.ts Comment punctuation tweak only.
packages/world-vercel/README.md Prose tweaks for clarity/terminology (Node.js, examples).
packages/world-sim/src/streams.ts Comment punctuation tweak only.
packages/world-sim/src/queue.ts Comment punctuation + American English (“behavior”).
packages/world-sim/src/load.ts Comment clarity/punctuation tweaks only.
packages/world-sim/src/invariants.ts Comment punctuation tweaks only.
packages/world-sim/src/index.ts Comment punctuation tweaks only.
packages/world-sim/src/drive.ts Comment punctuation tweaks only.
packages/world-sim/src/clock.ts Comment punctuation tweaks only.
packages/world-postgres/src/queue.ts Comment wording tweaks only.
packages/world-local/src/telemetry.ts Comment punctuation tweak only.
packages/world-local/src/storage/runs-storage.ts Comment punctuation tweaks only.
packages/world-local/src/storage/legacy.ts Comment punctuation tweaks only.
packages/world-local/src/storage/hooks-storage.ts Comment punctuation tweaks only.
packages/world-local/src/init.ts Comment punctuation tweak only.
packages/world-local/src/index.ts Comment punctuation tweaks only.
packages/workflow/src/internal/builtins.ts Comment rewrite for clarity (no logic changes).
packages/web-shared/src/lib/zstd-browser-decoder.ts Comment punctuation tweak only.
packages/web-shared/src/lib/utils.ts Comment punctuation tweak only.
packages/web-shared/src/components/workflow-traces/trace-span-construction.ts Comment wording/punctuation tweaks only.
packages/web-shared/src/components/ui/timestamp-tooltip.tsx Comment wording + heading punctuation tweaks only.
packages/web-shared/src/components/ui/error-stack-block.tsx Comment punctuation/wording tweaks only.
packages/web-shared/src/components/ui/data-inspector.tsx Comment punctuation tweak only.
packages/web-shared/src/components/trace-viewer/trace-viewer.tsx Comment punctuation tweaks only.
packages/web-shared/src/components/trace-viewer/components/use-row-window.ts Comment punctuation tweak only.
packages/web-shared/src/components/trace-viewer/components/minimap.tsx Comment punctuation tweaks only.
packages/web-shared/src/components/trace-viewer/components/draggable-border.tsx Comment punctuation tweak only.
packages/web-shared/src/components/trace-viewer/components/detail-panel.tsx Comment punctuation tweak only.
packages/web-shared/src/components/trace-viewer/components/detail-panel-width.ts Comment punctuation tweaks only.
packages/web-shared/src/components/stream-viewer.tsx Comment punctuation tweak only.
packages/web-shared/src/components/sidebar/resolve-hook-modal.tsx JSX comment punctuation tweaks only.
packages/web-shared/src/components/sidebar/events-list.tsx Comment punctuation tweaks only.
packages/web-shared/src/components/sidebar/entity-detail-panel.tsx Comment punctuation tweak only.
packages/web-shared/README.md Prose/style tweaks; clarifies auth note and Next.js/Tailwind wording.
packages/vite/src/hot-update.ts Comment wording tweak only.
packages/utils/src/world-target.ts Comment punctuation tweak only.
packages/sveltekit/src/plugin.ts Comment punctuation tweak only.
packages/rollup/src/index.ts Comment punctuation tweaks only.
packages/nitro/src/types.ts Doc comment wording/punctuation tweaks only.
packages/nitro/src/builders.ts Doc comment wording/punctuation tweaks only.
packages/next/src/watch-ignore.ts Comment punctuation tweaks only.
packages/next/src/builder-eager.ts Comment punctuation tweak only.
packages/nest/src/workflow.module.ts Doc comment punctuation tweak only.
packages/nest/src/cjs-rewrite.ts Comment punctuation tweaks only.
packages/errors/src/internal-chalk.ts Comment punctuation tweaks only.
packages/docs-typecheck/src/type-checker.ts Comment punctuation tweak only.
packages/docs-typecheck/src/docs-globals.d.ts Comment punctuation tweak only.
packages/core/src/workflow/world-init-stub.ts Comment punctuation tweak only.
packages/core/src/workflow/sleep.ts Comment punctuation tweak only.
packages/core/src/workflow/set-attributes.ts Comment punctuation tweak only.
packages/core/src/workflow/get-workflow-metadata.ts Comment punctuation tweak only.
packages/core/src/workflow/create-hook.ts Comment punctuation tweak only.
packages/core/src/vm/uint8array-base64.ts Comment punctuation tweak only.
packages/core/src/vm/index.ts Comment punctuation tweaks only.
packages/core/src/symbols.ts Comment punctuation tweaks only.
packages/core/src/source-map.ts Comment punctuation tweaks only.
packages/core/src/set-attributes.ts Comment punctuation tweak only.
packages/core/src/serialization/workflow-vm.ts Comment punctuation tweak only.
packages/core/src/serialization/step.ts Comment wording tweak only.
packages/core/src/serialization/reducers/step-function.ts Comment wording tweak only.
packages/core/src/serialization/reducers/step-function-vm.ts Comment punctuation tweak only.
packages/core/src/serialization/reducers/class.ts Comment punctuation tweak only.
packages/core/src/serialization/reducers/class-vm.ts Comment punctuation tweak only.
packages/core/src/serialization/index.ts Comment punctuation tweak only.
packages/core/src/serialization/format.ts Comment list formatting/punctuation tweaks only.
packages/core/src/serialization/errors.ts Comment punctuation tweak only.
packages/core/src/serialization/codec.ts Doc comment punctuation/clarity tweaks only.
packages/core/src/serialization/codec-devalue.ts Comment punctuation tweak only.
packages/core/src/serialization/codec-devalue-vm.ts Comment punctuation/clarity tweaks only.
packages/core/src/serialization/client.ts Comment wording tweak only.
packages/core/src/runtime/world.ts Comment punctuation tweaks only.
packages/core/src/runtime/world-init.ts Comment punctuation/clarity tweaks only.
packages/core/src/runtime/wait-until.ts Comment punctuation tweak only.
packages/core/src/runtime/vm-mode.ts Comment wording tweak only.
packages/core/src/runtime/unserializable-step.ts Comment punctuation tweaks only.
packages/core/src/runtime/runs.ts Comment punctuation tweaks only.
packages/core/src/runtime/run-id-time.ts Comment punctuation tweaks only.
packages/core/src/runtime/replay-recovery-reporter.ts Comment punctuation tweak only.
packages/core/src/runtime/get-world-lazy.ts Comment formatting tweaks only.
packages/core/src/runtime/compute-instance.ts Comment terminology tweaks (ID/OpenTelemetry) only.
packages/core/src/replay-payload-cache.ts Comment punctuation tweaks only.
packages/core/src/logger.ts Comment punctuation tweaks only.
packages/core/src/index.ts File header comment wording tweak only.
packages/core/src/global.ts Comment punctuation tweak only.
packages/core/src/define-hook.ts Comment punctuation tweak only.
packages/core/src/create-hook.ts Doc comment punctuation tweaks only.
packages/core/src/capture-stack.ts Comment punctuation tweak only.
packages/cli/src/lib/inspect/web.ts Comment punctuation tweaks only.
packages/cli/src/lib/inspect/vercel-link.ts Comment punctuation tweaks only.
packages/cli/src/lib/inspect/run.ts Comment punctuation tweak only.
packages/cli/src/lib/inspect/env.ts Comment wording/punctuation tweaks only.
packages/cli/src/lib/inspect/auth.ts Comment wording tweak only.
packages/cli/src/lib/bulk-cancel.ts Comment punctuation tweaks only.
packages/builders/src/vercel-build-output-api.ts Comment punctuation tweak only.
packages/builders/src/types.ts Doc comment wording tweaks only.
packages/builders/src/optional-ws-native.ts Comment punctuation tweak only.
packages/builders/src/optional-typescript.ts Comment punctuation tweak only.
packages/builders/src/optional-otel-api.ts Comment punctuation tweak only.
packages/builders/src/node-module-esbuild-plugin.ts Comment punctuation tweaks only.
packages/builders/src/module-specifier.ts Comment punctuation tweak only.
packages/builders/src/fast-discovery.ts Comment punctuation tweak only.
packages/builders/src/constants.ts Comment punctuation tweaks only.
packages/builders/README.md Heading sentence-case normalization.
packages/ai/src/stream-iterator.ts Comment punctuation tweak only.
packages/ai/src/providers/mock.ts Comment punctuation/clarity tweaks only.
packages/ai/src/normalize-ui-message-stream.ts Comment punctuation tweak only.
packages/ai/src/agent/types.ts Comment wording tweak only.
packages/ai/src/agent/telemetry.ts Comment wording/American English tweaks only.
packages/ai/src/agent/do-stream-step.ts Comment punctuation/clarity tweaks only.
packages/ai/README.md Heading sentence-case normalization + wording tweaks.
docs/README.md Heading sentence-case normalization.
docs/content/worlds/v4/local.mdx Heading sentence-case normalization.
docs/content/docs/v5/internal/nitro-web-ui.mdx Prose/list punctuation tweaks; link label formatting.
docs/content/docs/v5/internal/nitro-native-build.mdx Link-list formatting tweaks.
docs/content/docs/v5/internal/index.mdx Link-list formatting tweaks.
docs/content/docs/v5/getting-started/python.mdx Heading sentence-case normalization.
docs/content/docs/v5/foundations/versioning.mdx Prose clarity tweaks.
docs/content/docs/v5/errors/workflow-not-registered.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v5/errors/step-not-registered.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v5/errors/step-executed-multiple-times.mdx Heading normalization.
docs/content/docs/v5/errors/start-invalid-workflow-function.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v5/errors/replay-divergence.mdx Heading normalization.
docs/content/docs/v5/errors/node-js-module-in-workflow.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v5/errors/index.mdx Heading normalization.
docs/content/docs/v5/cookbook/common-patterns/rate-limiting.mdx Pattern heading casing normalization.
docs/content/docs/v5/configuration/cli-and-web-ui.mdx Wording/terminology tweaks (UI expansion, canceled).
docs/content/docs/v5/changelog/index.mdx List formatting changes (date in parentheses).
docs/content/docs/v5/api-reference/workflow/sleep.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow/set-attributes.mdx Prose punctuation tweak for clarity.
docs/content/docs/v5/api-reference/workflow/retryable-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow/index.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow/get-workflow-metadata.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow/get-step-metadata.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow/fatal-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-sveltekit/workflow-plugin.mdx Table copy/punctuation tweaks.
docs/content/docs/v5/api-reference/workflow-serde/workflow-deserialize.mdx Heading casing + prose tightening.
docs/content/docs/v5/api-reference/workflow-serde/index.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-runtime/world/index.mdx Prose punctuation tweak (dash → parentheses) + terminology.
docs/content/docs/v5/api-reference/workflow-runtime/workflow-entrypoint.mdx Prose clarity tweaks + heading casing.
docs/content/docs/v5/api-reference/workflow-runtime/set-world.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-runtime/index.mdx Intro text rewrite + heading casing normalization.
docs/content/docs/v5/api-reference/workflow-runtime/health-check.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-runtime/get-world.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-runtime/get-world-handlers.mdx Prose punctuation tweaks + related list formatting.
docs/content/docs/v5/api-reference/workflow-observability/parse-class-name.mdx Terminology tweak (“user interface”) + punctuation.
docs/content/docs/v5/api-reference/workflow-observability/observability-revivers.mdx Prose punctuation tweaks only.
docs/content/docs/v5/api-reference/workflow-nuxt/index.mdx Terminology expansions (SSR/IDE) + punctuation.
docs/content/docs/v5/api-reference/workflow-nest/workflow-controller.mdx Prose punctuation tweak.
docs/content/docs/v5/api-reference/workflow-nest/configure-workflow-controller.mdx Prose punctuation tweak + heading casing.
docs/content/docs/v5/api-reference/workflow-errors/workflow-runtime-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-errors/workflow-run-not-found-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v5/api-reference/workflow-errors/workflow-run-not-completed-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v5/api-reference/workflow-errors/workflow-run-cancelled-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-errors/workflow-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v5/api-reference/workflow-errors/too-early-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-errors/throttle-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-errors/run-not-supported-error.mdx Prose punctuation tweak + heading casing.
docs/content/docs/v5/api-reference/workflow-errors/run-expired-error.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-errors/hook-conflict-error.mdx Prose punctuation tweak + terminology (“virtual machine contexts”).
docs/content/docs/v5/api-reference/workflow-errors/entity-conflict-error.mdx Comment punctuation tweak + terminology (“virtual machine contexts”).
docs/content/docs/v5/api-reference/workflow-api/resume-webhook.mdx Heading casing normalization.
docs/content/docs/v5/api-reference/workflow-api/index.mdx Intro rewrite + callout punctuation tweak.
docs/content/docs/v5/api-reference/workflow-ai/index.mdx Intro rewrite + deprecated label formatting.
docs/content/docs/v5/ai/streaming-updates-from-tools.mdx Heading casing normalization.
docs/content/docs/v5/ai/defining-tools.mdx Prose clarity fixes + heading casing normalization.
docs/content/docs/v4/internal/index.mdx Heading casing normalization.
docs/content/docs/v4/getting-started/python.mdx Heading casing normalization.
docs/content/docs/v4/errors/workflow-not-registered.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v4/errors/step-not-registered.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v4/errors/step-executed-multiple-times.mdx Heading normalization.
docs/content/docs/v4/errors/start-invalid-workflow-function.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v4/errors/replay-divergence.mdx Heading normalization.
docs/content/docs/v4/errors/node-js-module-in-workflow.mdx Heading normalization + code fence labeled as text.
docs/content/docs/v4/errors/index.mdx Heading normalization.
docs/content/docs/v4/changelog/index.mdx List formatting changes (date in parentheses).
docs/content/docs/v4/api-reference/workflow/sleep.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow/retryable-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow/index.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow/get-workflow-metadata.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow/get-step-metadata.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow/fetch.mdx Heading casing + prose tightening in examples.
docs/content/docs/v4/api-reference/workflow/fatal-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-vite/workflow.mdx Terminology expansions (IDE) + punctuation in returns text.
docs/content/docs/v4/api-reference/workflow-sveltekit/workflow-plugin.mdx Returns text punctuation tweak.
docs/content/docs/v4/api-reference/workflow-serde/workflow-serialize.mdx Prose tightening only.
docs/content/docs/v4/api-reference/workflow-serde/workflow-deserialize.mdx Prose tightening only.
docs/content/docs/v4/api-reference/workflow-serde/index.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/world/index.mdx Prose punctuation + terminology (“user interface (UI)”).
docs/content/docs/v4/api-reference/workflow-runtime/step-entrypoint.mdx Prose punctuation + heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/set-world.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/index.mdx Intro rewrite + heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/health-check.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/get-world.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-runtime/get-world-handlers.mdx Prose punctuation tweaks + related list formatting.
docs/content/docs/v4/api-reference/workflow-observability/parse-class-name.mdx Terminology tweak (“user interface”) + punctuation.
docs/content/docs/v4/api-reference/workflow-observability/observability-revivers.mdx Prose punctuation tweaks only.
docs/content/docs/v4/api-reference/workflow-nuxt/index.mdx Terminology expansions (SSR/IDE) + punctuation.
docs/content/docs/v4/api-reference/workflow-nest/workflow-controller.mdx Prose punctuation tweak.
docs/content/docs/v4/api-reference/workflow-nest/configure-workflow-controller.mdx Prose punctuation tweak + heading casing.
docs/content/docs/v4/api-reference/workflow-errors/workflow-runtime-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-errors/workflow-run-not-found-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v4/api-reference/workflow-errors/workflow-run-not-completed-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v4/api-reference/workflow-errors/workflow-run-cancelled-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-errors/workflow-error.mdx Prose punctuation tweaks + terminology (“virtual machine contexts”).
docs/content/docs/v4/api-reference/workflow-errors/too-early-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-errors/throttle-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-errors/run-not-supported-error.mdx Prose punctuation tweak + heading casing.
docs/content/docs/v4/api-reference/workflow-errors/run-expired-error.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-errors/hook-conflict-error.mdx Prose punctuation tweak + terminology (“virtual machine contexts”).
docs/content/docs/v4/api-reference/workflow-errors/entity-conflict-error.mdx Comment punctuation tweak + terminology (“virtual machine contexts”).
docs/content/docs/v4/api-reference/workflow-astro/workflow.mdx Prose punctuation tweak (dash → colon).
docs/content/docs/v4/api-reference/workflow-api/resume-webhook.mdx Heading casing normalization.
docs/content/docs/v4/api-reference/workflow-api/index.mdx Intro rewrite + callout punctuation tweak.
docs/content/docs/v4/api-reference/workflow-ai/index.mdx Intro rewrite + deprecated label formatting.
docs/content/docs/v4/ai/streaming-updates-from-tools.mdx Heading casing normalization.
docs/content/docs/v4/ai/defining-tools.mdx Prose clarity fixes + heading casing normalization.
.changeset/technical-writing-audit.md Adds a changeset file (currently empty/placeholder).

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .changeset/technical-writing-audit.md
Apply the same technical-writing rules to design documents, compiler
specifications, workbench guides, package changelogs, and the remaining
tracked Markdown outside the deployed docs corpus. Preserve historical
meaning, commands, output literals, table placeholders, and heading
anchors.

@pranaygp pranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm although we should probably also just install the skill in this repo itself and have agents.md remember to always use it going forward

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.

3 participants