Skip to content

feat(release): ship Windows-only prereleases - #20

Merged
slashdevcorpse merged 8 commits into
mainfrom
feat/super-windows-prerelease
Jul 20, 2026
Merged

feat(release): ship Windows-only prereleases#20
slashdevcorpse merged 8 commits into
mainfrom
feat/super-windows-prerelease

Conversation

@slashdevcorpse

@slashdevcorpse slashdevcorpse commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • default the manual prerelease workflow to the Windows-only release scope
  • require the native Windows build and skip macOS fail-closed unless the combined scope is explicitly selected
  • publish an exact six-asset Windows set with checksums, provenance, immutable source/tag binding, and unsigned-release warnings
  • preserve the separately gated combined Windows/macOS path without reading a macOS allowlist during Windows-only publication
  • align the implementation plan and install documentation with Windows-first delivery

Verification

  • 3 focused test files, 24 tests passed
  • workflow contract validator passed
  • release smoke passed
  • diff check passed
  • two independent reviews returned SHIP with no actionable findings

Planned first dispatch

  • version: 0.5.5-super.1
  • tag: super-v0.5.5-super.1
  • release_scope: windows-only
  • confirm_unsigned: true

Summary by cubic

Default prereleases now ship Windows-only with a selectable release_scope; macOS is optional and runs only in the combined scope. Publication is fully scope-aware with a bound metadata flow and fail-closed gates that enforce exact scoped assets, policies, and docs.

  • New Features

    • Added release_scope input (default windows-only) that binds include_macos and asset_count; prepare/verify require --release-scope and only pass --mac-signature-allowlist for windows-and-macos.
    • Scoped artifacts: Windows-only publishes 6 files; combined publishes 8; release-index.json platforms and UNSIGNED-BUILD.md adapt to scope; docs updated to Windows-first.
  • Bug Fixes

    • Bound scope metadata end-to-end: preflight outputs release_scope/include_macos/asset_count, publish job condition gates exactly over selected lanes, downloads macOS only when combined, and enforces exact asset counts on upload/redownload.
    • Tightened contracts and admission: exact ordered scope case with a rejecting *; forbid macOS assets/allowlist in Windows-only and require the allowlist only in combined; block prohibited files; new CLI/tests cover scope parsing, gating, and data-flow checks.

Written for commit 0771991. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Added selectable prerelease release scopes: Windows-only or Windows with macOS, with scope-aware build, download, and publish behavior.
  • Documentation
    • Updated installation and prerelease/warning guidance to reflect unsigned prereleases and opt-in macOS artifacts for the combined scope.
    • Revised release plan to match the Windows-first, optional macOS arm64 approach.
  • Bug Fixes
    • Made admission/verification and budget enforcement fail-closed and scope-aware, including dynamic asset-count validation.
  • Tests
    • Strengthened coverage for CLI scope parsing, workflow gating, and macOS signature/policy enforcement.

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The release path now accepts windows-only or windows-and-macos, conditionally builds and validates macOS artifacts, derives scoped asset counts and allowlists, and propagates scope through CLI admission, workflow contracts, release verification, and documentation.

Changes

Scoped release support

Layer / File(s) Summary
Scope-aware release admission
scripts/lib/super-synara-release-admission.ts
Release indexes, allowlists, warnings, prohibited assets, provenance checks, checksums, and verification now derive from releaseScope.
CLI scope wiring and admission coverage
scripts/prepare-super-synara-release.ts, scripts/prepare-super-synara-release.test.ts, scripts/lib/super-synara-release-admission.test.ts
The CLI validates scope-specific macOS allowlist arguments, conditionally loads signature evidence, and tests Windows-only and combined admission paths.
Scope-selectable prerelease workflow
.github/workflows/super-synara-prerelease.yml
Preflight outputs, macOS jobs, publishing, release preparation, uploads, and verification are conditional on the selected scope and computed asset count.
Workflow contract enforcement
scripts/lib/super-synara-workflow-contract.ts, scripts/lib/super-synara-workflow-contract.test.ts
Workflow contracts enforce valid scope inputs, exact lane conditions, macOS policy gating, fail-closed publishing, and dynamic asset verification.
Release plan and installation guidance
docs/plans/super-synara-local-feasibility.md, docs/super-synara-install.md
Documentation describes Windows-first releases, optional macOS inclusion, scoped assets, warnings, and validation criteria.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Operator
  participant PrereleaseWorkflow
  participant NativeBuilds
  participant ReleaseCLI
  participant ReleaseAdmission
  participant GitHubRelease
  Operator->>PrereleaseWorkflow: select release_scope
  PrereleaseWorkflow->>NativeBuilds: build selected platform lanes
  NativeBuilds-->>PrereleaseWorkflow: return selected artifacts
  PrereleaseWorkflow->>ReleaseCLI: pass release scope and optional macOS allowlist
  ReleaseCLI->>ReleaseAdmission: prepare and verify scoped release
  ReleaseAdmission-->>PrereleaseWorkflow: return release index
  PrereleaseWorkflow->>GitHubRelease: upload and compare selected assets
Loading

Possibly related PRs

  • slashdevcorpse/synara#1: Introduced the Super Synara release admission and workflow code updated here for scope-aware platforms and validation.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly matches the main change: defaulting prereleases to a Windows-only release scope.
Description check ✅ Passed The description covers what changed, why, verification, and rollout details, but it does not follow the requested template sections like What Changed/Why/Checklist.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread scripts/lib/super-synara-workflow-contract.ts Outdated
Comment thread scripts/lib/super-synara-workflow-contract.ts
Comment thread docs/plans/super-synara-local-feasibility.md Outdated
Comment thread scripts/prepare-super-synara-release.ts Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
scripts/lib/super-synara-workflow-contract.ts (1)

647-659: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the allowlist count breakdown

The 3/3/4 occurrence checks are easy to misread; add a short comment explaining where each match comes from so later workflow edits don’t accidentally break the gate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/lib/super-synara-workflow-contract.ts` around lines 647 - 659, Add a
concise comment immediately before the occurrence checks in the validation block
around scopedAllowlistCondition, scopedAllowlistPath, and the
macos_allowlist_args matches, documenting the expected 3/3/4 counts and what
workflow sections each count represents. Keep the existing validation logic and
error behavior unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/lib/super-synara-workflow-contract.ts`:
- Around line 116-151: Update verifyReleaseScopeCase after constructing
expectedArms to reject any unexpected or extra case arms, including catch-all
arms, by validating that the parsed arms exactly match the expected arm set and
count. Preserve the existing command validation for WINDOWS_RELEASE_SCOPE and
MACOS_RELEASE_SCOPE, and fail closed before accepting the contract.

---

Nitpick comments:
In `@scripts/lib/super-synara-workflow-contract.ts`:
- Around line 647-659: Add a concise comment immediately before the occurrence
checks in the validation block around scopedAllowlistCondition,
scopedAllowlistPath, and the macos_allowlist_args matches, documenting the
expected 3/3/4 counts and what workflow sections each count represents. Keep the
existing validation logic and error behavior unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f8ee63a0-6e34-44aa-8585-0ad511c7e932

📥 Commits

Reviewing files that changed from the base of the PR and between 9178ebe and 9069904.

📒 Files selected for processing (5)
  • docs/plans/super-synara-local-feasibility.md
  • scripts/lib/super-synara-workflow-contract.test.ts
  • scripts/lib/super-synara-workflow-contract.ts
  • scripts/prepare-super-synara-release.test.ts
  • scripts/prepare-super-synara-release.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • scripts/lib/super-synara-workflow-contract.test.ts
  • scripts/prepare-super-synara-release.test.ts
  • scripts/prepare-super-synara-release.ts
  • docs/plans/super-synara-local-feasibility.md

Comment thread scripts/lib/super-synara-workflow-contract.ts

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 5 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread scripts/lib/super-synara-workflow-contract.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant