Repository navigation
Add release-slack-summaries action for Zaps 596 and 597 - #306
Draft
vpintorico wants to merge 3 commits into
Draft
vpintorico wants to merge 3 commits into
vpintorico wants to merge 3 commits into
Conversation
Port the daily release blocker and release-validation Slack summaries into a composite action. Jira stays read-only, GitHub tokens are supplied by the caller, and dry-run stays on unless a caller turns it off. Co-authored-by: Victor Pinto <vpintorico@users.noreply.github.com>
Co-authored-by: Victor Pinto <vpintorico@users.noreply.github.com>
This was referenced Nov 3, 2026
A test-channel run posts only to that channel. It does not rewrite the release pull request body, even when allow-pr-write is true, and it logs the refusal. Co-authored-by: Victor Pinto <vpintorico@users.noreply.github.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is the current state, and why does it need to change?
Release blocker and release sign-off summaries still run as Zapier Zaps 596 and 597. They post a daily Slack message to
release-{platform}-{x-y-z}and Zap 597 rewrites the release PR sign-off checklist. Jira is becoming the only issue data source (MCRM-155). This repo should hold the shared action, the same way it holdspost-merge-validationandpublish-slack-release-testing-status. The scheduled callers stay in metamask-extension and metamask-mobile (sibling draft PRs).What this PR does
Adds the composite action
.github/actions/release-slack-summaries.blocker-summaryports Zap 596.release-validationports Zap 597.craft-596.mjsandcraft-597.mjs. A thin adapter turns Jira issues into the bug shape those scripts already expect (name,url,closedas"true"/"false",assigneesLength,labels).topology.jsononMetaMask/MetaMask-planning(fetchMetaMaskTeams, same contents URL and base64 decode). There is no hardcoded project-to-team map.release/X.Y.Zpull requests intostable. The action refuses to interpolate any other version into JQL.POST /rest/api/3/search/jqlonly..github/actions/get-tokenand passesgithub-tokenandplanning-tokenin.Source snapshot:
metamask-zaps@dc70d6792cbaf9d99f39982868baf7f090dea0af.Inputs
modeblocker-summaryorrelease-validationplatformextensionormobilegithub-tokenplanning-tokencontents: readtoken for MetaMask-planningslack-bot-tokenSLACK_BOT_TOKEN. Used only when dry-run is falsejira-base-urlhttps://consensyssoftware.atlassian.netjira-email,jira-api-tokenjira-release-blocker-jqlAND cf[14565] = "V"jira-regression-jqlAND cf[16946] = "V"topology-jira-project-fieldjiraProjecttest-channeldry-runtrueallow-pr-writefalsetest-channelis setgithub-tools-repository,github-tools-refSafe defaults
dry-rundefaults to true. The run builds the Slack message and any checklist diff into the job summary. It does not call Slack and does not PATCH a pull request.allow-pr-writedefaults to false. A checklist rewrite runs only forrelease-validation, when dry-run is false, allow-pr-write is true, andtest-channelis empty.test-channel, when set, is the only Slack target. Realrelease-*channels are not used. The action also refuses the pull request body write, even ifallow-pr-writeis true, and logstest-channel is set. Refusing pull request body writes.... Zap 597 still rewrites those bodies during the parallel run, so a test-channel run must not write.jira-release-blocker-jqllogsOPENand skips the blocker section. The action does not invent a filter id or a Release Blocker field id.channel_not_found,not_in_channel,is_archived) is logged and that release is skipped.Release: Vthrows, so that release is not posted. The job fails after the other releases are processed.Deviations from the agreed interface
Documented here so the sibling callers can follow them.
jira-regression-jqlandtopology-jira-project-field, so the Found-in query and the topology field name stay overridable. Empty regression JQL uses the v10 proposal (issuetype = Bug, Found incf[16946], project list from proposal §4) and logs that this default is OPEN.github-tools-repositoryandgithub-tools-ref, matching the other composite actions in this repo.test-channellimits Slack to that channel and also refuses the pull request body write, even whenallow-pr-writeis true. The run logs the refusal. This matches the contract: test-channel runs never write PR bodies, because Zap 597 still rewrites them during the parallel run.- [ ] {KEY}when the checklist text changes, because the rewrite has no topology name to use. Writes still requireallow-pr-write, and they are skipped entirely whentest-channelis set.bug.platformerror was aReferenceError. The message now interpolatesplatform.chat.postMessageaccepts it. The message body is unchanged..slice(-5)after the ascending version sort fromrelease-versions-extraction.js(newest five). The extraction script has the sort; the cap lived in the Zapier loop. Release validation still keeps only versions ending in.0.OPEN
jira-release-blocker-jqlis empty until the "MetaMask Release Blockers" filter exists. The step logs OPEN and skips the blocker section.cf[NNNNN]). Regressions flagged Yes with a Release Number other than this version are not excluded until that id exists. Pass the exclusion injira-regression-jqlonce it is known.cf[16946]and the §4 project list are the v10 proposal. Confirm both, or passjira-regression-jql.jiraProject, array or string. The code accepts either. Teams without the field do not map, and the message uses the Zap's own "needs a team label" / registry sentences.docs.google.com/spreadsheetsURL in the PR body. Logged when missing.updatedReleasePrBodyis produced, which is when the checklist text changed. A settest-channelstill skips that write.allow-pr-writeis turned on.chat:write.customizefor the Zap bot name and icon,link_namesfor@release-owner-*, and who invites the existing bot to each new release channel are still untested. The action sendsusername,icon_emoji, andlink_names: true.release-notificationsenvironment. Replace it with a scoped read-only token before cutover.release-slack-summaries.ymlto the product repos. Until this merges, those drafts should pin this branch. Placeholder ref:cursor/release-slack-summaries-a324.Checks run locally
yarn eslinton the touched action files passed.node --testforgates.test.mjspassed, including the case whereallow-pr-writeis true andtest-channelis set: the write is refused.yarn testandyarn lintpassed on the previous commit. This change is covered by the gate test above.