@@ -68,10 +68,12 @@ does not change the existing OData test platform.
6868
6969The gated main Hidi publisher preserves the ESRP NuGet contract from
7070[ microsoft/OpenAPI.NET #3107 ] ( https://github.com/microsoft/OpenAPI.NET/pull/3107 )
71- (source commit ` e1a75437b76ebfc7c9eb446e9fd0b59a21afb14b ` ). Official builds include
71+ (source commit ` e1a75437b76ebfc7c9eb446e9fd0b59a21afb14b ` ). Official builds are intended to include
7272the signed Hidi ` .nupkg ` , a matching ` .snupkg ` and the private-feed version-check
7373script in the ` Hidi ` artifact. The ` nuget-org ` release job consumes that artifact
74- without a repository checkout or the Docker context.
74+ without a repository checkout or the Docker context. Outer NuGet signing and
75+ a signed executable do not prove that the DLL inside the package is signed;
76+ the cutover prerequisites below require separate verification.
7577
7678Before ESRP publication, the job requires the exact ` hidi-v3.* ` release package
7779and symbols with a version newer than 3.10.2. It checks
@@ -83,8 +85,9 @@ release's signed package, executable and ZIP attachments to be updated.
8385
8486ESRP receives only the exact Hidi package and matching symbols under the
8587` openapinet ` organization, retaining the source's federated DevX connection,
86- publisher identity, owners and approvers. This handoff does not enable publishing
87- or grant pipeline permissions. Owners must separately verify private-feed token
88+ publisher identity, owners and approvers. The main pipeline sets the stable
89+ publishing flag to ` 'true' ` , but this does not grant pipeline permissions.
90+ Owners must separately verify private-feed token
8891access, the ESRP connection and protected ` nuget-org ` environment authorization
8992before cutover; local packaging does not prove production signing or publishing.
9093
@@ -151,18 +154,46 @@ this handoff does not grant permissions or bypass service-connection approvals.
151154The Dockerfile secret mount is optional, so local and GitHub Actions builds
152155without a secret continue to use their default NuGet sources.
153156
154- The migration baseline 3.10.2 is already published. Destination Hidi NuGet,
155- GitHub release, stable Docker and preview Docker publishing are disabled until
156- source cutover. The first destination stable release must advance the Hidi
157- version; OData releases use separate artifacts and tags.
157+ The migration baseline 3.10.2 is already published and must not be republished.
158+ On ` main ` , ` hidiPublishingEnabled: 'true' ` enables the stable NuGet, GitHub release
159+ attachments and Docker stage only for successful ` hidi-v3.* ` tag builds.
160+ ` hidiPreviewPublishingEnabled: 'false' ` keeps preview Docker publishing off,
161+ so main branch and PR builds do not publish. The existing exact tag/project
162+ validation, version floor newer than 3.10.2 and environment approvals remain
163+ required. OData releases use separate artifacts and tags.
158164
159165The gated official pipeline retains the consumer image
160166` mcr.microsoft.com/openapi/hidi ` , backed by
161167` msgraphprodregistry.azurecr.io/public/openapi/hidi ` . Stable images use ` latest `
162168and the independent Hidi version. Main previews use ` nightly ` and
163169` VERSION.YYYYMMDDRUNNUM ` , for ` linux/amd64 ` and ` linux/arm64/v8 ` .
164- No image is pushed during this migration . Privileged cross-platform emulation
170+ This preparation does not authorize an image push . Privileged cross-platform emulation
165171setup belongs only in the authorized CI pipeline, not a shared local environment.
172+
173+ ### Release cutover prerequisites
174+
175+ Hold the stable enablement merge until the signed-pack corrections
176+ [ #904 ] ( https://github.com/microsoft/OpenAPI.NET.OData/pull/904 ) (` support/v2 ` ) and
177+ [ #903 ] ( https://github.com/microsoft/OpenAPI.NET.OData/pull/903 ) (` main ` ) complete
178+ normal acceptance in v2-first order. Then verify a fresh official build with
179+ both publishing flags disabled: extract the Hidi DLL from the exact ` .nupkg ` ,
180+ verify its genuine Microsoft Authenticode signature and SHA-256 equality with
181+ the signed DLL staged by that build, and verify the outer package and Windows
182+ executable signatures. A successful signing task or local packaging alone is
183+ not this proof. The old official artifacts contain an unsigned inner DLL and
184+ must not be republished.
185+
186+ The source main publisher must also be retired and cutover approved; source
187+ cleanup is tracked in
188+ [ microsoft/OpenAPI.NET #3111 ] ( https://github.com/microsoft/OpenAPI.NET/pull/3111 ) .
189+ This draft preparation does not perform that retirement or grant resource access.
190+
191+ Merging a YAML flag change on ` main ` does not change the YAML or binaries at an
192+ existing tag, or an already compiled pipeline run. The existing ` hidi-v3.11.0 `
193+ tag points to the old publish-disabled revision without the signed-pack fix.
194+ Do not move or reuse that tag, rerun it to publish, or republish its old artifact.
195+ Future publication requires a corrected release ref/version approved for cutover
196+ after the prerequisites above are met.
166197
167198## How to use Hidi
168199
0 commit comments