Skip to content

package-release.yaml passes an input rainix#302 removes, with a value its new contract forbids #141

Description

@thedavidmeister

.github/workflows/package-release.yaml calls rainix-tag-release with an input that rainlanguage/rainix#302 removes, and with a value that #302's new contract forbids. Both halves have to change, and the change must land after #302.

What breaks

The caller today:

uses: rainlanguage/rainix/.github/workflows/rainix-tag-release.yaml@main
with:
  soldeer-package: rain-deploy
  snapshot-generate-cmd: forge script ./script/Build.sol --sig "cutRelease()" && forge fmt

#302 deletes snapshot-generate-cmd, replacing it with pointers-generate-cmd (required: false, default: ''). A caller passing an input the reusable no longer declares fails at workflow_call startup — "Input is required, but not provided" in the other direction — so the first sol-v* tag after #302 lands fails immediately. Nothing is generated, published or committed, since it is an input-validation error raised before any step runs.

The value is wrong too, not just the key

cutRelease() is a freeze: src/abstract/BuildScript.sol:53 calls LibRainDeploySnapshot.freeze(vm, recordRoot(), regenerateSnapshots, snapshotContractNames()) and then regenerates the libs. #302's input is deliberately generate-only — it runs strictly before the freeze, and rainix-static cut-release refuses when the generation command creates the numbered release directory itself, which is exactly what freeze does.

The replacement is the run() entrypoint at BuildScript.sol:46, which regenerates and freezes nothing:

with:
  soldeer-package: rain-deploy
  pointers-generate-cmd: forge script ./script/Build.sol

&& forge fmt is dropped deliberately: the format step moved inside cut-release, which owns the regenerate → format → freeze order rather than taking it as a shell string. That reordering is the whole point of rainlanguage/rainix#301.

Note this repo cannot use the input's default (forge script ./script/BuildPointers.sol) — its script is script/Build.sol. Raised separately on #302, since every repo adopting BuildScript will hit it.

Ordering

Merge after #302. Between the two merges either order of tagging fails at startup, so the only real precaution is to push no sol-v* tag until both have landed. rainlanguage/rain.factory.deploy#9 is the sibling change for that repo and documents the same constraint.

Follow-on, not part of this change

Once rainix owns the freeze, cutRelease() is a second implementation of it living here, with its own ordering and its own idea of what a frozen record is — the divergence #301 was raised about, relocated rather than removed. It should either be retired, or documented in place as the local-only path that CI never calls.

Precondition already met

Unlike rain.factory.deploy, this repo is already on the rolling-candidate model — src/generated/candidate/ exists — so cut-release's precondition holds today.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions