Skip to content

feat: [6/6] document package and validate large payload usage - #393

Open
wangbill (YunchuWang) wants to merge 1 commit into
yunchuwang-payload-phase-5-workerfrom
yunchuwang-payload-phase-6-release
Open

wangbill (YunchuWang) wants to merge 1 commit into
yunchuwang-payload-phase-5-workerfrom
yunchuwang-payload-phase-6-release

Conversation

@YunchuWang

@YunchuWang wangbill (YunchuWang) commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Summary

What changed?

  • Wire the optional package into existing prepare-release and official build/release packaging, without broadening CI triggers or publishing anything.
  • Add the 300 KiB runnable example, package/root configuration and cleanup documentation, changelogs and ordered migration/release guidance.
  • Add real packed-consumer checks that reject npm-published core 0.4.0, accept the completed core >=0.4.1, load runtime APIs and type-check ES2020 declarations without global ErrorOptions.
  • Remove phase-only interim documentation and unrelated README/code-block/line-ending formatting changes. Keep the original oversized PR branch/history intact.

Why is this change needed?

  • Phase 6/6 of the requested large-payload implementation split. This PR's base is phase 5's branch, so its diff excludes previously reviewed phases.
  • Behavioral reference: durabletask-dotnet 91739687. The complete stack preserves the original implementation at c9b53fcb3ab8585c4b3b22f9c0500cc9dd122c5a, with the documented instance-kind routing correction.

Issues / work items

  • Resolves: N/A (user-requested phased feature review).
  • Related: original oversized PR #387. It is preserved while the coordinator verifies this replacement stack.

Project checklist

  • Release notes are not required for the next release
    • Otherwise: Notes added to CHANGELOG.md
  • Backport is not required
    • Otherwise: Backport tracked by issue/PR #issue_or_pr
  • All required tests have been added/updated (unit tests, E2E tests)
  • Breaking change?
    • If yes:
      • Impact: No intentional API break in this phase; the payload feature remains opt-in.
      • Migration guidance: Do not release partial phases. Merge the stack in order and publish the completed core before dependent packages.

AI-assisted code disclosure (required)

Was an AI tool used? (select one)

  • No
  • Yes, AI helped write parts of this PR (e.g., GitHub Copilot)
  • Yes, an AI agent generated most of this PR

If AI was used:

  • Tool(s): GitHub Copilot.
  • AI-assisted areas/files: This phase's source, regression tests, and directly related metadata/documentation.
  • What you changed after AI output: Split the implementation along independently buildable boundaries; retained focused regression evidence and removed unrelated formatting-only changes. Human review is still required.

AI verification (required if AI was used):

  • I understand the code and can explain it
  • I verified referenced APIs/types exist and are correct
  • I reviewed edge cases/failure paths (timeouts, retries, cancellation, exceptions)
  • I reviewed concurrency/async behavior
  • I checked for unintended breaking or behavior changes

These human attestations are intentionally left unchecked.


Testing

Automated tests

  • Result: Passed locally for this phase, without later-phase files.
  • npm ci --offline --no-audit --no-fund — passed for the complete final lockfile.
  • npm run build — passed all five workspaces.
  • npm run lint — passed.
  • npm run test:unit — passed 3,003 tests in 133 suites (core 1,851; Functions 226; Blob 39; Azure-managed 821; export-history 66). The 10 optional Azurite tests were run separately below.
  • npm run test:azurite -w @microsoft/durabletask-js-azureblob with a local-only connection string — passed all 10 real-Azurite/.NET-fixture checks.
  • npm --registry=https://packagefeedproxy.microsoft.io/npm run test:payload-packages -- $oldCoreArchive with the actual published 0.4.0 tgz — passed old-core ERESOLVE checks, new package runtime loading, structural error causes and strict ES2020 declaration compilation.
  • npm pack --dry-run --json --workspace @microsoft/durabletask-js --workspace @microsoft/durabletask-js-azureblob — passed; 219/8 packaged files with generated protocol/entry points and no tests/reference artifacts.
  • Release YAML parsed with js-yaml; the new example passed TypeScript no-emit checking; scoped source/new-doc formatting and incremental/aggregate git diff checks passed.
  • Syntax-aware aggregate comparison: 35 original code/config files match c9b53fc; SDK worker and extracted runner behavior match; the only client behavior delta is unconditional purge instance-kind routing.
  • git diff --check yunchuwang-payload-phase-5-worker...HEAD — passed.
  • Hosted CI: pending/not inferred. Existing main-base filters mean some workflows will not run for stacked PRs; no workflow triggers were broadened.

Manual validation (only if runtime/behavior changed)

  • Environment (OS, Node.js version, components): Windows, Node.js v24.14.0; all workspace units, real local Azurite 3.37.0, actual .NET 10 gzip vectors, packed npm consumers and ES2020 TypeScript.
  • Steps + observed results:
    1. Materialized this phase on its declared predecessor, with no future-phase imports.
    2. Ran the exact owning checks above and inspected the incremental patch.
    3. Verified the full dependency stack, clean package graph and final semantic delta against the preserved original implementation; no cloud resources, merges or npm publications.
  • Evidence (optional): Full local logs are session artifacts, not repository changes.

Notes for reviewers

Merge order Phase PR Base branch
1 Core contracts #388 main
2 SDK integration #389 yunchuwang-payload-phase-1-core
3 Azure Blob provider #390 yunchuwang-payload-phase-2-sdk
4 Purge protocol/client #391 yunchuwang-payload-phase-3-blob
5 Purge worker #392 yunchuwang-payload-phase-4-client
6 Release/usage/consumers #393 yunchuwang-payload-phase-5-worker

Merge 1 → 2 → 3 → 4 → 5 → 6. Each PR targets its predecessor; retarget the next PR only after its prerequisite merges. Do not publish packages or describe a partial phase as the complete feature.

  • This is the final review phase, not a release operation. Merge all six phases before preparing core 0.4.1, then publish dependent packages in the documented order.
  • The original worker behavior and payload provider are preserved. DTO/runner and client/worker tests were separated for review; the management-only purge kind fix has dedicated enabled/disabled ordinary/entity regressions.
  • Main-base-only CI workflows intentionally do not run on these stacked bases. The existing DTS workflow supports dispatch on the final branch; hosted execution remains the coordinator's verification step, not an inferred pass.
  • The original PR387 remains open and untouched for the coordinator to supersede after independent verification.
  • Full live DTS/mixed-.NET execution has not been run locally (Docker daemon unavailable). The final phase records aggregate local Blob/Azurite, source/wire interoperability and packed-consumer evidence without claiming absent hosted checks.

Phase 6 of 6: add release packaging, the large-payload example, complete interoperability/cleanup documentation and real tarball/ES2020 consumer checks. Keep phase release gates explicit and remove unrelated README formatting changes. The completed stack preserves c9b53fc behavior except the tested management-client purge kind correction.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 81e20512-d3a2-4f8e-a574-f396140ec9c7
@YunchuWang

Copy link
Copy Markdown
Member Author

Final cumulative-stack integration evidence for 72c74983b940ec1a4c829f3e4f90e53e73efebc5:

The existing DTS Emulator E2E workflow was dispatched on yunchuwang-payload-phase-6-release and passed all 10 jobs across Node.js 22 and 24. The six incremental bases/commit ancestors and the final runtime delta versus the original implementation were also independently checked.

The usual PR unit/sample/DTS workflows filter their PR base to main, so this manual run does not mean those workflows automatically ran on every stacked PR. Per-phase local build/test evidence is recorded in each description; phase 1's main-based hosted suite passed separately. This run rechecks the existing DTS suites on the final combined source, not a live mixed-.NET/JavaScript large-payload replay scenario.

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