Skip to content

fix: release flow — workflow guards check, Slack bullets and cut link, skip note, Version/Ref - #20

Merged
tyhonchik merged 4 commits into
mainfrom
feat/workflow-guards
Oct 26, 2026
Merged

tyhonchik merged 4 commits into
mainfrom
feat/workflow-guards

Conversation

@tyhonchik

@tyhonchik tyhonchik commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Four fixes from today's app 1.41.0 and app-backend 0.41.0 releases, one commit each.

  1. steps/workflow-guards — new composite action, fails on a job GitHub skips by surprise. Release 1.41.0 of aragon/app deployed without its production smoke tests and without the Completed flip: `validate` (dispatch only) was skipped, `deploy` ran on its `!cancelled()` guard, and `e2e` / `complete`, with no status function in their `if`, were skipped although `deploy` succeeded. A job with a skipped job anywhere in its `needs` chain is skipped unless its own `if` carries `always()`, `!cancelled()` or `failure()`. The action parses the jobs of every workflow in `dirs` (strict-subset reader, no dependencies, same policy as `lib/flatYaml.js`) and reports a job without a status function that depends on a job which carries one and has a skippable ancestor itself. Plain chains pass. Against aragon/app `main` it reports exactly the three jobs ci: guard the post-deploy jobs of the production workflows and check job guards on every PR app#1519 fixes; against app-backend `development` the two jobs ci: staging e2e on the opened release PR, job-guards check, repository in the skip note app-backend#1659 fixes. `ci.yml` runs it over this repo and `examples/`, the README states the rule. Both consumer PRs wire the step into their checks and stay red until this merges.
  2. slack-notify — `*` list items (conventional-changelog style) reached Slack as literal asterisks; now they and nested items become `•` like `-` ones. New optional input `cut-link`: a message cut at Slack's 4,000 characters ends with `… the rest is in ` instead of `… (truncated)`. release-start / release-pr-refresh / release-pr-cancel pass the PR, release-complete the GitHub release (the raw tag works in the URL, also with `@` and `/`).
  3. notify — the start and gate messages showed `Version` and `Ref` with the same tag on a production deploy; the Ref line is dropped when it repeats the version.
  4. release-start — the skip note said `Release (release/) — skipped this week`; it now names the repository: `aragon/app-backend release (`release/`) — skipped this week`.

`contracts/interfaces.json` registers the new action and the new input.

🤖 Generated with Claude Code

A job with a skipped job anywhere in its needs chain is skipped unless its own if carries a
status function. After a job that runs on a !cancelled() guard past a skipped ancestor, every
dependent without a guard of its own is skipped although its parent succeeded. The step parses
the workflows of a directory and reports those jobs; CI runs it over this repo and the examples.
@tyhonchik tyhonchik changed the title feat(workflow-guards): fail on jobs GitHub skips past a guarded ancestor fix: release flow — workflow guards check, Slack bullets and cut link, skip note, Version/Ref Oct 26, 2026
A tag deploy (production) passes the tag as both version and ref; the start and gate messages
showed it twice.
"Release (release/) — skipped this week" said which branch prefix, not which repository; in a
channel with several release bots only the bot name told.
…to its full text

Changelog lists written with `*` reached Slack as literal asterisks: only `-` items became bullets.
A head message cut at 4,000 characters ended in `… (truncated)`; the new `cut-link` input names
where the full text is, and the release flows pass the PR (started, cancelled) or the GitHub
release (completed).
@tyhonchik
tyhonchik merged commit 2335d01 into main Oct 26, 2026
4 checks passed
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.

2 participants