Migrate CI to dnceng with API Scan, signing, and BAR publishing - #4803
Migrate CI to dnceng with API Scan, signing, and BAR publishing#4803mattleibow wants to merge 110 commits into
Conversation
…Core1ESPool-Internal pools, networkIsolationPolicy Permissive (submodules), drop DevDiv yaml-templates, chain skiasharp-native->skiasharp-package->skiasharp-tests, drop develop trigger; signing/APIScan deferred
…ionPolicy submodule fix
…ull anonymously from MCR); restore full native stage (all platforms)
… it opens googlesource egress
…pen googlesource; only hosted macOS agents reach it, isolated pool needs netiso DL exception)
Use the standard Permissive, CFSClean, CFSClean2 network isolation policy for the internal native and package pipelines, and enable native CI pushes from the working branch. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Do not require the devdiv-only native_msvc artifact in dnceng/internal, where signing and API Scan remain deferred. Remove the redundant package schedule so packages and tests run only from their upstream completion triggers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run the MSVC native matrix, merged native_msvc artifact, and split-package consumer in dnceng/internal as well as devdiv. Restore the package midnight schedule so nightly package and test coverage remains available. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Artifact merger and managed package jobs do not build native externals, so avoid recursively cloning depot_tools and other submodules on network-isolated internal agents. Native jobs retain recursive checkout. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep recursive native submodules disabled in managed package jobs, but initialize the docs submodule explicitly so normal NuGet packages continue to include XML API documentation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Disk-space probes are diagnostics, but a transient PowerShell startup failure currently aborts the job before tests run. Retry these probes while preserving failure after repeated attempts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bring the internal pipeline branch up to f8c0133 after completing the green Native, Package, and Tests validation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Queue the tests pipeline explicitly from successful feature-branch package builds until definition 1630 can evaluate the updated resource name from internal main. Pass the current commit and package run as pipeline resources so one Native run flows through all three pipelines. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Always build, merge, and re-upload the MSVC native artifacts as part of the pipeline contract. Limit the hosted-agent diagnostic retry to the exact post-checkout probe that previously flaked. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Collect current-run NuGet, symbol, and MSVC artifacts; generate the existing SkiaSharp surrogate configuration; authenticate through the dotnet-apiscan WIF connection; and run APIScan with retained logs and PostAnalysis. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add API Scan HTML/SARIF reporting, TSA bug upload, raw log publication, and warning-level enforcement. Map unsupported Windows ARM64 images to equivalent x64 surrogates so all shipped binaries remain covered without suppressing findings. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Preserve the old Xamarin template policy by explicitly selecting APIScan release mode instead of inheriting the prerelease task default. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Restore the registered SkiaSharp software version used by the old release scan and fail hard when APIScan itself cannot execute. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Keep TSA reporting active while making Armory, BinSkim, CredScan, ESLint, PoliCheck, and PSScriptAnalyzer fail closed. Run CodeQL on the migration branch, and restore API Scan Note-level all-tool reporting, TSA upload, and enforcement parity with DevDiv. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Add an opt-in, test-only signing stage that copies the existing NuGet artifact and invokes the matching Arcade SignTool without rebuilding products. Preserve the artifact-carried SignList policy, validate recursive payload fidelity, and document ESRP/API Scan onboarding boundaries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Move internal roots to the v1 Official template and the public CI root to the v1 Unofficial template, thread 1ES container handling through tests, and remove the local fake wrapper. The public definition must be recreated in dnceng/internal before cutover because dnceng-public cannot resolve the 1ES template repository. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sync eng/common from the exact Arcade SDK source commit, add dependency-flow metadata and a signing-only project graph, and move general build tooling to the supported .NET 10.0.302 SDK. Preserve the WinUI 10.0.108 compatibility band by installing it side-by-side only for WinUI jobs. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the existing SDK and workload set pin across the repository and native build containers while adopting Arcade. The SDK upgrade remains a separate compatibility change. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Stage already-built shipping packages in Arcade's standard layout, use the templates-official MicroBuild job wrapper and eng/common signing command, validate nested signatures, and retain a fail-closed exact payload policy in eng/Signing.props. Remove the isolated SignTool bootstrap and legacy SignList translation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
MicroBuild test certificates are intentionally untrusted by NuGet verification. Keep test-sign validation on SignTool's post-sign checks and payload fidelity, and run Arcade SignCheck plus NuGet trust validation only for ESRP real signing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The automation-owned Arcade tree and signing-only policy do not contribute to native or managed cache outputs, so exclude them from repository cache coverage validation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Treat eng as a global build dependency, associate signing scripts with the signing job, and remove the cache switch from the internal complete pipeline. Only the public mono-SkiaSharp root can enable build caching. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Allow the package definition to test-sign an existing successful package build without rebuilding native or managed products. Verify the source definition, repository, result, and real-sign branch trust before downloading artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The generated Dawn JavaScript and Python files do not support 3PartySHA2 Authenticode signing. Keep them explicitly unsigned and enforce byte-for-byte preservation through payload verification. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Make the package root own signing, API Scan, and BAR publication directly; exclude all PR forms from signing/publishing and remove signing-specific parameters from the shared stage aggregator. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Arcade 11's shared bootstrap uses the .NET 11-only 'dotnet package download' command, but SkiaSharp intentionally retains SDK 10.0.108. Restore an exact PackageDownload through a temporary project instead so signing, BAR registration, and Arcade validation can bootstrap on the supported SDK while preserving the dotnet-eng fallback. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Adopt Arcade's NoSignJS policy for browser and Emscripten source files. Keep every JavaScript basename and package path explicit, fail if a skipped file changes or becomes signed, and retain author-signed NuGets as the supported distribution boundary without adding detached catalog artifacts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Keep both Arcade bootstrap selection and WASM containers on the validated .NET 10.0.108 SDK after rebasing onto the squashed Arcade onboarding commit from main. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
08fa356 to
9dd8812
Compare
Restore Arcade Publish.proj dependencies before manifest generation and register only the signed prerelease package view. This keeps stable-looking build artifacts internal while producing a valid V3 BAR manifest and symbol payloads for preview promotion. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Use Arcade's official and short-date build identities across GitHub, Azure Repos, and downstream resource runs. Pack one prerelease NuGet family, validate package identities from nuspecs, and register only the signed Preview view with the same OfficialBuildId used by manifest generation. Restore eng/common from the pinned Arcade build and use a stable .NET 10.0.301 tool CLI for generated package download while keeping SkiaSharp builds on SDK 10.0.108. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Reapply the combined Native and Package pipeline on top of the latest Arcade publishing and CI changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep the combined Package pipeline on its own Arcade-derived build number while making Package identity inheritance an explicit Tests-only behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use complete, build, and test pipeline types; remove the obsolete Native root, Package split path, and separate identity toggle. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the existing PREVIEW_LABEL chain to select one package family: normal labels remain uniquely versioned prereleases, while stable produces exact packages with DotNetFinalVersionKind=release. Restrict stable generation to manual Native and real-signed, API-scanned Package runs, separate Preview and Shipping manifest inputs, and stop CI before channel promotion so Tests can gate a manual Darc promotion. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Remove the redundant split/separate boolean and derive test-stage dependencies from the existing build pipeline type. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Adapt exact stable and prerelease BAR publishing to the combined Native and Package build while keeping Tests downstream and channel promotion manual. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Move signing, nightly/ad-hoc API Scan, BAR registration, and Arcade validation into the shared stage composer, with BAR-specific stages isolated in a publish template. Remove mirrored Package variables and return bootstrapper/merger checkouts to the repository's recursive-submodule convention. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Make signing, API Scan, and BAR publishing stage-level templates so each can grow additional jobs without changing the pipeline root. Keep PREVIEW_LABEL source-controlled, run API Scan on scheduled main or explicit requests, and remove redundant Package variables and checkout customization. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Signing and API Scan jobs now live directly in their stage templates. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Gate signing, API Scan, and BAR publishing first by internal project, then by build pipeline type, leaving only stage-specific conditions at the innermost level. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Move SkiaSharp and Arcade to stable .NET SDK/workload 10.0.400, remove isolated tool SDK paths, and keep signing, compliance scanning, and BAR registration as independently conditioned stage templates. Separate forced signing from BAR registration and keep API Scan manual or scheduled-main only. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
There was a problem hiding this comment.
Pull request overview
Migrates SkiaSharp’s CI from the legacy DevDiv chain to repository-owned dnceng/internal pipelines, adding first-class stage templates for signing, API Scan, and BAR publish/validation while keeping public CI unsigned and excluding internal compliance/publishing.
Changes:
- Introduces dedicated stage templates for internal signing (
signing), API Scan (api_scan), and BAR publishing/validation (publish_build_assets+ post-build validation), composed via a single shared stages template. - Adds PowerShell tooling + tests for (a) deterministic build identity/version derivation and (b) signed-NuGet payload fidelity verification aligned with
eng/Signing.propspolicy. - Updates SDK/tooling baseline to .NET SDK
10.0.400and adjusts packaging/version-suffix behavior for exact-release vs prerelease builds.
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/infra/signing/verify-signed-packages.ps1 | New verifier to compare unsigned vs signed NuGet payloads and enforce signing policy expectations. |
| scripts/infra/signing/tests/Signing.Tests.ps1 | New local regression tests for signing policy classification, exclusions, and payload fidelity checks. |
| scripts/infra/signing/README.md | Documentation for signing stage architecture, policy, artifact flow, and local checks. |
| scripts/infra/signing/NuGetPayload.psm1 | New module to inventory nested NuGet/zip payloads and derive signing policy assignments. |
| scripts/infra/shared/shared.cake | Updates version-suffix computation (Arcade final version kind) and removes feature-preview suffix logic. |
| scripts/infra/security/APIScanSurrogates.in.xml | Expands surrogate mappings to cover additional ARM64 scenarios and WinUI surrogate binaries. |
| scripts/infra/package/tests/StagePrereleasePackages.Tests.ps1 | New tests validating prerelease package selection/staging rules for BAR preview publishing. |
| scripts/infra/package/stage-prerelease-packages.ps1 | New script to stage only allowed prerelease packages (rejects exact stable and unsupported labels). |
| scripts/infra/package/SignList.xml | Removes legacy signing input list (superseded by Arcade signing policy in eng/Signing.props). |
| scripts/infra/package/nuget.cake | Ensures a single coherent package family per build and forwards VersionSuffix consistently. |
| scripts/infra/native/wasm/docker/Dockerfile | Adjusts dotnet-install usage for the WASM build container and pins default SDK version. |
| scripts/infra/native/shared/tests/SetBuildVariables.Tests.ps1 | New tests for build identity normalization (PR/main/release/resource-trigger) and pipeline wiring invariants. |
| scripts/infra/native/shared/set-build-variables.ps1 | Rewrites build identity logic around Arcade OfficialBuildId + normalized PR/branch/commit handling. |
| scripts/infra/caching/repo-deps.json | Updates caching dependency coverage and adds a signing job cache scope. |
| scripts/azure-templates-variables.yml | Moves BUILD_NUMBER derivation to runtime and adds Arcade OfficialBuildId + final version kind variables. |
| scripts/azure-templates-stages.yml | Refactors stage composition for build/test/complete roles and adds internal-only signing/API scan/BAR stages. |
| scripts/azure-templates-stages-test.yml | Updates split-pipeline logic to use buildPipelineType instead of isSplitPipeline. |
| scripts/azure-templates-stages-signing.yml | New internal signing stage using Arcade official job template + payload verification + manifest generation. |
| scripts/azure-templates-stages-publish.yml | New BAR registration + validation stages (Arcade V3 publishing). |
| scripts/azure-templates-stages-prepare.yml | Adds pipeline-time execution of the new identity + prerelease staging tests and cache config validation. |
| scripts/azure-templates-stages-package.yml | Removes split-pipeline native reupload/signing blocks; forwards --dotNetFinalVersionKind and stages preview artifacts via script. |
| scripts/azure-templates-stages-native-windows.yml | Makes Win32 MSVC native builds unconditional (no longer gated by legacy DevDiv project checks). |
| scripts/azure-templates-stages-native-merge.yml | Makes MSVC native artifact merge unconditional. |
| scripts/azure-templates-stages-native-linux.yml | Minor cleanup (trailing whitespace removal). |
| scripts/azure-templates-stages-apiscan.yml | New standalone API Scan stage that consumes pipeline artifacts and runs APIScan/TSA/PostAnalysis. |
| scripts/azure-template-fake-1es.yml | Improves public-template adapter comment and refactors job property expansion for templateContext outputs. |
| scripts/azure-pipelines-tests.yml | Repoints tests pipeline resource to the new package pipeline and fixes host pool OS metadata. |
| scripts/azure-pipelines-package.yml | Converts to dnceng 1ES official template with enforced SDL breaks, network isolation, and new stage composition parameters. |
| scripts/azure-pipelines-native.yml | Removes legacy native-only pipeline definition (replaced by new build pipeline). |
| scripts/azure-pipelines-complete-internal.yml | Removes legacy internal complete pipeline (replaced by new build/test split plus public complete). |
| global.json | Bumps repo SDK/tooling to .NET SDK 10.0.400. |
| eng/Signing.props | New Arcade signing policy source of truth (explicit basenames, NoSignJS enabled). |
| eng/SignCheckExclusionsFile.txt | New SignCheck DO-NOT-SIGN exclusions matching JS payload policy. |
| eng/Publishing.props | New Arcade publishing policy separating preview vs exact-release package views. |
| documentation/dev/versioning.md | Updates versioning guidance to Arcade identity and exact-release sentinel behavior. |
| documentation/dev/updating-dotnet-version.md | Updates SDK bump checklist to include tools.dotnet parity requirement. |
| documentation/dev/releasing.md | Updates release documentation for BAR/Arcade V3 flow and new pipeline IDs/feeds. |
| documentation/dev/building-samples.md | Updates sample build/version examples to Arcade-derived short-date.revision build number. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Align the release and sample guidance with the combined Build and Tests topology, manual BAR promotion, conditional API Scan, and the deferred exact-stable release automation. Remove the obsolete DevDiv badge and keep SDK roll-forward inside the 10.0.4xx feature band. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Keep temporary BAR validation and onboarding details out of repository documentation. Document only the final SkiaSharp channel, feed, combined Build and Tests chain, and protected NuGet publication flow. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 39 out of 39 changed files in this pull request and generated 1 comment.
Suppressed comments (3)
scripts/azure-pipelines-package.yml:118
- This strict-isolation configuration still includes the
Permissivepolicy, which the PR description itself lists as a remaining gate to remove. That leaves the migrated build/signing path with broader network access than the stated fail-closed posture; complete the endpoint audit and remove this policy before merging.
networkIsolationPolicy: Permissive, CFSClean, CFSClean2
documentation/dev/releasing.md:187
- This command still invokes a status script that is hard-coded to the legacy DevDiv chain and feed (
.agents/skills/release-status/scripts/pipeline-status.py:18-45, IDs 26493/10789/15756). It cannot report the new dnceng Build 1642, Tests 1630, or BAR identity promised here, so the documented release-status workflow is broken until the script and skill metadata are migrated.
```bash
python3 .agents/skills/release-status/scripts/pipeline-status.py release/{version}
**documentation/dev/releasing.md:118**
* The PR says a protected release-by-BAR pipeline is future work, but this table documents it as an available pipeline. The current release-publish tooling still queues legacy DevDiv pipeline 25298 and selects a managed run (`.agents/skills/release-publish/scripts/push-release-packages.py:17-45`), not a BAR ID. Keep this entry marked as future/out of scope or implement and migrate the protected publisher before presenting this as the release procedure.
| NuGet.org Publish | Gathers one exact BAR build and publishes it after protected human approval. |
</details>
Use SDK 10.0.400 across every native build environment, enforce the default 1ES network isolation policy, and keep API Scan symbol retrieval on TLS. Add regression coverage for SDK pins and security settings, and address the remaining PR review findings. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Keep the C++/WinRT projection on the .NET 10.0.1xx band required by VS MSBuild 17.x while installing SDK 10.0.108 side-by-side in each WinUI native job. Continue using 10.0.400 for the repository, Arcade, workloads, and native containers. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Extract API Scan package preparation from YAML into a tested script. Validate every configured surrogate and target mapping against representative Win32, HarfBuzz, NanoServer, and WinUI symbol package layouts, and make the temporary network Audit condition readable. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Make native Docker SDK validation portable to Windows checkouts and cover CRLF line endings explicitly. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 0719f2c0-b8f5-4d8c-8a35-37b2057c418a
Description
Migrate SkiaSharp CI from the legacy DevDiv chain to two repository-owned dnceng/internal pipelines:
1642): Prepare → Native → Package → signing, with independent API Scan and BAR registration/validation stage templates.1630): consumes the exact Build run identity and runs managed/platform/sample tests.Public CI (
345) remains one unsigned Native+Package+Tests build and excludes the internal signing/compliance/publishing block.Security remains fail-closed: CodeQL, AntiMalware, CredScan, PoliCheck, ARMory, ESLint, PSScriptAnalyzer, secret scanning, BinSkim, Component Governance, TSA, PostAnalysis, Note-level API Scan enforcement, and default 1ES network-isolation enforcement.
JavaScript uses explicit
NoSignJSpackage/path policy, byte-identical payload verification, and the signed NuGet as the supported distribution boundary.Package versions follow Arcade identity.
OfficialBuildIdisyyyyMMdd.revision; prerelease packages use Arcadeshort-date.revision.PREVIEW_LABEL=stableon an internalrelease/*branch produces exact packages withDotNetFinalVersionKind=release; Arcade V3 marks them stable for isolated feeds.Signing trust is branch-driven: main/release use real signing; other branches test-sign unless
forceRealSigning. Forced signing does not register a BAR unlessregisterInBaris also selected. API Scan runs only for scheduled main builds or explicitrunApiScan. BAR validation is independent of API Scan and CI does not promote a channel automatically.Signing, API Scan, and BAR publishing are direct stage templates so future jobs can be added within each stage. The Build root has one shared stage-composer entry.
The repository, native containers, workloads, and Arcade use stable .NET SDK
10.0.400. The WinUI C++/WinRT projection deliberately remains on SDK10.0.108, installed side-by-side, because VS MSBuild 17.x cannot load SDK 10.0.2xx+. NuGet.org publication and release-skill migration remain out of scope.Azure counterpart: dnceng PR 63954.
Related issues
N/A.
Required skia PR
None.
Areas affected
binding/)externals/skia/src/c,include/c)Changes
None — CI-only; no public API, C API, native source, or product behavior change.
Testing
d80b0ec394cbdaf79172f0d82623e4ed847370a8on GitHub and dnceng.eng/commonis byte-identical to Arcade BAR327135(11.0.0-beta.26414.2).3050801succeeded.3050803and3050903passed ESRP signing, payload fidelity, trusted-signature validation, API Scan, and manifest generation.1558142proved both failure modes: Linux/WASM containers still had SDK10.0.108, while WinUI required10.0.108but only10.0.400was installed. Containers now use10.0.400; WinUI installs10.0.108alongside it, with regression coverage for both contracts.Actual remaining gates:
auditNetworkIsolationparameter and pass replacement PR/public checks on that final configuration.1642on the exact tip with real signing, API Scan, BAR registration, and Arcade validation.1630run for that exact Build.release/*package path, or explicitly defer/remove that behavior before merge; it currently has unit/local manifest evidence only.Permanent Maestro channels, General Testing promotion, 1ES default-branch baselines, definition
1641retirement, the pre-existing Component Governance alert, and release-skill migration are follow-up operations, not merge gates for this pipeline PR.Checklist
Changesabove lists all public API and behavioral changes (none — CI-only)