From ed72ef36e6309a0644a08d718e9c6c056349d7bb Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]" <dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 20 Jan 2026 02:01:06 +0000
Subject: [PATCH 1/2] Update dependencies from https://github.com/dotnet/arcade
 build 20260119.1 On relative base path root Microsoft.DotNet.Arcade.Sdk From
 Version 11.0.0-beta.26067.2 -> To Version 11.0.0-beta.26069.1

---
 eng/Version.Details.props | 2 +-
 eng/Version.Details.xml   | 4 ++--
 global.json               | 6 +++---
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index abf6c8efbb9..791c8dff744 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>11.0.0-beta.26067.2</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>11.0.0-beta.26069.1</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index dab57b25d5f..1e1fb9cdfa2 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26067.2">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26069.1">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>b92cc5b406acf996b29a653dd4454b87f1d83c5f</Sha>
+      <Sha>e5101e573305749dfab54f0ad6f4c64673dd3393</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25502.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/global.json b/global.json
index 958772923de..938c91342a2 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
 {
   "sdk": {
-    "version": "11.0.100-alpha.1.26060.102",
+    "version": "11.0.100-alpha.1.26064.118",
     "allowPrerelease": true,
     "paths": [
       ".dotnet",
@@ -9,7 +9,7 @@
     "errorMessage": "The .NET SDK could not be found, please run ./eng/common/dotnet.sh."
   },
   "tools": {
-    "dotnet": "11.0.100-alpha.1.26060.102",
+    "dotnet": "11.0.100-alpha.1.26064.118",
     "vs": {
       "version": "18.0",
       "components": [
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26067.2",
+    "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26069.1",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }

From 8db156969eefae96d6ca92011223361358250a28 Mon Sep 17 00:00:00 2001
From: "dotnet-maestro[bot]" <dotnet-maestro[bot]@users.noreply.github.com>
Date: Tue, 20 Jan 2026 12:20:21 +0000
Subject: [PATCH 2/2] Update dependencies from https://github.com/dotnet/arcade
 build 20260112.3 On relative base path root Microsoft.DotNet.Arcade.Sdk From
 Version 11.0.0-beta.26067.2 -> To Version 10.0.0-beta.26062.3

---
 eng/Version.Details.props                     |   2 +-
 eng/Version.Details.xml                       |   4 +-
 eng/common/SetupNugetSources.ps1              |  17 +-
 eng/common/SetupNugetSources.sh               |  17 +-
 eng/common/build.sh                           |   2 +-
 eng/common/core-templates/job/job.yml         |   8 -
 .../job/publish-build-assets.yml              |  16 +-
 .../core-templates/job/source-build.yml       |   4 +-
 .../core-templates/post-build/post-build.yml  | 461 +++++++++---------
 .../core-templates/steps/generate-sbom.yml    |   2 +-
 .../steps/install-microbuild-impl.yml         |  34 --
 .../steps/install-microbuild.yml              |  64 ++-
 .../core-templates/steps/source-build.yml     |   2 +-
 .../steps/source-index-stage1-publish.yml     |   8 +-
 eng/common/cross/build-rootfs.sh              |   4 +-
 eng/common/darc-init.sh                       |   2 +-
 eng/common/dotnet-install.sh                  |   2 +-
 eng/common/dotnet.sh                          |   2 +-
 eng/common/internal-feed-operations.sh        |   2 +-
 eng/common/native/install-dependencies.sh     |   4 +-
 eng/common/post-build/redact-logs.ps1         |   3 +-
 eng/common/tools.ps1                          |   4 +
 eng/common/tools.sh                           |   4 +
 global.json                                   |   2 +-
 24 files changed, 326 insertions(+), 344 deletions(-)
 delete mode 100644 eng/common/core-templates/steps/install-microbuild-impl.yml

diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 791c8dff744..6754ff54050 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
     <MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
     <MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
     <!-- dotnet/arcade dependencies -->
-    <MicrosoftDotNetArcadeSdkPackageVersion>11.0.0-beta.26069.1</MicrosoftDotNetArcadeSdkPackageVersion>
+    <MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26062.3</MicrosoftDotNetArcadeSdkPackageVersion>
     <!-- _git/dotnet-optimization dependencies -->
     <optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxarm64MIBCRuntimePackageVersion>
     <optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.25502.1</optimizationlinuxx64MIBCRuntimePackageVersion>
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1e1fb9cdfa2..d38253a9f92 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -76,9 +76,9 @@
     </Dependency>
   </ProductDependencies>
   <ToolsetDependencies>
-    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26069.1">
+    <Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26062.3">
       <Uri>https://github.com/dotnet/arcade</Uri>
-      <Sha>e5101e573305749dfab54f0ad6f4c64673dd3393</Sha>
+      <Sha>9f518f2be968c4c0102c2e3f8c793c5b7f28b731</Sha>
     </Dependency>
     <Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.25502.1">
       <Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index fc8d618014e..65ed3a8adef 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -1,6 +1,7 @@
 # This script adds internal feeds required to build commits that depend on internal package sources. For instance,
-# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
-# disabled internal Maestro (darc-int*) feeds.
+# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
+# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
+# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
 #
 # Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
 #
@@ -173,4 +174,16 @@ foreach ($dotnetVersion in $dotnetVersions) {
     }
 }
 
+# Check for dotnet-eng and add dotnet-eng-internal if present
+$dotnetEngSource = $sources.SelectSingleNode("add[@key='dotnet-eng']")
+if ($dotnetEngSource -ne $null) {
+    AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-eng-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
+}
+
+# Check for dotnet-tools and add dotnet-tools-internal if present
+$dotnetToolsSource = $sources.SelectSingleNode("add[@key='dotnet-tools']")
+if ($dotnetToolsSource -ne $null) {
+    AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-tools-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
+}
+
 $doc.Save($filename)
diff --git a/eng/common/SetupNugetSources.sh b/eng/common/SetupNugetSources.sh
index b97cc536379..b2163abbe71 100755
--- a/eng/common/SetupNugetSources.sh
+++ b/eng/common/SetupNugetSources.sh
@@ -1,8 +1,9 @@
 #!/usr/bin/env bash
 
 # This script adds internal feeds required to build commits that depend on internal package sources. For instance,
-# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
-# disabled internal Maestro (darc-int*) feeds.
+# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
+# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
+# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
 # 
 # Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
 #
@@ -173,6 +174,18 @@ for DotNetVersion in ${DotNetVersions[@]} ; do
     fi
 done
 
+# Check for dotnet-eng and add dotnet-eng-internal if present
+grep -i "<add key=\"dotnet-eng\"" $ConfigFile > /dev/null
+if [ "$?" == "0" ]; then
+    AddOrEnablePackageSource "dotnet-eng-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$FeedSuffix"
+fi
+
+# Check for dotnet-tools and add dotnet-tools-internal if present
+grep -i "<add key=\"dotnet-tools\"" $ConfigFile > /dev/null
+if [ "$?" == "0" ]; then
+    AddOrEnablePackageSource "dotnet-tools-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$FeedSuffix"
+fi
+
 # I want things split line by line
 PrevIFS=$IFS
 IFS=$'\n'
diff --git a/eng/common/build.sh b/eng/common/build.sh
index ec3e80d189e..9767bb411a4 100755
--- a/eng/common/build.sh
+++ b/eng/common/build.sh
@@ -92,7 +92,7 @@ runtime_source_feed=''
 runtime_source_feed_key=''
 
 properties=()
-while [[ $# -gt 0 ]]; do
+while [[ $# > 0 ]]; do
   opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
   case "$opt" in
     -help|-h)
diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
index 748c4f07a64..5ce51840619 100644
--- a/eng/common/core-templates/job/job.yml
+++ b/eng/common/core-templates/job/job.yml
@@ -19,8 +19,6 @@ parameters:
   # publishing defaults
   artifacts: ''
   enableMicrobuild: false
-  enablePreviewMicrobuild: false
-  microbuildPluginVersion: 'latest'
   enableMicrobuildForMacAndLinux: false
   microbuildUseESRP: true
   enablePublishBuildArtifacts: false
@@ -73,8 +71,6 @@ jobs:
     templateContext: ${{ parameters.templateContext }}
 
   variables:
-  - name: AllowPtrToDetectTestRunRetryFiles
-    value: true
   - ${{ if ne(parameters.enableTelemetry, 'false') }}:
     - name: DOTNET_CLI_TELEMETRY_PROFILE
       value: '$(Build.Repository.Uri)'
@@ -132,8 +128,6 @@ jobs:
     - template: /eng/common/core-templates/steps/install-microbuild.yml
       parameters:
         enableMicrobuild: ${{ parameters.enableMicrobuild }}
-        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
-        microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
         enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
         microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
         continueOnError: ${{ parameters.continueOnError }}
@@ -159,8 +153,6 @@ jobs:
     - template: /eng/common/core-templates/steps/cleanup-microbuild.yml
       parameters:
         enableMicrobuild: ${{ parameters.enableMicrobuild }}
-        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
-        microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
         enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
         continueOnError: ${{ parameters.continueOnError }}
 
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index c9ee8ffd8f1..b955fac6e13 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -91,8 +91,8 @@ jobs:
       fetchDepth: 3
       clean: true
 
-    - ${{ if eq(parameters.isAssetlessBuild, 'false') }}:
-      - ${{ if eq(parameters.publishingVersion, 3) }}:
+    - ${{ if eq(parameters.isAssetlessBuild, 'false') }}: 
+      - ${{ if eq(parameters.publishingVersion, 3) }}: 
         - task: DownloadPipelineArtifact@2
           displayName: Download Asset Manifests
           inputs:
@@ -117,7 +117,7 @@ jobs:
             flattenFolders: true
           condition: ${{ parameters.condition }}
           continueOnError: ${{ parameters.continueOnError }}
-
+    
     - task: NuGetAuthenticate@1
 
     # Populate internal runtime variables.
@@ -125,7 +125,7 @@ jobs:
       ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
         parameters:
             legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
-
+    
     - template: /eng/common/templates/steps/enable-internal-runtimes.yml
 
     - task: AzureCLI@2
@@ -145,7 +145,7 @@ jobs:
 
       condition: ${{ parameters.condition }}
       continueOnError: ${{ parameters.continueOnError }}
-
+    
     - task: powershell@2
       displayName: Create ReleaseConfigs Artifact
       inputs:
@@ -173,7 +173,7 @@ jobs:
             artifactName: AssetManifests
             displayName: 'Publish Merged Manifest'
             retryCountOnTaskFailure: 10 # for any logs being locked
-            sbomEnabled: false # we don't need SBOM for logs
+            sbomEnabled: false  # we don't need SBOM for logs
 
     - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
       parameters:
@@ -190,7 +190,7 @@ jobs:
           BARBuildId: ${{ parameters.BARBuildId }}
           PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
           is1ESPipeline: ${{ parameters.is1ESPipeline }}
-          
+
       # Darc is targeting 8.0, so make sure it's installed
       - task: UseDotNet@2
         inputs:
@@ -218,4 +218,4 @@ jobs:
       - template: /eng/common/core-templates/steps/publish-logs.yml
         parameters:
           is1ESPipeline: ${{ parameters.is1ESPipeline }}
-          JobLabel: 'Publish_Artifacts_Logs'
+          JobLabel: 'Publish_Artifacts_Logs'     
diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml
index 7322e88bea8..d805d5faeb9 100644
--- a/eng/common/core-templates/job/source-build.yml
+++ b/eng/common/core-templates/job/source-build.yml
@@ -60,10 +60,10 @@ jobs:
       pool:
         ${{ if eq(variables['System.TeamProject'], 'public') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')]
-          demands: ImageOverride -equals build.ubuntu.2204.amd64
+          demands: ImageOverride -equals build.ubuntu.2004.amd64
         ${{ if eq(variables['System.TeamProject'], 'internal') }}:
           name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')]
-          image: Azure-Linux-3-Amd64
+          image: 1es-mariner-2
           os: linux
     ${{ else }}:
       pool:
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 3bed9cdb49d..b942a79ef02 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -1,106 +1,106 @@
 parameters:
-# Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
-# Publishing V1 is no longer supported
-# Publishing V2 is no longer supported
-# Publishing V3 is the default
-- name: publishingInfraVersion
-  displayName: Which version of publishing should be used to promote the build definition?
-  type: number
-  default: 3
-  values:
-  - 3
-
-- name: BARBuildId
-  displayName: BAR Build Id
-  type: number
-  default: 0
-
-- name: PromoteToChannelIds
-  displayName: Channel to promote BARBuildId to
-  type: string
-  default: ''
-
-- name: enableSourceLinkValidation
-  displayName: Enable SourceLink validation
-  type: boolean
-  default: false
-
-- name: enableSigningValidation
-  displayName: Enable signing validation
-  type: boolean
-  default: true
-
-- name: enableSymbolValidation
-  displayName: Enable symbol validation
-  type: boolean
-  default: false
-
-- name: enableNugetValidation
-  displayName: Enable NuGet validation
-  type: boolean
-  default: true
-
-- name: publishInstallersAndChecksums
-  displayName: Publish installers and checksums
-  type: boolean
-  default: true
-
-- name: requireDefaultChannels
-  displayName: Fail the build if there are no default channel(s) registrations for the current build
-  type: boolean
-  default: false
-
-- name: SDLValidationParameters
-  type: object
-  default:
-    enable: false
-    publishGdn: false
-    continueOnError: false
-    params: ''
-    artifactNames: ''
-    downloadArtifacts: true
-
-- name: isAssetlessBuild
-  type: boolean
-  displayName: Is Assetless Build
-  default: false
-
-# These parameters let the user customize the call to sdk-task.ps1 for publishing
-# symbols & general artifacts as well as for signing validation
-- name: symbolPublishingAdditionalParameters
-  displayName: Symbol publishing additional parameters
-  type: string
-  default: ''
-
-- name: artifactsPublishingAdditionalParameters
-  displayName: Artifact publishing additional parameters
-  type: string
-  default: ''
-
-- name: signingValidationAdditionalParameters
-  displayName: Signing validation additional parameters
-  type: string
-  default: ''
-
-# Which stages should finish execution before post-build stages start
-- name: validateDependsOn
-  type: object
-  default:
-  - build
-
-- name: publishDependsOn
-  type: object
-  default:
-  - Validate
-
-# Optional: Call asset publishing rather than running in a separate stage
-- name: publishAssetsImmediately
-  type: boolean
-  default: false
-
-- name: is1ESPipeline
-  type: boolean
-  default: false
+  # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
+  # Publishing V1 is no longer supported
+  # Publishing V2 is no longer supported
+  # Publishing V3 is the default
+  - name: publishingInfraVersion
+    displayName: Which version of publishing should be used to promote the build definition?
+    type: number
+    default: 3
+    values:
+    - 3
+
+  - name: BARBuildId
+    displayName: BAR Build Id
+    type: number
+    default: 0
+
+  - name: PromoteToChannelIds
+    displayName: Channel to promote BARBuildId to
+    type: string
+    default: ''
+
+  - name: enableSourceLinkValidation
+    displayName: Enable SourceLink validation
+    type: boolean
+    default: false
+
+  - name: enableSigningValidation
+    displayName: Enable signing validation
+    type: boolean
+    default: true
+
+  - name: enableSymbolValidation
+    displayName: Enable symbol validation
+    type: boolean
+    default: false
+
+  - name: enableNugetValidation
+    displayName: Enable NuGet validation
+    type: boolean
+    default: true
+    
+  - name: publishInstallersAndChecksums
+    displayName: Publish installers and checksums
+    type: boolean
+    default: true
+    
+  - name: requireDefaultChannels
+    displayName: Fail the build if there are no default channel(s) registrations for the current build
+    type: boolean
+    default: false
+
+  - name: SDLValidationParameters
+    type: object
+    default:
+      enable: false
+      publishGdn: false
+      continueOnError: false
+      params: ''
+      artifactNames: ''
+      downloadArtifacts: true
+
+  - name: isAssetlessBuild
+    type: boolean
+    displayName: Is Assetless Build
+    default: false
+
+  # These parameters let the user customize the call to sdk-task.ps1 for publishing
+  # symbols & general artifacts as well as for signing validation
+  - name: symbolPublishingAdditionalParameters
+    displayName: Symbol publishing additional parameters
+    type: string
+    default: ''
+
+  - name: artifactsPublishingAdditionalParameters
+    displayName: Artifact publishing additional parameters
+    type: string
+    default: ''
+
+  - name: signingValidationAdditionalParameters
+    displayName: Signing validation additional parameters
+    type: string
+    default: ''
+
+  # Which stages should finish execution before post-build stages start
+  - name: validateDependsOn
+    type: object
+    default:
+    - build
+
+  - name: publishDependsOn
+    type: object
+    default:
+    - Validate
+
+  # Optional: Call asset publishing rather than running in a separate stage
+  - name: publishAssetsImmediately
+    type: boolean
+    default: false
+
+  - name: is1ESPipeline
+    type: boolean
+    default: false
 
 stages:
 - ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
@@ -108,10 +108,10 @@ stages:
     dependsOn: ${{ parameters.validateDependsOn }}
     displayName: Validate Build Assets
     variables:
-    - template: /eng/common/core-templates/post-build/common-variables.yml
-    - template: /eng/common/core-templates/variables/pool-providers.yml
-      parameters:
-        is1ESPipeline: ${{ parameters.is1ESPipeline }}
+      - template: /eng/common/core-templates/post-build/common-variables.yml
+      - template: /eng/common/core-templates/variables/pool-providers.yml
+        parameters:
+          is1ESPipeline: ${{ parameters.is1ESPipeline }}
     jobs:
     - job:
       displayName: NuGet Validation
@@ -134,28 +134,28 @@ stages:
             demands: ImageOverride -equals windows.vs2026preview.scout.amd64
 
       steps:
-      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
-        parameters:
-          BARBuildId: ${{ parameters.BARBuildId }}
-          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-          is1ESPipeline: ${{ parameters.is1ESPipeline }}
-
-      - task: DownloadBuildArtifacts@0
-        displayName: Download Package Artifacts
-        inputs:
-          buildType: specific
-          buildVersionToDownload: specific
-          project: $(AzDOProjectName)
-          pipeline: $(AzDOPipelineId)
-          buildId: $(AzDOBuildId)
-          artifactName: PackageArtifacts
-          checkDownloadedFiles: true
-
-      - task: PowerShell@2
-        displayName: Validate
-        inputs:
-          filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
-          arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
+        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
+          parameters:
+            BARBuildId: ${{ parameters.BARBuildId }}
+            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+            is1ESPipeline: ${{ parameters.is1ESPipeline }}
+
+        - task: DownloadBuildArtifacts@0
+          displayName: Download Package Artifacts
+          inputs:
+            buildType: specific
+            buildVersionToDownload: specific
+            project: $(AzDOProjectName)
+            pipeline: $(AzDOPipelineId)
+            buildId: $(AzDOBuildId)
+            artifactName: PackageArtifacts
+            checkDownloadedFiles: true
+
+        - task: PowerShell@2
+          displayName: Validate
+          inputs:
+            filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/nuget-validation.ps1
+            arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
 
     - job:
       displayName: Signing Validation
@@ -169,7 +169,7 @@ stages:
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
-          ${{ if eq(parameters.is1ESPipeline, true) }}:
+          ${{ if eq(parameters.is1ESPipeline, true) }}:        
             name: $(DncEngInternalBuildPool)
             image: 1es-windows-2022
             os: windows
@@ -177,46 +177,46 @@ stages:
             name: $(DncEngInternalBuildPool)
             demands: ImageOverride -equals windows.vs2026preview.scout.amd64
       steps:
-      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
-        parameters:
-          BARBuildId: ${{ parameters.BARBuildId }}
-          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-          is1ESPipeline: ${{ parameters.is1ESPipeline }}
-
-      - task: DownloadBuildArtifacts@0
-        displayName: Download Package Artifacts
-        inputs:
-          buildType: specific
-          buildVersionToDownload: specific
-          project: $(AzDOProjectName)
-          pipeline: $(AzDOPipelineId)
-          buildId: $(AzDOBuildId)
-          artifactName: PackageArtifacts
-          checkDownloadedFiles: true
-
-      # This is necessary whenever we want to publish/restore to an AzDO private feed
-      # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
-      # otherwise it'll complain about accessing a private feed.
-      - task: NuGetAuthenticate@1
-        displayName: 'Authenticate to AzDO Feeds'
-
-      # Signing validation will optionally work with the buildmanifest file which is downloaded from
-      # Azure DevOps above.
-      - task: PowerShell@2
-        displayName: Validate
-        inputs:
-          filePath: eng\common\sdk-task.ps1
-          arguments: -task SigningValidation -restore -msbuildEngine vs
-            /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
-            /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
-            ${{ parameters.signingValidationAdditionalParameters }}
-
-      - template: /eng/common/core-templates/steps/publish-logs.yml
-        parameters:
-          is1ESPipeline: ${{ parameters.is1ESPipeline }}
-          StageLabel: 'Validation'
-          JobLabel: 'Signing'
-          BinlogToolVersion: $(BinlogToolVersion)
+        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
+          parameters:
+            BARBuildId: ${{ parameters.BARBuildId }}
+            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+            is1ESPipeline: ${{ parameters.is1ESPipeline }}
+
+        - task: DownloadBuildArtifacts@0
+          displayName: Download Package Artifacts
+          inputs:
+            buildType: specific
+            buildVersionToDownload: specific
+            project: $(AzDOProjectName)
+            pipeline: $(AzDOPipelineId)
+            buildId: $(AzDOBuildId)
+            artifactName: PackageArtifacts
+            checkDownloadedFiles: true
+
+        # This is necessary whenever we want to publish/restore to an AzDO private feed
+        # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
+        # otherwise it'll complain about accessing a private feed.
+        - task: NuGetAuthenticate@1
+          displayName: 'Authenticate to AzDO Feeds'
+
+        # Signing validation will optionally work with the buildmanifest file which is downloaded from
+        # Azure DevOps above.
+        - task: PowerShell@2
+          displayName: Validate
+          inputs:
+            filePath: eng\common\sdk-task.ps1
+            arguments: -task SigningValidation -restore -msbuildEngine vs
+              /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+              /p:SignCheckExclusionsFile='$(System.DefaultWorkingDirectory)/eng/SignCheckExclusionsFile.txt'
+              ${{ parameters.signingValidationAdditionalParameters }}
+
+        - template: /eng/common/core-templates/steps/publish-logs.yml
+          parameters:
+            is1ESPipeline: ${{ parameters.is1ESPipeline }}
+            StageLabel: 'Validation'
+            JobLabel: 'Signing'
+            BinlogToolVersion: $(BinlogToolVersion)
 
     - job:
       displayName: SourceLink Validation
@@ -230,7 +230,7 @@ stages:
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
-          ${{ if eq(parameters.is1ESPipeline, true) }}:
+          ${{ if eq(parameters.is1ESPipeline, true) }}:          
             name: $(DncEngInternalBuildPool)
             image: 1es-windows-2022
             os: windows
@@ -238,33 +238,33 @@ stages:
             name: $(DncEngInternalBuildPool)
             demands: ImageOverride -equals windows.vs2026preview.scout.amd64
       steps:
-      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
-        parameters:
-          BARBuildId: ${{ parameters.BARBuildId }}
-          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-          is1ESPipeline: ${{ parameters.is1ESPipeline }}
-
-      - task: DownloadBuildArtifacts@0
-        displayName: Download Blob Artifacts
-        inputs:
-          buildType: specific
-          buildVersionToDownload: specific
-          project: $(AzDOProjectName)
-          pipeline: $(AzDOPipelineId)
-          buildId: $(AzDOBuildId)
-          artifactName: BlobArtifacts
-          checkDownloadedFiles: true
-
-      - task: PowerShell@2
-        displayName: Validate
-        inputs:
-          filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1
-          arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ 
-            -ExtractPath $(Agent.BuildDirectory)/Extract/ 
-            -GHRepoName $(Build.Repository.Name) 
-            -GHCommit $(Build.SourceVersion)
-            -SourcelinkCliVersion $(SourceLinkCLIVersion)
-        continueOnError: true
+        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
+          parameters:
+            BARBuildId: ${{ parameters.BARBuildId }}
+            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+            is1ESPipeline: ${{ parameters.is1ESPipeline }}
+
+        - task: DownloadBuildArtifacts@0
+          displayName: Download Blob Artifacts
+          inputs:
+            buildType: specific
+            buildVersionToDownload: specific
+            project: $(AzDOProjectName)
+            pipeline: $(AzDOPipelineId)
+            buildId: $(AzDOBuildId)
+            artifactName: BlobArtifacts
+            checkDownloadedFiles: true
+
+        - task: PowerShell@2
+          displayName: Validate
+          inputs:
+            filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1
+            arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ 
+              -ExtractPath $(Agent.BuildDirectory)/Extract/ 
+              -GHRepoName $(Build.Repository.Name) 
+              -GHCommit $(Build.SourceVersion)
+              -SourcelinkCliVersion $(SourceLinkCLIVersion)
+          continueOnError: true
 
 - ${{ if ne(parameters.publishAssetsImmediately, 'true') }}:
   - stage: publish_using_darc
@@ -274,10 +274,10 @@ stages:
       dependsOn: ${{ parameters.validateDependsOn }}
     displayName: Publish using Darc
     variables:
-    - template: /eng/common/core-templates/post-build/common-variables.yml
-    - template: /eng/common/core-templates/variables/pool-providers.yml
-      parameters:
-        is1ESPipeline: ${{ parameters.is1ESPipeline }}
+      - template: /eng/common/core-templates/post-build/common-variables.yml
+      - template: /eng/common/core-templates/variables/pool-providers.yml
+        parameters:
+          is1ESPipeline: ${{ parameters.is1ESPipeline }}
     jobs:
     - job:
       displayName: Publish Using Darc
@@ -291,41 +291,42 @@ stages:
           os: windows
         # If it's not devdiv, it's dnceng
         ${{ else }}:
-          ${{ if eq(parameters.is1ESPipeline, true) }}:
+          ${{ if eq(parameters.is1ESPipeline, true) }}:          
             name: NetCore1ESPool-Publishing-Internal
             image: windows.vs2022.amd64
             os: windows
           ${{ else }}:
             name: NetCore1ESPool-Publishing-Internal
-            demands: ImageOverride -equals windows.vs2022.amd64
+            demands: ImageOverride -equals windows.vs2022.amd64          
       steps:
-      - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
-        parameters:
-          BARBuildId: ${{ parameters.BARBuildId }}
-          PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-          is1ESPipeline: ${{ parameters.is1ESPipeline }}
-
-      - task: NuGetAuthenticate@1
-
-      # Populate internal runtime variables.
-      - template: /eng/common/templates/steps/enable-internal-sources.yml
-        parameters:
-          legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
-
-      - template: /eng/common/templates/steps/enable-internal-runtimes.yml
-
-      - task: UseDotNet@2
-        inputs:
-          version: 8.0.x
-
-      - task: AzureCLI@2
-        displayName: Publish Using Darc
-        inputs:
-          azureSubscription: "Darc: Maestro Production"
-          scriptType: ps
-          scriptLocation: scriptPath
-          scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
-          arguments: >
+        - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
+          parameters:
+            BARBuildId: ${{ parameters.BARBuildId }}
+            PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+            is1ESPipeline: ${{ parameters.is1ESPipeline }}
+
+        - task: NuGetAuthenticate@1
+
+        # Populate internal runtime variables.
+        - template: /eng/common/templates/steps/enable-internal-sources.yml
+          parameters:
+            legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
+
+        - template: /eng/common/templates/steps/enable-internal-runtimes.yml
+
+        # Darc is targeting 8.0, so make sure it's installed
+        - task: UseDotNet@2
+          inputs:
+            version: 8.0.x
+
+        - task: AzureCLI@2
+          displayName: Publish Using Darc
+          inputs:
+            azureSubscription: "Darc: Maestro Production"
+            scriptType: ps
+            scriptLocation: scriptPath
+            scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
+            arguments: >
               -BuildId $(BARBuildId)
               -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
               -AzdoToken '$(System.AccessToken)'
diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
index 003f7eae0fa..c05f6502797 100644
--- a/eng/common/core-templates/steps/generate-sbom.yml
+++ b/eng/common/core-templates/steps/generate-sbom.yml
@@ -5,7 +5,7 @@
 # IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector.
 
 parameters:
-  PackageVersion: 11.0.0
+  PackageVersion: 10.0.0
   BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
   PackageName: '.NET'
   ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
diff --git a/eng/common/core-templates/steps/install-microbuild-impl.yml b/eng/common/core-templates/steps/install-microbuild-impl.yml
deleted file mode 100644
index da22beb3f60..00000000000
--- a/eng/common/core-templates/steps/install-microbuild-impl.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-parameters:
-  - name: microbuildTaskInputs
-    type: object
-    default: {}
-
-  - name: microbuildEnv
-    type: object
-    default: {}
-
-  - name: enablePreviewMicrobuild
-    type: boolean
-    default: false
-
-  - name: condition
-    type: string
-
-  - name: continueOnError
-    type: boolean
-
-steps:
-- ${{ if eq(parameters.enablePreviewMicrobuild, true) }}:
-    - task: MicroBuildSigningPluginPreview@4
-      displayName: Install Preview MicroBuild plugin
-      inputs: ${{ parameters.microbuildTaskInputs }}
-      env: ${{ parameters.microbuildEnv }}
-      continueOnError: ${{ parameters.continueOnError }}
-      condition: ${{ parameters.condition }}
-- ${{ else }}:
-  - task: MicroBuildSigningPlugin@4
-    displayName: Install MicroBuild plugin
-    inputs: ${{ parameters.microbuildTaskInputs }}
-    env: ${{ parameters.microbuildEnv }}
-    continueOnError: ${{ parameters.continueOnError }}
-    condition: ${{ parameters.condition }}
diff --git a/eng/common/core-templates/steps/install-microbuild.yml b/eng/common/core-templates/steps/install-microbuild.yml
index 4f4b56ed2a6..553fce66b94 100644
--- a/eng/common/core-templates/steps/install-microbuild.yml
+++ b/eng/common/core-templates/steps/install-microbuild.yml
@@ -4,8 +4,6 @@ parameters:
   # Enable install tasks for MicroBuild on Mac and Linux
   # Will be ignored if 'enableMicrobuild' is false or 'Agent.Os' is 'Windows_NT'
   enableMicrobuildForMacAndLinux: false
-  # Enable preview version of MB signing plugin
-  enablePreviewMicrobuild: false
   # Determines whether the ESRP service connection information should be passed to the signing plugin.
   # This overlaps with _SignType to some degree. We only need the service connection for real signing.
   # It's important that the service connection not be passed to the MicroBuildSigningPlugin task in this place.
@@ -15,8 +13,6 @@ parameters:
   microbuildUseESRP: true
   # Microbuild installation directory
   microBuildOutputFolder: $(Agent.TempDirectory)/MicroBuild
-  # Microbuild version
-  microbuildPluginVersion: 'latest'
 
   continueOnError: false
 
@@ -73,46 +69,42 @@ steps:
     # YAML expansion, and Windows vs. Linux/Mac uses different service connections. However,
     # we can avoid including the MB install step if not enabled at all. This avoids a bunch of
     # extra pipeline authorizations, since most pipelines do not sign on non-Windows.
-    - template: /eng/common/core-templates/steps/install-microbuild-impl.yml@self
-      parameters:
-        enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
-        microbuildTaskInputs:
+    - task: MicroBuildSigningPlugin@4
+      displayName: Install MicroBuild plugin (Windows)
+      inputs:
+        signType: $(_SignType)
+        zipSources: false
+        feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+        ${{ if eq(parameters.microbuildUseESRP, true) }}:
+          ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
+          ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+            ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
+          ${{ else }}:
+            ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
+      env:
+        TeamName: $(_TeamName)
+        MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
+        SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+      continueOnError: ${{ parameters.continueOnError }}
+      condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
+
+    - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
+      - task: MicroBuildSigningPlugin@4
+        displayName: Install MicroBuild plugin (non-Windows)
+        inputs:
           signType: $(_SignType)
           zipSources: false
           feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
-          version: ${{ parameters.microbuildPluginVersion }}
+          workingDirectory: ${{ parameters.microBuildOutputFolder }}
           ${{ if eq(parameters.microbuildUseESRP, true) }}:
             ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
             ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
-              ConnectedPMEServiceName: 6cc74545-d7b9-4050-9dfa-ebefcc8961ea
+              ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
             ${{ else }}:
-              ConnectedPMEServiceName: 248d384a-b39b-46e3-8ad5-c2c210d5e7ca
-        microbuildEnv:
+              ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
+        env:
           TeamName: $(_TeamName)
           MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
           SYSTEM_ACCESSTOKEN: $(System.AccessToken)
         continueOnError: ${{ parameters.continueOnError }}
-        condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'), in(variables['_SignType'], 'real', 'test'))
-
-    - ${{ if eq(parameters.enableMicrobuildForMacAndLinux, true) }}:
-      - template: /eng/common/core-templates/steps/install-microbuild-impl.yml@self
-        parameters:
-          enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
-          microbuildTaskInputs:
-            signType: $(_SignType)
-            zipSources: false
-            feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
-            version: ${{ parameters.microbuildPluginVersion }}
-            workingDirectory: ${{ parameters.microBuildOutputFolder }}
-            ${{ if eq(parameters.microbuildUseESRP, true) }}:
-              ConnectedServiceName: 'MicroBuild Signing Task (DevDiv)'
-              ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
-                ConnectedPMEServiceName: beb8cb23-b303-4c95-ab26-9e44bc958d39
-              ${{ else }}:
-                ConnectedPMEServiceName: c24de2a5-cc7a-493d-95e4-8e5ff5cad2bc
-          microbuildEnv:
-            TeamName: $(_TeamName)
-            MicroBuildOutputFolderOverride: ${{ parameters.microBuildOutputFolder }}
-            SYSTEM_ACCESSTOKEN: $(System.AccessToken)
-          continueOnError: ${{ parameters.continueOnError }}
-          condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'),  eq(variables['_SignType'], 'real'))
+        condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'),  eq(variables['_SignType'], 'real'))
diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml
index acf16ed3496..b9c86c18ae4 100644
--- a/eng/common/core-templates/steps/source-build.yml
+++ b/eng/common/core-templates/steps/source-build.yml
@@ -24,7 +24,7 @@ steps:
     # in the default public locations.
     internalRuntimeDownloadArgs=
     if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
-      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
+      internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://ci.dot.net/internal --runtimesourcefeedkey '$(dotnetbuilds-internal-container-read-token-base64)''
     fi
 
     buildConfig=Release
diff --git a/eng/common/core-templates/steps/source-index-stage1-publish.yml b/eng/common/core-templates/steps/source-index-stage1-publish.yml
index 3ad83b8c307..e9a694afa58 100644
--- a/eng/common/core-templates/steps/source-index-stage1-publish.yml
+++ b/eng/common/core-templates/steps/source-index-stage1-publish.yml
@@ -1,6 +1,6 @@
 parameters:
-  sourceIndexUploadPackageVersion: 2.0.0-20250906.1
-  sourceIndexProcessBinlogPackageVersion: 1.0.1-20250906.1
+  sourceIndexUploadPackageVersion: 2.0.0-20250818.1
+  sourceIndexProcessBinlogPackageVersion: 1.0.1-20250818.1
   sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
   binlogPath: artifacts/log/Debug/Build.binlog
 
@@ -14,8 +14,8 @@ steps:
     workingDirectory: $(Agent.TempDirectory)
 
 - script: |
-    $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --source ${{parameters.sourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
-    $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --source ${{parameters.sourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
+    $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version ${{parameters.sourceIndexProcessBinlogPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
+    $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version ${{parameters.sourceIndexUploadPackageVersion}} --add-source ${{parameters.SourceIndexPackageSource}} --tool-path $(Agent.TempDirectory)/.source-index/tools
   displayName: "Source Index: Download netsourceindex Tools"
   # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
   workingDirectory: $(Agent.TempDirectory)
diff --git a/eng/common/cross/build-rootfs.sh b/eng/common/cross/build-rootfs.sh
index 9b7eede4e50..8abfb71f727 100755
--- a/eng/common/cross/build-rootfs.sh
+++ b/eng/common/cross/build-rootfs.sh
@@ -72,7 +72,7 @@ __AlpinePackages+=" krb5-dev"
 __AlpinePackages+=" openssl-dev"
 __AlpinePackages+=" zlib-dev"
 
-__FreeBSDBase="13.5-RELEASE"
+__FreeBSDBase="13.4-RELEASE"
 __FreeBSDPkg="1.21.3"
 __FreeBSDABI="13"
 __FreeBSDPackages="libunwind"
@@ -383,7 +383,7 @@ while :; do
             ;;
         freebsd14)
             __CodeName=freebsd
-            __FreeBSDBase="14.3-RELEASE"
+            __FreeBSDBase="14.2-RELEASE"
             __FreeBSDABI="14"
             __SkipUnmount=1
             ;;
diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
index 9f5ad6b763b..e889f439b8d 100755
--- a/eng/common/darc-init.sh
+++ b/eng/common/darc-init.sh
@@ -5,7 +5,7 @@ darcVersion=''
 versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2020-02-20'
 verbosity='minimal'
 
-while [[ $# -gt 0 ]]; do
+while [[ $# > 0 ]]; do
   opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
   case "$opt" in
     --darcversion)
diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh
index 61f302bb677..7b9d97e3bd4 100755
--- a/eng/common/dotnet-install.sh
+++ b/eng/common/dotnet-install.sh
@@ -18,7 +18,7 @@ architecture=''
 runtime='dotnet'
 runtimeSourceFeed=''
 runtimeSourceFeedKey=''
-while [[ $# -gt 0 ]]; do
+while [[ $# > 0 ]]; do
   opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
   case "$opt" in
     -version|-v)
diff --git a/eng/common/dotnet.sh b/eng/common/dotnet.sh
index f6d24871c1d..2ef68235675 100755
--- a/eng/common/dotnet.sh
+++ b/eng/common/dotnet.sh
@@ -19,7 +19,7 @@ source $scriptroot/tools.sh
 InitializeDotNetCli true # install
 
 # Invoke acquired SDK with args if they are provided
-if [[ $# -gt 0 ]]; then
+if [[ $# > 0 ]]; then
   __dotnetDir=${_InitializeDotNetCli}
   dotnetPath=${__dotnetDir}/dotnet
   ${dotnetPath} "$@"
diff --git a/eng/common/internal-feed-operations.sh b/eng/common/internal-feed-operations.sh
index 6299e7effd4..9378223ba09 100755
--- a/eng/common/internal-feed-operations.sh
+++ b/eng/common/internal-feed-operations.sh
@@ -100,7 +100,7 @@ operation=''
 authToken=''
 repoName=''
 
-while [[ $# -gt 0 ]]; do
+while [[ $# > 0 ]]; do
   opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
   case "$opt" in
     --operation)
diff --git a/eng/common/native/install-dependencies.sh b/eng/common/native/install-dependencies.sh
index 11f81cbd40d..477a44f335b 100644
--- a/eng/common/native/install-dependencies.sh
+++ b/eng/common/native/install-dependencies.sh
@@ -27,11 +27,9 @@ case "$os" in
                 libssl-dev libkrb5-dev pigz cpio
 
             localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
-        elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ] || [ "$ID" = "centos" ]; then
+        elif [ "$ID" = "fedora" ] || [ "$ID" = "rhel" ] || [ "$ID" = "azurelinux" ]; then
             pkg_mgr="$(command -v tdnf 2>/dev/null || command -v dnf)"
             $pkg_mgr install -y cmake llvm lld lldb clang python curl libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio
-        elif [ "$ID" = "amzn" ]; then
-            dnf install -y cmake llvm lld lldb clang python libicu-devel openssl-devel krb5-devel lttng-ust-devel pigz cpio
         elif [ "$ID" = "alpine" ]; then
             apk add build-base cmake bash curl clang llvm-dev lld lldb krb5-dev lttng-ust-dev icu-dev openssl-dev pigz cpio
         else
diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1
index fc0218a013d..472d5bb562c 100644
--- a/eng/common/post-build/redact-logs.ps1
+++ b/eng/common/post-build/redact-logs.ps1
@@ -9,8 +9,7 @@ param(
   [Parameter(Mandatory=$false)][string] $TokensFilePath,
   [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact,
   [Parameter(Mandatory=$false)][string] $runtimeSourceFeed,
-  [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey
-)
+  [Parameter(Mandatory=$false)][string] $runtimeSourceFeedKey)
 
 try {
   $ErrorActionPreference = 'Stop'
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index f6bde268379..049fe6db994 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -157,6 +157,9 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) {
     return $global:_DotNetInstallDir
   }
 
+  # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
+  $env:DOTNET_MULTILEVEL_LOOKUP=0
+
   # Disable first run since we do not need all ASP.NET packages restored.
   $env:DOTNET_NOLOGO=1
 
@@ -222,6 +225,7 @@ function InitializeDotNetCli([bool]$install, [bool]$createSdkLocationFile) {
   # Make Sure that our bootstrapped dotnet cli is available in future steps of the Azure Pipelines build
   Write-PipelinePrependPath -Path $dotnetRoot
 
+  Write-PipelineSetVariable -Name 'DOTNET_MULTILEVEL_LOOKUP' -Value '0'
   Write-PipelineSetVariable -Name 'DOTNET_NOLOGO' -Value '1'
 
   return $global:_DotNetInstallDir = $dotnetRoot
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 6c121300ac7..c1841c9dfd0 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -115,6 +115,9 @@ function InitializeDotNetCli {
 
   local install=$1
 
+  # Don't resolve runtime, shared framework, or SDK from other locations to ensure build determinism
+  export DOTNET_MULTILEVEL_LOOKUP=0
+
   # Disable first run since we want to control all package sources
   export DOTNET_NOLOGO=1
 
@@ -163,6 +166,7 @@ function InitializeDotNetCli {
   # build steps from using anything other than what we've downloaded.
   Write-PipelinePrependPath -path "$dotnet_root"
 
+  Write-PipelineSetVariable -name "DOTNET_MULTILEVEL_LOOKUP" -value "0"
   Write-PipelineSetVariable -name "DOTNET_NOLOGO" -value "1"
 
   # return value
diff --git a/global.json b/global.json
index 938c91342a2..7c07293cd9d 100644
--- a/global.json
+++ b/global.json
@@ -22,7 +22,7 @@
     "perl": "5.38.2.2"
   },
   "msbuild-sdks": {
-    "Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26069.1",
+    "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26062.3",
     "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23255.2"
   }
 }
