Skip to content

ci(release): take the version as the run's input, not a bump commit - #62

Open
yaacovcorcos wants to merge 1 commit into
mainfrom
claude/release-version-input-20261115
Open

yaacovcorcos wants to merge 1 commit into
mainfrom
claude/release-version-input-20261115

Conversation

@yaacovcorcos

Copy link
Copy Markdown
Contributor

Until now, a release needed a pull request that bumped scient.json, then a second CI run on main, before the release run could even start. Scient Desktop doesn't work that way: its release run takes the version as an input and writes it into the build's own checkout, without committing it (update-release-package-versions.ts). This PR gives the agent the same model.

What changes

  • The version is the release run's input. workflow_dispatch gains an optional version. Leave it blank to release the next patch after the latest published release, or give the next minor or major (-f version=0.2.0). Nothing commits the version, and no release: Scient Agent x.y.z bump PR is needed any more.
  • Checked before any build starts. release-version.ts resolves the version and applies the same rule as before: right after the latest published release, with no tag on it. The job now runs on every run, doing nothing outside a release, and build depends on it. A wrong version fails in about a minute instead of after the builds. Any job that depends on a skipped job would itself be skipped, which is why it always runs.
  • Each build stamps it. release-version.ts --stamp <version> writes the version into that runner's scient.json right after the build id is stamped, so the binary reports it. The version checks in build and verify-macos compare against the run's version. The release job's last check before drafting uses the same version.
  • SCIENT.md documents the new procedure. scient.json's version on main is now only what a build outside a release reports, the same way Desktop's package.json version is.

Unchanged: who publishes (a person publishes the draft); the tag still comes last; reusing a number for a retry (a blank version picks the same number again); signing, notarization, compression, the R2 copy, and Desktop's catalog.

Checks

  • scripts/scient/release-version.test.ts: 6 pass, including new cases for picking the version and stamping scient.json with its layout unchanged.
  • The script against the live repository:
    • blank → 0.1.11
    • v0.1.11 → 0.1.11
    • 0.2.0 → accepted
    • 0.1.10 → refused (already tagged)
    • 0.1.13 → refused (not next)
    • --stamp nope → exit 2
  • oxlint and oxfmt --check pass on the changed files, and the divergence check passes.
  • The YAML parses, and the job graph was read back.

Not exercised: a real release run. The first release after this merges is that test. It would be 0.1.11, because main's unreleased bump already matches it.

🤖 Generated with Claude Code

A release needed a pull request that bumped scient.json, then a second
CI run on main, before the release run could start. Scient Desktop
takes the version as the release run's input and writes it into the
build's checkout without committing it; the agent now does the same.

The release run takes an optional version and otherwise releases the
next patch after the latest published release. Its first job checks
it before any build starts, each build stamps it into its own
scient.json and checks the binary reports it, and the release job
checks it again before drafting.

Scient-Divergence: SA-RELEASE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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