Skip to content

fix(action): expose refresh-after-release mode; fix template reconcile step - #602

Merged
goosewobbler merged 2 commits into
mainfrom
fix/601-refresh-after-release-action
Jul 21, 2026
Merged

goosewobbler merged 2 commits into
mainfrom
fix/601-refresh-after-release-action

Conversation

@goosewobbler

@goosewobbler goosewobbler commented Jul 21, 2026 •

Copy link
Copy Markdown
Owner

Closes #601 — both facets of "the canonical post-release reconcile isn't cleanly adoptable."

Problem 1 — the Action couldn't invoke refresh-after-release

It's a registered CLI command but wasn't in the action's mode allowlist, so uses: goosewobbler/releasekit@… users couldn't call the canonical post-release step — the closest reachable substitute (mode: standing-pr-update + reconcile: true) is only its Half 1 (no feeder-preview refresh).

Fix (scripts/run-action.mjs, action.yml):

  • Add refresh-after-release to both validModes checks (parseInputs + runAction).
  • Add buildRefreshAfterReleaseArgs → ['refresh-after-release', --config, --project-dir] and wire it into argBuilders.
  • Give it core-only outputs (success/mode), like backfill.
  • List it in the action.yml mode description.

Problem 2 — the canonical template's reconcile step silently no-ops

templates/workflows/standing-pr.yml's immediate-release job ran releasekit standing-pr update without --reconcile. After the release, HEAD is a chore: release … commit, which the skip-pattern guard matches, so the update returns noop — the "zero-staleness reconciliation" its comment promises never happens.

Fix: switch that step to releasekit refresh-after-release, whose Half 1 forces the reconcile bypass (so it runs even on the release commit) and whose Half 2 refreshes stale feeder-PR previews. Comment updated to explain why (not standing-pr update).

Validation

  • test/integration/action-runner.spec.ts — 2 new cases (arg builder + runAction accepts the mode); full suite green (181).
  • pnpm typecheck 15/15; biome clean; actionlint clean on the template (its action.yml "errors" are false — it's a composite-action file, not a workflow).

⚠️ Unrelated pre-existing CI drift (not fixed here)

pnpm examples:smoke:check fails on clean main — the committed .github/workflows/examples-smoke.yml has actions/setup-node@v7 but the generator emits @v6. It's independent of this PR (I reverted the regen to keep scope clean). Worth a one-line pnpm examples:smoke:generate fix on its own — flagging so it's not mistaken for a regression here.

🤖 Generated with Claude Code

Greptile Summary

This PR exposes the canonical post-release reconciliation flow through the action and workflow template. The main changes are:

  • Adds refresh-after-release to the action mode allowlists and argument dispatch.
  • Declares the new argument builder in the TypeScript module surface.
  • Uses the new command in the standing-PR workflow template.
  • Adds integration coverage for argument construction and action execution.

Confidence Score: 5/5

This looks safe to merge.

  • The new runtime export and TypeScript declaration now match.
  • No blocking issues remain in the updated declaration path.

Important Files Changed

Filename Overview
action.yml Documents refresh-after-release as a supported action mode.
scripts/run-action.d.mts Adds the missing declaration for the new argument builder.
scripts/run-action.mjs Adds mode validation, argument construction, dispatch, and output handling for refresh-after-release.
templates/workflows/standing-pr.yml Runs the canonical refresh command after an immediate release.
test/integration/action-runner.spec.ts Tests the new argument builder and action mode.

Reviews (2): Last reviewed commit: "fix(action): declare buildRefreshAfterRe..." | Re-trigger Greptile

…e step

Two gaps made the canonical post-release reconcile hard to adopt correctly:

1. The GitHub Action couldn't invoke refresh-after-release — it wasn't in the
   mode allowlist, so action users could only reach `standing-pr-update` +
   reconcile (that's Half 1 only, no feeder-preview refresh). Add the mode to
   both validModes checks and the argBuilders map (building
   `[refresh-after-release, --config, --project-dir]`), give it core-only
   outputs like backfill, and list it in the action.yml `mode` docs.

2. The shipped standing-pr.yml template's reconcile step ran `standing-pr update`
   without --reconcile after an immediate release — but HEAD is then a
   `chore: release …` commit, which the skip-pattern guard matches, so it
   silently no-ops. Switch it to `refresh-after-release`, which forces the
   reconcile bypass and also refreshes stale feeder-PR previews.

Closes #601.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6CmYRXTZQYs4MNo6AETxT
Comment thread test/integration/action-runner.spec.ts
@github-actions

github-actions Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

Standing release PR: #595 · v0.41.2 queued (4 packages) · open 4h 58m · ✅ ready to merge

Release Preview — v0.41.1 → v0.41.2

Note: Labels on this PR are advisory in standing-pr mode. Bumps come from conventional commits in the standing PR; override by editing labels on the standing PR itself. Add release:immediate to bypass the standing PR and release this PR directly.

These changes will be added to the release PR (#595) when merged:

Changelog

monorepo 0.41.1 → 0.41.2

Fixed

  • declare buildRefreshAfterReleaseArgs in run-action.d.mts (action)
  • expose refresh-after-release mode; fix template reconcile step (action) (#601)

All packages → 0.41.2 (sync versioning)

  • @releasekit/version
  • @releasekit/notes
  • @releasekit/publish
  • @releasekit/release

After merge — predicted release

No version escalation — this PR's changes will be included in the queued release without affecting the projected versions.

Package Standing PR This PR After merge
monorepo 0.41.2 0.41.2 0.41.2

Updated automatically by ReleaseKit

Keep the declaration surface in sync with the runtime export so TS consumers
resolving run-action.mjs via the .d.mts don't hit TS2305 (review).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K6CmYRXTZQYs4MNo6AETxT
@goosewobbler
goosewobbler merged commit 41e2349 into main Jul 21, 2026
24 checks passed
@goosewobbler
goosewobbler deleted the fix/601-refresh-after-release-action branch July 21, 2026 01:42
@github-actions github-actions Bot mentioned this pull request Jul 21, 2026
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.

refresh-after-release isn't invocable via the action, and the standing-pr template's reconcile step silently no-ops

1 participant