Skip to content

Complete #9294 cherry-pick into hotfix/v5.970 (restore dropped files)#9353

Merged
lambrianmsft merged 1 commit into
Azure:hotfix/v5.970from
lambrianmsft:revert/v5.970/9294
Jul 2, 2026
Merged

Complete #9294 cherry-pick into hotfix/v5.970 (restore dropped files)#9353
lambrianmsft merged 1 commit into
Azure:hotfix/v5.970from
lambrianmsft:revert/v5.970/9294

Conversation

@lambrianmsft

@lambrianmsft lambrianmsft commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Completes the #9294 cherry-pick into hotfix/v5.970.

The original cherry-pick (#9348) was over-scoped and dropped files that PR #9294 actually changed. This PR restores them byte-for-byte from the squash-merge 4fb46025c19936049f5174ec83fdb4d6b613ad5d:

  • .github/workflows/vscode-e2e.yml (CI wiring for the new bundle-integrity shard)
  • .github/instructions/vs-code-designer.instructions.md
  • E2E: bundleCdnHealth.test.ts, bundleRepair.test.ts, createWorkspace.fixtures.test.ts, createWorkspaceShared.ts, run-e2e.js
  • apps/vs-code-designer/src/app/utils/codeful.ts (lint fix)
  • Docs/knowledge: apps/vs-code-designer/CLAUDE.md, apps/vs-code-designer/src/test/ui/SKILL.md, docs/ai-setup/packages/vs-code-designer.md, .squad/knowledge/INDEX.md, .squad/knowledge/review-patterns.md

Applied as a real git cherry-pick 4fb46025 onto the current tip (the already-present files merge as no-ops; only the dropped files change). Only graphify-out artifacts are omitted per policy.

After this merges, hotfix/v5.970 contains #9294 in full (minus graphify-out).

Commit Type

  • feature - New functionality
  • fix - Bug fix
  • refactor - Code restructuring without behavior change
  • perf - Performance improvement
  • docs - Documentation update
  • test - Test-related changes
  • chore - Maintenance/tooling

Risk Level

  • Low - Minor changes, limited scope
  • Medium - Moderate changes, some user impact
  • High - Major changes, significant user/system impact

What & Why

Microsoft.Azure.Functions.ExtensionBundle.Workflows is downloaded from a CDN at extension activation. When the CDN occasionally returns a truncated zip, the extension cached the partial file and failed later in opaque ways. There was also no way to test against an unreleased bundle locally, no fallback when a private/experimental CDN was misconfigured, and no user-visible signal during activation downloads.

This PR adds end-to-end integrity verification (size + MD5), opt-in experimental bundle settings with a public-CDN safety net, and withProgress notifications so the user sees what is happening (and why a redownload is occurring).

Impact of Change

  • Users: Bundles are verified against Content-Length and Content-MD5 on download, and against an MD5 sidecar on every activation. Corrupt local copies are detected and replaced automatically. Users see a progress notification during downloads and a warning toast immediately before a corruption-triggered redownload, so silent activation hangs are gone. Three new VS Code settings (useExperimentalExtensionBundle, experimentalExtensionBundleSourceUri, experimentalExtensionBundleVersion) let users point at unreleased bundle builds without losing the public-CDN safety net. Bundles are now verified and repaired automatically for users.
  • Developers: New downloadFileWithVerification, verifyLocalBundleHash, fetchExpectedMd5, and isMissingPackageError helpers in integrity.ts. bundleFeed.ts gains a DownloadReason-driven withProgress wrapper used at every download call site, plus a private-to-public CDN fallback chain that only triggers on "package missing" errors (4xx / DNS), never on integrity failures. New E2E phase bundleintegrityonly exercised via run-e2e.js.
  • System: One extra HEAD request per activation to validate the local sidecar. No change to the public CDN contract. The MD5 sidecar lives next to the bundle so a manually-deleted bundle directory self-heals.

Test Plan

  • Unit tests added/updated
  • E2E tests added/updated
  • Manual testing completed
  • Tested in: VS Code extension host (Windows), public Azure CDN, simulated experimental source override. 66 bundleFeed unit tests + 1065 vscode-designer extension-unit tests passing. New bundleintegrityonly live E2E phase 4/4 passing.

Contributors

Screenshots/Videos

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

🤖 AI PR Validation Report

PR Review Results

Thank you for your submission! Here's detailed feedback on your PR title and body compliance:

PR Title

  • Current: Complete #9294 cherry-pick into hotfix/v5.970 (restore dropped files)
  • Issue: None. The title is clear, specific, and accurately describes the cherry-pick/restore intent.
  • Recommendation: No change needed.

Commit Type

  • Properly selected (fix).
  • Only one commit type is checked, which matches the change.

⚠️ Risk Level

  • Selected Medium, which is plausible for the scope of this change.
  • Advised risk is still medium based on the diff: this adds integrity checks, new E2E paths, workflow changes, and runtime behavior around bundle download/repair. That is more than low risk, but not clearly high-risk.

What & Why

  • Current: The section clearly explains the corrupted CDN download problem, the missing local validation behavior, and why the change adds integrity checks and fallback behavior.
  • Issue: None.
  • Recommendation: No change needed.

Impact of Change

  • The impact section is detailed and aligned with the actual diff.
  • Recommendation:
    • Users: Good coverage of verification/repair behavior and progress notifications.
    • Developers: Good summary of new helpers, fallback behavior, and new E2E phase.
    • System: Good note about the extra HEAD request and sidecar behavior.

Test Plan

  • Unit tests added/updated and E2E tests added/updated are both confirmed in the diff.
  • Manual testing is also documented.
  • This passes the test-plan requirements.

Contributors

  • Blank, but that is allowed and does not fail validation.
  • Recommendation: If others contributed design/implementation ideas, consider adding them for credit.

Screenshots/Videos

  • Blank, which is acceptable here because this is not primarily a visual/UI change.

Summary Table

Section Status Recommendation
Title
Commit Type
Risk Level ⚠️ Keep Medium; it matches the diff well.
What & Why
Impact of Change
Test Plan
Contributors Optional to add names if applicable.
Screenshots/Videos

The PR passes validation. The advised risk level remains medium, so it does not exceed the submitter’s estimate.


Last updated: Thu, 02 Jul 2026 00:37:46 GMT

…ore dropped files)

The prior Azure#9294 cherry-pick (Azure#9348) was over-scoped and dropped files that PR Azure#9294 changed.
This restores them byte-for-byte from squash-merge 4fb4602
(the vscode-e2e workflow, E2E bundle-integrity tests + shared harness, run-e2e settings, docs,
.squad knowledge, instructions, and the codeful.ts lint fix), so hotfix/v5.970 matches Azure#9294
exactly. Only graphify-out artifacts are omitted per policy.

Co-authored-by: Brian Lam <lambrian@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@lambrianmsft lambrianmsft changed the title Revert over-scoped #9294 cherry-pick (#9348) from hotfix/v5.970 Complete #9294 cherry-pick into hotfix/v5.970 (restore dropped files) Jul 2, 2026
@lambrianmsft lambrianmsft merged commit 6dcf2da into Azure:hotfix/v5.970 Jul 2, 2026
38 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants