Skip to content

chore(release): v0.11.0 - #319

Open
GrowthX-Team wants to merge 1 commit into
mainfrom
changeset-release/main
Open

chore(release): v0.11.0#319
GrowthX-Team wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@GrowthX-Team

@GrowthX-Team GrowthX-Team commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@outputai/cli@0.11.0

Minor Changes

  • 46d9d66: - Added support for legacy and V2 workflow results from the API, including structured errors;

  • 64a9df7: Add workflow monitor command, update workflow history API to be resumable

  • c717e35: Renamed the workflow eval CLI command to output workflow test (was output workflow test_eval). The short test name is now the only command id; the test_eval name is removed.

  • 2cbd0a2: Add TUI attaching and re-attaching and dev down teardown command

    output dev now detects an existing stack with docker compose ps instead of an
    unconditional host-port probe, so a re-run attaches to a running project stack
    rather than aborting on a collision with its own containers. Attached sessions
    leave the stack up on quit; output dev down stops it.

    A stack whose containers are all stopped counts as a fresh start, not an attach —
    output dev restarts it in the foreground and still tears it down on quit.

    output dev -d gained the pre-flight port probe the foreground path has. This
    matters on Docker Desktop, where a non-container process holding a published port
    does not fail compose up -d: the container starts and the port keeps answering
    the other process, with no error from Docker.

    Note: -d now pipes Docker's output rather than inheriting the terminal, so
    Docker drops its redrawing progress bars for plain scrolling lines.

Patch Changes

  • 14a191e: CLI env loading now uses Node's process.loadEnvFile instead of the dotenv package.
  • 52bedcf: Restore the terminal on abnormal output dev exit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable.
  • 6ce5320: Fix --json output on the workflow start and workflow run commands. workflow start did not support --json at all and errored on the flag; it now emits the workflow result as JSON. workflow run --json corrupted its JSON output when given a scenario argument, because the "Using scenario:" notice was written to stdout. That notice now goes to stderr, and is suppressed entirely under --json so that on success both commands write exactly one JSON object to stdout and nothing else.
  • 3c76007: - Removed install from hot-reload when developing workflows (output dev): nodemon no longer runs npm install on every reload, and package.json is no longer watched. After dependency changes, run npm install, bring the stack down (output dev down if it is still running), and start output dev again.
    • npm run output:worker also no longer installs first — run npm run output:worker:install (or rely on output dev, which still installs on worker start) before build/start. npx output fix rewrites output:worker in existing projects when you apply it.
  • f6a7c1a: fix output dev memory leak in TUI where workflow run details grew unbounded
  • Updated dependencies [09ed166]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [46d9d66]
    • @outputai/llm@0.11.0
    • @outputai/credentials@0.11.0
    • @outputai/evals@0.11.0

@outputai/core@0.11.0

Minor Changes

  • 46d9d66: - Removed workflow and activity wrappers, so both return their original output;

    • Moved trace information to the root workflow's memo, in a new format:
      {
        "trace": {
          "local": "...",
          "remote": "..."
        }
      }
    • Removed aggregations from activity lifecycle and error hook payloads.
    • Added TransparentFatalError, a non-retryable wrapper that surfaces its cause as the original error in logs, traces, hooks and workflow results.
    • Refactored workflow and activity error handling:
      • Workflow
        • ContinueAsNew, throw;
        • Cancellation, throw;
        • FatalError/ValidationError, create an ApplicationFailure and serialize the original error in .details[0].error;
        • TemporalFailure, throw;
        • Other errors, throw;
      • Activity
        • CompleteAsyncError, throw;
        • TemporalFailure, throw;
        • Other errors, create an ApplicationFailure, serialize the original error in .details[0].error, and determine whether it is non-retryable from the error class name and activityInfo.retryPolicy.nonRetryableErrorTypes;
    • Refactored hook error payloads:
      • Workflow errors are now serialized plain objects that preserve name, message, cause, and additional diagnostic properties;
      • Activity and runtime errors remain Error instances;
    • ValidationError now extends from FatalError.
    • FatalError is now always handled as non retryable, user configurable activityOptions.retry.nonRetryableErrorTypes will not overwrite it anymore.
    • Forwarded Temporal SDK and native Core logs through Output's logger for consistent production/development formatting, omitted redundant failure logs (workflow/activity failures), and added OUTPUT_TEMPORAL_LOG_LEVEL to configure verbosity;
    • Refactored workflow and activity error logs:
      • Workflow
        • ContinueAsNew, log a successful workflow end instead of an error;
        • Cancellation, log the serialized error chain without stack or Temporal's internal .failure;
        • FatalError/ValidationError, log the serialized original error without stack;
        • TemporalFailure, log the serialized Temporal error chain without stack or .failure;
        • Other errors, do not log because Temporal retries the Workflow Task;
      • Activity
        • CompleteAsyncError, do not log an error and close the trace node as an asynchronous handoff;
        • TemporalFailure, log the serialized error without stack;
        • Other errors, log the serialized original error without stack before converting it to an ApplicationFailure.
  • eaf62a3: ## Workflow Activity Invocation

    • Refactored workflow activity invocation so steps, evaluators, and shared activities use the same runtime dispatcher
      instead of this-based handler dispatch.

      Workflow handlers no longer need to be rewritten from arrow functions into regular functions for activity dispatch,
      reducing AST rewrite complexity during worker startup and making bundling more predictable.

    • Step and evaluator calls can now be placed in helper functions and imported helper modules used by a workflow.
      Helpers no longer need to pass a workflow-bound this value through their call chain.

    Child Workflow Activity Options

    • A child workflow's definition-level options.activityOptions now override activity options inherited from its parent. Invocation-level activityOptions still override both, and a step or evaluator's own options.activityOptions remain the most specific.

    • If a parent must override a child's retry or timeout configuration, pass activityOptions explicitly when invoking the child workflow.

    Shared Activity Namespaces

    • Removed the previous "$shared" activity namespace by registering shared activities into each workflow namespace. This means workflows can call local and shared activities through the same activity resolution path.

    • Shared activity types now use "<workflow-name>#<activity-name>" instead of "$shared#<activity-name>".

    • Added validation that prevents workflow-scoped activities from using the same activity name as a shared activity. If a workflow defines an activity with the same name as a shared activity, worker startup now fails validation instead of allowing ambiguous activity resolution.

    Workflow Code Validation

    • Added fail-fast validation for default exports and export * declarations in steps/evaluators files. Steps and evaluators already needed to be exposed through named exports for workflow rewriting. The worker now reports these unsupported forms directly during startup.

      // valid
      export const foo = step({ name: "foo" });
      
      // invalid
      export default step({ name: "foo" });
      export * from "./other_steps.js";
    • Added fail-fast validation for unsupported steps/evaluators import shapes. Imports from steps/evaluators files already needed to use named imports or destructured requires for workflow rewriting.

      The worker now fails fast with a validation error for unsupported import shapes like default imports, namespace imports, or non-destructured requires.

      // valid
      import { foo } from "./steps.js";
      const { bar } = require("./evaluators.js");
      
      // invalid
      import foo from "./steps.js";
      import * as steps from "./steps.js";
      const steps = require("./steps.js");
    • Added validation that activity calls must happen inside functions.
      Calling a step or evaluator at module top level now fails validation.

      import { foo } from "./steps.js";
      
      // invalid
      foo();
  • af37678: ## Global proxy

    • Removed Core worker’s automatic global Undici proxy setup. Starting a worker no longer calls setGlobalDispatcher() when proxy environment variables are detected. @outputai/http and @outputai/llm continue configuring their own proxy-aware dispatchers.
      • This affects direct and third-party Fetch/Undici calls that relied on Core’s global dispatcher; calls through @outputai/http or @outputai/llm retain proxy support.
  • cbef793: - workflow(), step(), and evaluator() now pass the value returned by the Zod inputSchema parser to their handler. Workflows and steps also return the value produced by their outputSchema parser. Zod transforms, coercions, defaults, and object-key stripping therefore affect the values handled and returned by these components instead of only validating them.

  • d815a8e: - Added emit() to /hooks entrypoint to emit custom events. Emitted events can be listened using on() and will have their payload wrapped in an envelope:

    {
      eventId: string,
      eventDate: number,
      outputActivityKind?: string,
      workflowDetails?: {},
      activityInfo?: {},
      payload: <original emitted payload>
    }

    Events emitted outside an activity context omit outputActivityKind, workflowDetails, and activityInfo.

    • Added the same wrapping envelope to all other events listened to with on(): http:request, cost:llm:request, cost:http:request;
    • Added internal activity events to activity lifecycle: onActivityStart, onActivityEnd, onActivityError;
    • Updated internal triggers so onError() no longer receives errors from the internal $catalog workflow.

Patch Changes

  • 3d1f9bd: Added hasErrorType() workflow tool. It allows detecting if an error has a given Error class in its error chain, either in .name, .type or instanceof. It can be used to test typed errors thrown from activities.
  • 2caa4a1: - Upgraded Temporal (temporalio/*) libs from v1.17.0 to v1.20.3
    • Upgraded undici from v.8.5.0 to v8.9.0
  • be4ec7f: Added a mechanism to await for all hook callbacks to complete before shutting down the worker. Max awaiting period is 30s.

@outputai/http@0.11.0

Minor Changes

  • af37678: ## HTTP clients

    • Replaced fetch with outputFetch, the explicitly named Fetch-compatible API for traced HTTP requests.

      • Uses Undici as its canonical internal implementation while accepting Node and Undici Request inputs and request options containing either realm's Headers or FormData objects.
      • Normalizes Node request objects at the API boundary instead of replacing Node's global Fetch classes with undici.install().
      • Rejects mixed request families, such as a Node Request combined with Undici FormData.
      • Removed the top-level RequestInfo and RequestInit type exports.
      import { outputFetch } from "@outputai/http";
      
      const response = await outputFetch("https://api.example.com/status");
    • Replaced httpClient with createKyClient, which returns a standard Ky client configured to use outputFetch.

      • Upgraded Ky from 1.14.3 to 2.0.2. Public Ky behavior now follows Ky 2, including the prefix option, state-object hook arguments, empty-response JSON parsing, searchParams merging, and pre-parsed HTTPError.data.
      • Removed the top-level HTTPError, TimeoutError, HttpClientOptions exports.
      • Added the complete Ky namespace as a named export ky.
      import { createKyClient, type ky } from "@outputai/http";
      
      const options: ky.Options = {
        prefix: "https://api.example.com",
        timeout: 30_000,
      };
      const client: ky.KyInstance = createKyClient(options);
    • Changed Ky and Undici from bundled dependencies to peer dependencies.

Patch Changes

@outputai/llm@0.11.0

Minor Changes

  • 09ed166: Added stricter LiquidJs settings for prompt files parsing. The following configurations were added:
    {
      strictFilters: true,
      strictVariables: true,
      lenientIf: true
    }
  • 46d9d66: - Permanent AI SDK failures now surface in logs, traces, hooks, and workflow results as the original AI SDK error (for example AI_APICallError) instead of a wrapping FatalError whose message started with AI-SDK fatal error.
    • Schema-mismatch NoObjectGeneratedError messages are no longer rewritten to append First issue is "…" at path […]. The AI SDK error (and its Zod cause chain) is returned unchanged.

Patch Changes

  • 2caa4a1: - Upgraded liquidJS from v10.25.7 to v10.27.2 (.prompt files template parser).
  • Updated dependencies [46d9d66]
  • Updated dependencies [eaf62a3]
  • Updated dependencies [af37678]
  • Updated dependencies [3d1f9bd]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [be4ec7f]
  • Updated dependencies [cbef793]
  • Updated dependencies [d815a8e]
    • @outputai/core@0.11.0

@outputai/credentials@0.11.0

Patch Changes

@outputai/evals@0.11.0

Patch Changes

  • Updated dependencies [09ed166]
  • Updated dependencies [46d9d66]
  • Updated dependencies [eaf62a3]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [46d9d66]
  • Updated dependencies [af37678]
  • Updated dependencies [3d1f9bd]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [be4ec7f]
  • Updated dependencies [cbef793]
  • Updated dependencies [d815a8e]
    • @outputai/llm@0.11.0
    • @outputai/core@0.11.0

@outputai/output@0.11.0

Patch Changes

  • Updated dependencies [14a191e]
  • Updated dependencies [46d9d66]
  • Updated dependencies [09ed166]
  • Updated dependencies [46d9d66]
  • Updated dependencies [64a9df7]
  • Updated dependencies [52bedcf]
  • Updated dependencies [eaf62a3]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [6ce5320]
  • Updated dependencies [af37678]
  • Updated dependencies [46d9d66]
  • Updated dependencies [af37678]
  • Updated dependencies [3d1f9bd]
  • Updated dependencies [c717e35]
  • Updated dependencies [2caa4a1]
  • Updated dependencies [3c76007]
  • Updated dependencies [be4ec7f]
  • Updated dependencies [f6a7c1a]
  • Updated dependencies [cbef793]
  • Updated dependencies [2cbd0a2]
  • Updated dependencies [d815a8e]
    • @outputai/cli@0.11.0
    • @outputai/llm@0.11.0
    • @outputai/core@0.11.0
    • @outputai/http@0.11.0
    • @outputai/credentials@0.11.0
    • @outputai/evals@0.11.0

output-api@0.11.0

Minor Changes

  • 46d9d66: - Added support for new workflow results without wrappers and with trace information in memo;
    • Added support for the new structured error format, including error details;
    • Added the new workflow result format V2 while preserving support for legacy results:
      {
        "v": "2",
        "workflowId": "xxx",
        "runId": "xxx",
        "status": "failed",
        "input": null,
        "output": null,
        "trace": {
          "local": "...",
          "remote": "..."
        },
        "error": {
          "name": "TypeError",
          "message": "fetch failed",
          "cause": {
            "name": "Error",
            "message": "getaddrinfo ENOTFOUND coolbeans.sofax",
            "errno": -3008,
            "code": "ENOTFOUND",
            "syscall": "getaddrinfo",
            "hostname": "coolbeans.sofax"
          }
        }
      }
  • 64a9df7: Add workflow monitor command, update workflow history API to be resumable
  • b7b2fbe: Removed morgan library, refactored logs to include more information in the message, and renamed the request-log field from status to statusCode.

Patch Changes

  • 2caa4a1: Upgraded Temporal (temporalio/*) libs from v1.17.0 to v.1.20.3

@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 707791f to b4679e7 Compare July 14, 2026 15:34
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from b4679e7 to 0b60b0b Compare July 14, 2026 23:59
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 0b60b0b to 6cb1197 Compare July 17, 2026 21:05
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 6cb1197 to 8494f1c Compare July 21, 2026 19:30
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 8494f1c to fbb0c85 Compare July 22, 2026 17:41
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from fbb0c85 to ae46920 Compare July 24, 2026 16:05
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from ae46920 to 9972a34 Compare July 24, 2026 21:24
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 9972a34 to ff73df1 Compare July 27, 2026 14:55
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from ff73df1 to 17c83d0 Compare July 28, 2026 16:53
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 17c83d0 to d473b98 Compare July 28, 2026 17:05
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from d473b98 to 5bc6bd4 Compare July 28, 2026 17:39
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 5bc6bd4 to 2d42fd6 Compare July 30, 2026 18:29
@GrowthX-Team
GrowthX-Team force-pushed the changeset-release/main branch from 2d42fd6 to 462f21e Compare August 4, 2026 19:14
@claude

This comment was marked as outdated.

Comment thread api/CHANGELOG.md Outdated
Comment thread docs/guides/changelog/index.mdx
@claude

This comment was marked as outdated.

Comment thread docs/guides/changelog/index.mdx
@claude

claude Bot commented Aug 5, 2026

Copy link
Copy Markdown

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Documentation): In the generated docs/guides/changelog/index.mdx 0.11.0 entry, changeset summaries that begin with a Markdown heading are inlined after the bold package prefix, so **\@outputai/core`** — ## Workflow Activity Invocation(lines 33, 100, 131) renders the##as literal text, while the following heading lines (44, 50, 58, …) become realh2elements inside theblock and leak into the page heading structure. This is pre-existing behavior ofdocs/guides/scripts/regenerate.mjs` (v0.10.0 and earlier entries show the same shape), so it is a follow-up for the generator rather than a blocker for this release.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS


- Changed Ky and Undici from bundled dependencies to peer dependencies.

**`output-api`** — Upgraded Temporal (`temporalio/*`) libs from v1.17.0 to v.1.20.3

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nice-to-have / Documentation — v.1.20.3 typo (stray dot) carried in from the changeset. Same string in api/CHANGELOG.md and docs/guides/data/releases.json; the @outputai/core entry two lines down spells it v1.20.3.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Compatibility): The v0.11.0 migration guide has no section for the new fail-fast workflow code validation shipped in @outputai/core. Per the release notes (and sdk/core/src/worker/webpack_loaders/workflow_validator/index.mjs:103 / :119), a worker now refuses to start when a steps/evaluators file uses a default export or export *, when it is consumed via a default import / namespace import / non-destructured require, or when a step or evaluator is called at module top level. Every other break in this release has a dedicated section in docs/guides/migrations/v0.10.0-to-v0.11.0.mdx (API log fields, hook envelopes, HTTP clients, proxy config, shared activity names, child activityOptions precedence, Temporal SDK version, strict prompt Liquid). A user upgrading with one of these forms in a file whose exports were never exercised had a booting worker on 0.10.0 and gets a hard startup failure on 0.11.0, with only the changelog to go on. Downgraded from Must-fix because the failure is fail-fast at startup with an actionable message and the changelog entry includes valid/invalid examples — but the guide should get a ## Workflow code validation section (with the checklist) before this releases.
  2. Nice-to-have (Documentation): v.1.20.3 and v.8.5.0 (stray dot before the digits) are carried from the changesets into permanent published artifacts: api/CHANGELOG.md:12, docs/guides/changelog/index.mdx:129 and :139, plus the matching summary strings in docs/guides/data/releases.json. It reads inconsistently on the public changelog page because the @outputai/core entry immediately below spells the same version v1.20.3 correctly. Fixable in releases.json + the two CHANGELOG.md files before merge; after publish these strings are frozen.
  3. Nice-to-have (Documentation): docs/guides/packages/cli.mdx:640 documents the OUTPUT_API_VERSION default as 1.9, but this PR sets the real default to 0.11.0 in sdk/cli/src/assets/docker/docker-compose-dev.yml:83 (written by sdk/cli/scripts/set_sdk_version.js). The table was already stale, but since the release pass is what moves that value, worth correcting here — or better, dropping the hardcoded number from the table since it changes every release.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS


<Update label="v0.11.0" description="2026-08-05 · minor release">

See the [v0.10.0 → v0.11.0 migration guide](/migrations/v0.10.0-to-v0.11.0).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nice-to-have / Compatibility — the linked guide covers most of this release, but not the new worker fail-fast validations or the output:worker install change.

worker:
condition: service_healthy
image: outputai/api:${OUTPUT_API_VERSION:-0.10.0}
image: outputai/api:${OUTPUT_API_VERSION:-0.11.0}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nice-to-have / Documentation — docs/guides/packages/cli.mdx:644 still documents this default as 1.9.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Compatibility): The v0.11.0 migration guide (docs/guides/migrations/v0.10.0-to-v0.11.0.mdx, linked from the new changelog entry) covers the release's major breaking changes well — API statusstatusCode, hook envelopes, outputFetch/createKyClient + Ky 2 + peer deps, explicit proxy config, the $shared<workflow-name>#<activity> rename with a nondeterminism Warning and three rollout strategies, child-workflow activityOptions precedence, the Temporal SDK v1.20.3 version notice, and strict Liquid rendering. Two behavior changes this release ships have no entry there:
  • @outputai/core fail-fast worker validations — steps/evaluators files using export default, export *, default/namespace imports, non-destructured require, or a top-level activity call now fail worker startup. These forms were already unsupported by workflow rewriting, so risk is low, but a worker that previously started can now refuse to boot after upgrade.
  • @outputai/cli output:worker no longer installs first — existing projects need npx output fix (or a manual npm run output:worker:install) before build/start. docs/guides/operations/deployment/railway.mdx already uses output:worker:install, and the changeset documents it, so it is covered elsewhere — just not on the upgrade path a user follows.

Both are documented in the CHANGELOGs and generated changelog, so the migration bar is substantially met; adding two short subsections would close the gap. Note the guide itself is not part of this diff.
2. Nice-to-have (Documentation): sdk/cli/src/assets/docker/docker-compose-dev.yml:83 moves the OUTPUT_API_VERSION default to 0.11.0, but docs/guides/packages/cli.mdx:644 still documents that default as 1.9 — a value that matches no tag the release publishes (ops/publish_api.sh tags 0.11.0, 0.11, 0, latest). The row was already wrong at 0.10.0, so this is pre-existing drift rather than something this PR breaks; it is worth noting because the release path (ops/bump_release.shset_sdk_version.js) is the only thing that ever changes this default and it does not keep the docs table in sync, so the row re-stales every release. Same class of staleness in docs/guides/operations/deployment/railway.mdx:47 and render.mdx:99, which pin docker.io/outputai/api:0.1.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS


## Workflow Code Validation

- Added fail-fast validation for default exports and `export *` declarations in steps/evaluators files. Steps and evaluators already needed to be exposed through named exports for workflow rewriting. The worker now reports these unsupported forms directly during startup.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Must-fix (Compatibility): these new fail-fast worker-startup validations have no section or checklist item in docs/guides/migrations/v0.10.0-to-v0.11.0.mdx — the changelog is the only place in the docs that mentions them.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

⛔ FAIL

Findings

  1. Must-fix (Compatibility): 0.11.0 migration guide omits the new fail-fast worker-startup validations, so upgrading can stop a previously-booting worker from starting.

This release ships (changeset lazy-suits-stop, now sdk/core/CHANGELOG.md 0.11.0) four new validations that throw unconditionally in the workflow validator webpack loader:

  • export default / export * in a steps or evaluators file — sdk/core/src/worker/webpack_loaders/workflow_validator/index.mjs:129
  • default imports, namespace imports, or non-destructured require from a steps/evaluators path — index.mjs:116
  • a step or evaluator call at module top level — index.mjs:103
  • a workflow-scoped activity name colliding with a shared activity name

A throw in that loader is a webpack build error, which fails worker startup. Concrete case: a folder-based layout (explicitly supported — see the getFileKindLabel comment at index.mjs:49, "Handles both flat files (steps.js) and folder-based files (steps/fetch_data.js)") with a barrel src/workflows/<name>/steps/index.ts containing export * from './fetch_data.js';. That path matches isAnyStepsPath, was not rejected on 0.10.x, and now refuses to build on 0.11.0.

docs/guides/migrations/v0.10.0-to-v0.11.0.mdx never mentions it. The "Workflow runtime changes" section (lines 509–645) covers the $shared activity-type rename, replay nondeterminism, and child activityOptions precedence, and its checklist has no entry for export/import shape or top-level calls. A repo-wide grep of docs/guides/**/*.mdx for named export / export * finds the rule only in the auto-generated changelog entry this PR adds (docs/guides/changelog/index.mdx:60, :68) — no guide page documents it either.

The rest of the migration bar is met well (indexed at docs/guides/migrations/index.mdx:48, version range matches this PR's 0.10.0 → 0.11.0 bump, before/after patterns and per-section checklists throughout), and the failure is loud with a self-explanatory message rather than silent — but a break that prevents the worker from booting needs a subsection with the invalid/valid forms plus checklist lines before this release goes out.

Suggested fix: add a "Steps and evaluators file shape" subsection under "Workflow runtime changes" listing the four rejected forms with their valid replacements (the changeset text already has usable examples), and add matching checklist items.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ⛔ FAIL


**`@outputai/cli`** — Restore the terminal on abnormal `output dev` exit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable.

**`@outputai/core`** — ## Workflow Activity Invocation

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nice-to-have (Documentation): the changeset summary starts with ## Workflow Activity Invocation, and renderChangelogBody concatenates it onto the **pkg** — line, so the ## renders as literal text. The later headings in the same summary (## Child Workflow Activity Options, ## Shared Activity Namespaces, …) do start at line-begin and become real page-level h2s inside the <Update>, leaking into Mintlify's TOC. Same shape at lines 96, 100, 131, 140, 143, 168.

Root cause is docs/guides/scripts/lib/renderer.mjs:29 (untouched here) — pre-existing, but v0.11.0 is the largest instance so far.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Documentation): In docs/guides/changelog/index.mdx, changeset summaries that begin with ## or - get concatenated onto the **pkg** — line (renderer.mjs:29), so the marker renders as literal text (lines 33, 96, 100, 131, 140, 143, 168). Worse, the later headings in those same summaries (## Child Workflow Activity Options, ## Shared Activity Namespaces, ## Workflow Code Validation) do start at line-begin and become real page-level h2s inside the <Update>, leaking into Mintlify's TOC. Pre-existing renderer behavior, but v0.11.0 is the largest instance yet.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS


**`@outputai/cli`** — Restore the terminal on abnormal `output dev` exit. Uncaught exceptions and unhandled rejections now leave the alternate-screen buffer and unmount the TUI before exiting, so scrollback and the error stack stay readable.

**`@outputai/core`** — ## Workflow Activity Invocation

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nice-to-have (Documentation): the generator inlines multi-line changeset summaries after **pkg** — , so the first ## … lands mid-line and renders as literal ##, while the following ## Child Workflow Activity Options / ## Shared Activity Namespaces / ## Workflow Code Validation start a line and become real <h2>s inside the <Update> block — polluting the page TOC. Same for ## HTTP clients (L100) and ## Global proxy (L131).

Pre-existing behavior of docs/guides/scripts/lib/renderer.mjs (also at L252/L504/L882/L956 from earlier releases), not introduced here — flagging because this release adds three more instances. Fix would be in renderChangeBlock (demote/strip headings, or put the summary on its own line).

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Documentation): The changelog generator inlines multi-line changeset summaries after **pkg** — , so ## Workflow Activity Invocation (L33), ## HTTP clients (L100) and ## Global proxy (L131) render as literal ##, while the following headings (## Child Workflow Activity Options, ## Shared Activity Namespaces, ## Workflow Code Validation) start a line and become real <h2>s inside the <Update> block, polluting the page TOC. Pre-existing renderChangeBlock behavior in docs/guides/scripts/lib/renderer.mjs (also present at L252/L504/L882/L956), not introduced here — this release just adds three more instances. Demoting or stripping headings there would fix all of them.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

PR review

Verdict

✅ PASS

Findings

  1. Nice-to-have (Compatibility): The migration guide has no section for the stale-crabs-kiss CLI change shipping in this release: output dev hot-reload no longer runs npm install and npm run output:worker no longer installs first (existing projects need npx output fix). Every other 0.11.0 break has a section in docs/guides/migrations/v0.10.0-to-v0.11.0.mdx; this one only lives in the changelog entry, so users hit a confusing "module not found" after adding a dependency. Adding a short section + checklist item would close the bar.

Categories

  • Design: ✅ PASS
  • Quality: ✅ PASS
  • Correctness: ✅ PASS
  • Documentation: ✅ PASS
  • Changeset: ✅ PASS
  • Tests: ✅ PASS
  • Security: ✅ PASS
  • Compatibility: ✅ PASS

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