Cut a beta for code-only changes, and warn when nothing cuts - #5
Merged
Conversation
A push that changed only source cut no beta, skipped every job, and the run finished green — the fix sat unshipped on main with nothing saying so. plan-beta gated re-cutting solely on whether Config/products/<id>.json differed from the last beta tag, so whether the code changed had no bearing on whether a build shipped. On framebison that forced a changelog edit three times, one of them a wasted cycle: a merged PR that shipped nothing, found only by reading the run. Add an optional per-product source-paths: git pathspecs the product builds from. A change to any of them now cuts a beta on its own, which keeps multi-product isolation (a push touching product A still does not re-cut B and C) while removing the false negative. Promote the skip notice to a warning, and when source-paths is absent name the remedy in it. The run stays green either way, so the silence was the real harm. Backward compatible: products without source-paths behave exactly as before, plus the warning. tests/run.sh covers both paths against real git repos with real diffs rather than the CHANGED_PRODUCTS stub, so it exercises the code that actually runs in CI. Closes #4
This was referenced Aug 6, 2026
sarensw
added a commit
that referenced
this pull request
Aug 6, 2026
selftest was the last ubuntu-latest job in the repo, and also the only workflow that stopped dispatching: no run for PRs #3 or #5, none for either merge to main, zero check runs created, and reopening a PR to re-fire pull_request changed nothing. Every self-hosted job kept running throughout. GitHub-hosted runners are a separate capacity and billing path from our own, so a block there takes out exactly this job and nothing else. The correlation is one-to-one: the only hosted job is the only broken one. Nothing here needs Linux — actionlint ships a darwin build and the tests are offline python3 plus git. Install actionlint into RUNNER_TEMP rather than the workspace. A self-hosted runner reuses its checkout, so ./actionlint would otherwise sit untracked in the working tree between runs. Also drop two comments left stale by v0.4.7, which moved every job to self-hosted but kept describing the prepare jobs as running on ubuntu. Comment-only, so callers are unaffected and no new tag is needed; selftest is not a reusable workflow, so no pin changes either. Closes #6
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.
A push that changes only source cuts no beta, skips every job, and finishes green — the fix sits unshipped on
mainwith nothing saying so.Cause
plan-betagated re-cutting solely on whetherConfig/products/<id>.jsondiffered from the last beta tag. Nothing about the commit range was consulted — whether the code changed had no bearing on whether a build shipped.Defensible for multi-product repos (a push touching A shouldn't re-cut B and C, and the changelog lives in the product file). It breaks down for single-product repos and for fixes warranting no release note. On
framebisonit forced a changelog edit three times, one a wasted cycle: a merged PR that shipped nothing, found only by reading the run.Changes
source-paths— optional per-product git pathspecs the product builds from:A change to any of them cuts a beta on its own. Multi-product isolation is preserved. Internal only — stripped before the record reaches the workflow matrix.
Skip becomes a warning.
::notice::→::warning::, and withoutsource-pathsit names the remedy. The run stays green either way, so the silence was the real harm.Backward compatible: products without
source-pathsbehave exactly as before, plus a warning.Tests
Both paths run against real git repos with real diffs, not the
CHANGED_PRODUCTSstub — so they exercise the code that actually runs in CI:Full suite green,
actionlintclean.Closes #4