Repository navigation
fix(release): unblock release train (derived version-file allowlist) + surface missing Slack config - #132
Draft
LukasParke wants to merge 1 commit into
Draft
fix(release): unblock release train (derived version-file allowlist) + surface missing Slack config#132LukasParke wants to merge 1 commit into
LukasParke wants to merge 1 commit into
Conversation
…ing Slack config The release train has failed every run since 2026-09-01 with "path outside allowlist: packages/agent/src/mcp/version.ts": #104 hard-coded packages/*/src/version.ts, then #102 moved the generated file. - verify-version-pr-scope.sh now derives the allowed generated version files from each package's `gen:version` script (the writeFileSync path in the generator), read from the trusted main checkout. Fails closed if a generator can't be parsed. - Add `--self-test` (offline) and run it in CI's lint job. - release-train: warn + job summary when the Slack alert secrets are empty, and an error + summary when a run fails without alerting. - Fix stale version.ts paths in turbo.json outputs and a publish.yaml note. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.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.
Warning
@openrouter/agent1.0.0 (a major bump from 0.11.0, driven by themajorchangeset.changeset/drop-preliminary-results.mdfrom #110), plus@openrouter/mcp1.1.2.Before merging, either confirm 1.0.0 is intended, or add the
release:holdlabel to #119.release:holdis the train's real pause mechanism: thefindstep readsHOLD_LABEL: release:holdand skips the scope/merge steps when it's present, andpr-gate.shre-checks it (BLOCK_LABEL) on every poll and just before merging, so a hold added mid-gate still stops it. Remove the label to resume.Why
The release train has failed all 15 runs since 2026-09-01 with:
#104 allowlisted the hard-coded pattern
packages/[^/]+/src/version.ts, then #102 moved the generated file topackages/agent/src/mcp/version.ts. Nobody was paged because the Slack alert secrets are empty, so each failure only logged(slack not configured; would have posted).What changed
.github/scripts/verify-version-pr-scope.sh: allowed generated version files are now derived, not hard-coded. For eachpackages/*/package.jsonwith"gen:version": "node <script>.mjs", the script reads the path that generator passes towriteFileSync(join(root, '<path>')). Today that resolves topackages/agent/src/mcp/version.ts. The derivation reads the trusted checkout (the train checks outmain, not the PR branch), and a PR that edits a generator falls outside the allowlist anyway. If a generator can't be parsed, its output stays disallowed (fail closed). The per-line content check on the version file and onpackage.jsonis unchanged. An out-of-allowlist*version.tserror now lists the derived paths to make debugging easier.--self-testmode (offline, nogh): checks that the derived paths exist, that a legitimate bump passes, and that a smuggled statement, apostinstallinjection, a source edit, a non-generatedversion.tsand a generator edit all fail. It runs in CI'slintjob, so a future generator move breaks the PR that causes it instead of the unattended train.release-train.yaml: a new early step,Check Slack alerting config, emits a::warning::annotation and a job-summary note wheneverCI_RELEASE_ALERT_SLACK_BOT_TOKEN/CI_RELEASE_ALERT_SLACK_CHANNEL_IDare empty. A final step,Flag unalerted failure(if: failure()with Slack unconfigured), adds an::error::and a summary saying nobody was paged. A missing Slack config doesn't fail runs by itself, so releases aren't blocked on it.turbo.jsongen:versionoutputs (src/version.ts→src/mcp/version.ts) and a comment inpublish.yaml.Verification
bash .github/scripts/verify-version-pr-scope.sh --self-test: all cases pass.PR=119, head41931d1):Diff scope OK. It failed before this change.Manual action for maintainers
release:holdbefore merging this.CI_RELEASE_ALERT_SLACK_BOT_TOKENandCI_RELEASE_ALERT_SLACK_CHANNEL_ID. Inside the steps these are exposed asSLACK_BOT_TOKEN/SLACK_CHANNEL_ID.bump-openrouter-sdk.yamluses the same secrets. Until they're set, the train only produces run annotations and summaries.🤖 Generated with Claude Code