Skip to content

Drop snapshot-generate-cmd: rainix owns the release freeze - #9

Open
thedavidmeister wants to merge 1 commit into
mainfrom
2026-08-13-drop-snapshot-generate-cmd
Open

Drop snapshot-generate-cmd: rainix owns the release freeze#9
thedavidmeister wants to merge 1 commit into
mainfrom
2026-08-13-drop-snapshot-generate-cmd

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Drops snapshot-generate-cmd from the rainix-tag-release call. The freeze it
used to name is now rainix-static cut-release inside the reusable, which owns
the regenerate -> forge fmt -> freeze order rather than taking it as a shell
string (rainlanguage/rainix#301, implemented in rainlanguage/rainix#302).

This repo generates its pins with forge script ./script/BuildPointers.sol,
which is the reusable's default, so nothing replaces the removed line — the
with: block is soldeer-package alone.

Merge AFTER rainlanguage/rainix#302, not before

This is not a no-op today, and merging it first breaks the release path. On
rainlanguage/rainix@main right now snapshot-generate-cmd is
required: true. A caller that omits a required input fails at workflow_call
startup ("Input is required, but not provided while calling"), so between this
merging and #302 merging, a sol-v* tag here would fail immediately.

The reverse order is safe: #302 deletes the input, and until this lands the call
passes an input the reusable no longer declares, which also fails at startup —
so the two are a coordinated set either way. #302 first is the better order
because the dependency then runs from a finished, reviewed PR to a one-line
follow-up that merges in seconds, rather than from a merged one-liner to a large
PR that might still be sent back for changes.

Neither failure can corrupt a release: both are input-validation errors raised
before any step runs, so nothing is generated, published or committed. The only
real precaution is not to push a sol-v* tag between the two merges.

Also required before this repo can release again

Separate from this PR: main has no src/generated/candidate/ — this repo's
script/BuildPointers.sol still writes src/generated/<version>/ straight from
foundry.toml. cut-release refuses when candidate/ is missing, so releases
here also need #5 (the rolling-candidate migration) merged. #5 additionally
carries its own snapshot-generate-cmd: bash script/cut-release.sh line and its
script/cut-release.sh; both should go when it lands, whichever of the two PRs
is second.

QA

  • Discriminating tests: none exist for a workflow-call input list, and none can
    — GitHub validates with: against the reusable's declared inputs at run
    startup, so the only oracle is the reusable's own on: workflow_call: inputs:
    block. Checked directly: pointers-generate-cmd (optional, defaults to this
    repo's exact generate command) and no snapshot-generate-cmd on
    rainix owns the deploy-repo release freeze: rainix-static cut-release rainix#302's branch; soldeer-package and tag-prefix unchanged
    and still declared. The remaining with: key and every secrets: entry were
    matched one by one against that block.
  • Mutations applied: none — this is a one-line deletion in a workflow call with
    no executable logic to mutate. The failure modes were instead enumerated from
    GitHub's validation semantics and stated above: input present but undeclared
    (fails at startup), input absent but required (fails at startup), input absent
    and optional-or-undeclared (correct). The merge order follows from which of
    those the window lands in.
  • Oracle: rainlanguage/rainix#302's rainix-tag-release.yaml read directly for
    the post-merge input set, and rainlanguage/rainix@main's read for the
    pre-merge one — the two differ on exactly this input, which is what makes the
    ordering load-bearing. This repo's script/BuildPointers.sol read to confirm
    the removed command equals the reusable's default.
  • Category check: the ask is to stop passing an input rainix is deleting.
    Covered: the line is gone, nothing replaces it because the default already
    matches, the comment block above the call makes no claim about the removed
    input, and the ordering constraint the deletion creates is stated rather than
    left for a release to discover.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Streamlined tag-based package releases by removing unnecessary snapshot generation and formatting steps.

@thedavidmeister thedavidmeister self-assigned this Aug 13, 2026
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 41bcf8d7-f44a-465b-aa6b-e5b4c5e34f67

📥 Commits

Reviewing files that changed from the base of the PR and between 6173d3e and 7232cad.

📒 Files selected for processing (1)
  • .github/workflows/package-release.yaml
💤 Files with no reviewable changes (1)
  • .github/workflows/package-release.yaml

Walkthrough

The tag-based package release workflow no longer runs snapshot-generate-cmd or forge fmt.

Changes

Package Release Workflow

Layer / File(s) Summary
Remove release commands
.github/workflows/package-release.yaml
Tag releases no longer invoke BuildPointers.sol through snapshot-generate-cmd or run forge fmt.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Mergeability Score: 🔵 Low · up to 7232c

This change is mergeable with explicit owner awareness: it must land after the reusable workflow removes the required input, otherwise tagged releases will fail before any release steps run.

Possibly related issues

  • rainlanguage/rainix#301 — The change removes the snapshot-generate-cmd consumer from the tag-release workflow, which aligns with the issue’s objective to deprecate and replace that command.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes removal of snapshot-generate-cmd and the change in release-freeze ownership.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-08-13-drop-snapshot-generate-cmd

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@thedavidmeister

Copy link
Copy Markdown
Contributor Author

HELD — do not merge. Sequenced behind rainlanguage/rainix#302, which is itself held pending rainlanguage/rainix#304 (pointer generation belongs in build, so the input this PR drops may be replaced by nothing at all rather than by pointers-generate-cmd) and rainlanguage/rainix#303 (release-time verify asserts nothing about the snapshot it publishes).

This PR is NOT a no-op in the meantime: snapshot-generate-cmd is required: true on rainix@main today, so merging this before #302 makes every release run here fail at workflow_call startup with "Input is required, but not provided". Do not push a sol-v* tag between the two merges whenever they do happen.

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