Repository navigation
feat(release): prepare Neo 0.51.1.3 arm64 test build - #2917
Merged
Merged
Conversation
release-browserclaw.yml gains three validated dispatch inputs whose defaults reproduce the full release: platforms (all|macos|linux|windows), macos_arch (universal|arm64) and publication (alpha|draft-only). - preflight validates the selection through env and emits per-lane flags; lanes and the finalizer read only those outputs. - draft-only passes defer_finalize to both component workflows, so they keep immutable versioned R2 objects and private drafts but skip tags, the server latest alias, public releases, OTA/feeds and version reflection. - finalize runs despite skipped lanes: it requires preflight, both components and every selected lane to succeed and every unselected lane to be skipped, then finalizes only the selected receipts. - release-macos.yml gets a notify input (default true on dispatch and call) gating its Slack failure ping and blanking SLACK_WEBHOOK_URL so a persistent builder .env cannot post from a quiet build.
Component resolution can reuse an annotated same-source tag whose release is already public. A deferred (draft-only) build never finalizes, yet the server attachment step ran `gh release upload --clobber` and the extension step could add a missing asset to that public release. When defer_finalize is set, both steps now write only to a private draft bound to the release SHA (target match, or a tag verified at that SHA). Server assets on an already-published release are reused read-only when byte-identical; missing or differing assets fail before any write. Non-deferred (alpha) attachment is unchanged. Regression tests run the shipped step scripts against a fake gh that records every mutating call.
The deferred attachment guard ran inside `if DEFER && release=$(gh release view --json ...)`, so a transient metadata failure skipped the whole guard while the later plain existence check could still succeed and `upload --clobber` would rewrite a public release. Keep the original existence/private-draft creation path, then, when deferred, read the metadata as a plain assignment so any gh failure aborts under set -e, reject an unreadable draft state, and only then validate the private draft or reuse public assets read-only before the unchanged upload. Regressions cover a release whose existence check succeeds while its JSON read fails (public and private) or lacks isDraft, plus the extension equivalent: nonzero exit and zero mutating gh calls.
Contributor
✅ Tests passed: 66/66Ran 1 of 16 suites (15 not affected by this change).
|
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Neo full-release workflow always starts Linux, Windows and universal macOS builds and promotes its components. This change adds platform, macOS architecture and publication choices, while retaining the existing full-release defaults. The requested test dispatch selects macOS arm64 with
publication=draft-only.Draft-only retains immutable source-bound component objects and private drafts, skips component finalization/feeds/latest aliases/version reflection, and disables explicit and inherited macOS Slack notifications. Finalization accepts skipped unselected lanes and requires every selected lane and component to succeed before creating only the selected browser draft assets. Deferred component attachment also refuses public or foreign-release mutation.
After profile PR #2908 merged as
a1eb3115c8e33ed7b7ef6b0ee8aadc05db782adb, the browser PATCH advances exactly once from 0.51.1.2 to 0.51.1.3. No native or Rust profile behavior changes are part of this preparation.Validation at
c899112f8: 1,270 bos_build tests OK (two pre-existing skips), 66 TypeScript release tests pass, Ruff and actionlint pass. One independent workflow review identified deferred public-asset mutation; the fix and the mandatory-metadata follow-up are root-vetted, with shipped-step fake-gh red/green regressions. Exact-head CI will be checked before merge. The default all/universal/alpha path and selected-lane failure/skip behavior are covered, including no public component writes in draft-only mode.Authorized endpoint: one main-branch macOS arm64 Neo test build and GitHub draft. No live browser/component feeds, stable aliases, Slack/Discord announcement, or owner installation. TKT-1025 findings and the accepted existing-only removal-race caveat from #2908 remain unfixed and explicitly outside this release-preparation change.